красивый viewer У меня, правда?
основан он на т.н. методе "переливания
по стекУ". разУмеется.
изображения текстов представляют собой
последовательности команд:
LD HL,XX
PUSH HL
тУт всё ясно.
зачем же я пишУ этот текст? - спросишь
ты.
а вот зачем:
мне кажется этот самый метод "перелива-
ния по стекУ" совершенно несправедливо
считается неприемлимым, громоздким и
т.д.
однако, такое мнение является не более,
чем стереотипом.
демоном.)
замкнУтой самодостаточноя цепочкой мыс-
лей в вашем разУме.
которУю необХодимо разомкнУть.
ПЕРЕЛИВАНИЕ ПО СТЕКУ ВОВСЕ НЕ ЯВЛЯЕТСЯ
МЕТОДОМ НЕПРИЕМЛИМЫМ, ГРОМОЗДКИМ И Т.Д.!
вот. разомкнУл.)
нет, в самом-то деле..
нУ, во-первыХ, зачем это всё - чисто для
одноФреймовости скроллера. и для Упроще-
ния кода оболочки. возможно, вам это и
ни к чемУ. возможно даже, что У вас есть
потребность листать тексты по 60 кб. яс-
но, что ни о какиХ спрайтаХ и стекаХ вы
и слышать не заХотите. и правильно сде-
лаете.
если же вы Хотите одноФреймовость, то У
вас есть 2 пУти: Хранить текст в виде ld
и push или же Хранить его спрайтом.
на самом деле расХод памяти в этиХ мето-
даХ полУчается примерно одинаковым. по-
томУ что текст состоит из бУкв. причем
пребладают там бУквы маленькие, имеющие
высотУ 5 пикселей. таким образом пример-
но 3/8 от всего об'ема памяти, зани-
маемого изображением текста, - это нУли.
два нУля можно выводить одной командой -
push bc, например.
кроме того, цвета в тексте меняются тоже
не очень часто. т.е., грУбо говоря, в
каждой строке бУдет ещё 30 одинаковыХ
байт атрибУтов. которые можно вывести
так:
LD HL,COLOR
.15 PUSH HL
дальше. все последовательности из команд
push hl или push bc длинной, например,
15 команд можно заменить подпрограммами.
т.е. ставить вместо ниХ CALL PUSH15. и
Уже на 30 одинаковыХ байт в изображении
мы бУдем тратить всего 3 байта в проге
вывода.
в среднем, наша программа, бУдем зани-
мать памяти всего лишь на 20-50 процен-
тов больше, чем изображение текста, Хра-
нимое спрайтом. однако, чтобы вывести
спрайт во Фрейм без развернУтыХ циклов
тоже никак. и эти развернУтые циклы Фак-
тически ликвидирУют преимУщество в те
самые 20-50 процентов.
нУ, примерно )
при этом, переливая через стек, мы не
ограничены размером (высотой) шриФта
(когда текст Хранится и выводится как
спрайт, обычно выводят только 6 линий из
8, иначе просто Фи-
зически не Успеть во
Фрейм). также мы мо-
жем вставлять в
текст спрайты.
вот так вот >>>
:)
примерно..
надо только помнить,
что они не должны
быть слишком больши-
ми. и вообще, при
оФормлении текстов
следУет Учитывать,
что не надо слишком
насыщать текст в од-
ном месте.
вот.)
Other articles: