может помните 2-ой старенький выпуск
психоза? там в движке была такая фича, как
текстовая аннимация. Выглядело неплохо. хотите
знать как все это работало?
ну для начала я переводил весь текст статьи
в один большой спрайт. т.к. высота печати была b
пикселей - выходило b*э2=192 байта на строку. В
страничку влазило помнится 5b таких вот строчек.
Весь прикол состоял в том, что когда строки
выводились на экран - они выводились через одну
простенькую табличку. попробую объяснить.
например номер верхней строки в тексте 11. по
идее надо вверху напечатать 11 спрайт, затем
ниже 12ый и так далее. ну а если создать "карту"
текстовых строк? т.е. вверхняя строка 11 - беру
из такой таблички со смещением 11*э один байт
номера страницы, где лежит спрайт строки, и два
байта - адрес в этой странице. Вот вам и
возможность делать текстовые анимы, изменяя эту
самую табличку.
также я делал и с атрибутами. В тексте, если
первый байт в строке был запятая, то после него
стоял код атрибута этой строки. Если же не
стояло - значит у строки такой-же цвет, как и у
предидущей. Составлялась таблица атрибутов для
строк. т.е. 1 байт*количество строк. ну а если
код после запятой был ноль - я просто сохранял
смещение в спрайте атрибутов и каждый инт
засылал туда случайное число. так и делались
мигающие строки.
только не стоит забывать, что при таком
раскладе пропечатывать и атрибуты и текст
приходится каждый int.
также при спрайтовом раскладе можно на интах
или иначе изменять готовые спайты. Я к примеру
делал бегущие строчки в тексте и индикаторы на
музыку - правда вставлять не стал. по причине
лени. из-за нее же и анима юзалась только
единственный раз ;)
Еще при таком раскладе можно делать
многофонтовость. Отразится все только на
скорости декранча в самом начале.
печатается все это, тем кто не знает ;)
самым быстрым и простым способом:
рор hl
ld (adr),hl
рор hl
ld (adr*2),hl
...
Other articles: