Murzilka #09 |
|
source - красивый viewer у меня, правда?
красивый 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, иначе просто Фи- зически не Успеть воФрейм). также мы мо- жем вставлять в текст спрайты. вот так вот >>> :) примерно.. надо только помнить, что они не должны быть слишком больши- ми. и вообще, при оФормлении текстов следУет Учитывать, что не надо слишком насыщать текст в од- ном месте.вот.)
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября