Здорово! Это Denthor с 5-ой частью из Серии Обучающих Программ по VGA команды ASPHYXIA: Сага о скроллинге (прокрутке экрана). У меня часто просили информацию о скроллинге, поэтому я решил рассказать об этом на этой неделе. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Что такое скроллинг (прокрутка)? Если Вы видели когда-нибудь демки, возможно Вы видели некоторые формы скроллинга. Наша демка SILKYDEMO - прекрасный пример скроллинга. Из себя он представляет длинную строку текста, движущуюся вдоль Вашего экрана, обычно справа налево. Напр: H : Шаг 1 He : Шаг 2 Hel : Шаг 3 Hell : Шаг 4 Hello : Шаг 5 Hello : Шаг 6 Смотрите пример в присоединенной программе. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Что мы прокручиваем? Обычно буквы. Многие группы используют скроллинг для слов приветсивия или для показа информации о себе. используя технику скроллинга Вы также можете прокручивать и весь экран. Скроллиг Вашего текста намного интереснее, чем просто вывод его на экран. К сожалению этот эффект используется так часто, что им уже никого не удивишь, поэтому обычно он сопровождается классной картинкой или другими действиями, происходящими в тот же момент времени. (В нашей демке SILKYDEMO доска с клеточками и цветные прямоугольники движутся в один момент времени) =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Как мы прокручиваем из стороны в сторону? Теория прокрутки довольно проста. Представим, что мы прокручиваем шрифт 16х16 вдоль экрана в его верхней части (допустим, что его ширина 320px). Как Вы знаете, VGA экран начинается с нулевого пикселя в левом верхнем углу экрана. Первая строчка заканчивается в верхнем правом углу 319-тым пикселем, а следущая начинается 320-тым (думаю понятно, что он будет на один пиксель ниже нулевого. Если нет - см. Часть.1). Это значит, что прокручиваемая область будет 16*320, т.е. на экране это будут пиксели с 0 по 5119. В ASCII это выллядит примерно так: (0) . . (319) (320) . . (639) " " " (4800) . . (5119) Довольно-таки просто. Ну а теперь нарисуем первый столбик первого символа с правого края экрана так: For loop1:=1 to 16 do Putpixel (319,loop1-1,font['A',1,loop1],vga); Ваш экран будет выглядеть так: (0) . X. (319) (320) . X. (639) " " " (4800) . X. (5119) Далее мы каждую строку подвигаем на один пиксель например так: For loop1:=0 to 15 do Move (mem[VGA:loop1*320+1],mem[VGA:loop1*320],320); Этот код прокручивает экран справа налево, и написан наиболее понятно. Чтобы прокрутить экран слева направо, перенесите "+1" на другую сторону команды. Чтобы увеличить прокручиваемую площадь, измените число 15 в цикле на такое, сколько бы Вы хотели прокрутить строк минус один. (Напр. Вы хотите подвинуть 100 строк. Тогда число будет 100-1=99). Итак, после первого перемещения экран будет выглядеть так: (0) . X . (319) (320) . X . (639) " " " (4800) . X . (5119) ^ это пустой стобец на Вашем экране А дальше Вы рисуете следущий столбик символа, потом опять подвигаете, рисуете следущий столбик, подвигаете, и т.д. Та-дам! У Вас эффект скроллинга. Просто, не правда ли? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Как мы прокручиваем вверх или вниз? Прокручивать вверх или вниз тоже просто. Вообщем, идея такая: нарисовать верхнюю (или нижнюю) строку, затем подвинуть весь экран. Для скроллнга вниз: Move (mem[vga:0],mem[vga:320],63680); { 64000 - 320 = 63680 } Для скроллнга вверх: Move (mem[vga:320],mem[vga:0],63680); Далее рисуем следущюю строку и снова повторяем. Из-за того, что кодинг эффекта скроллинга прост, он используется во многих демках. Поэтому будет лучше, если в это время на экране будет происходить еще что-нибудь. Тогда ваша демка не будет казаться скучной даже, как я говорил, если это будет лишь одна красивая картинка. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= B заключение [ "I'm from the Computer Inspection Agency, sir, I'm here to check your computer. Here is my identification." "Certainly. Have a look, I'm clean. I don't have any pirated software." The C-man pushes past him and sits in front of the computer. He notes the fact that the computer is currently off with a look of disdain. He makes a note on his clipboard. He boots up. "What is this?" he asks, pointing at the screen. "It's MasterMenu" stutters the man. "I wrote it myself!" "Do you know what the penalty is for using junk like this on a private machine?" The C-man smiles. "This is a two-month sentance in itself!" "I'm sorry sir! It won't happen again!" "I know. I'll make sure of that." He smiles again. The C-man runs through the hard drive, checking for illeagal software, bad programs and anti-government propaganda. He notes with satisfaction that he has enough to put this weenie away for ten years, not that it mattered. He usually could just make something up. He comes to the last entry on the aphebetised menu tree. His hands jerk away from the keyboard. Then, tentatively, he types in the three letters of doom. He looks at the man, who is backing away with wide eyes and his hands outstretched in front of him, as if to ward off a blow. The C-man smiles, his lips a thin, hard line. "Windows!" ] - Grant Smith 1:55pm 16/9/93 пока. - Denthor