Технология вывода полноэкранного
изображения без атрибутов за прерывание
(С) Mythos
Несколько лет назад перед кодерами Спе-
ктрума встала проблема вывода полноэкран-
ного изображения за int. О ее решении я
ничего не слышал, и сейчас попробую прове-
сти краткий анализ нескольких методов и
рассказать о сабже :)
Начну я с известных всем методов LDIR,
LDI.
Команда LDIR кидает байт за 21 такт
Кинуть весь экран успеем только за
21*6911+16=145147, да немножко не успеваем
Командами LDI кидаем байт за 16 тактов
Экран кинуть сможем за 16*6912=110592 т
без атрибутов 16*6144=98304 т, тормозим и
тут, да и память жалко.
Далее есть способ, так называемый "вы-
вода через стек". Способ быстрый, но не
самый лучший. Максимальный эффект при ис-
пользовании кроме основных регистров и
альтернативные.
Стеком кинем байт за 13.5 тактов
Экран кидаем за 13.5*6912=93312 т
без атрибутов 13.5*6144=82944 т
Неуспеваем и здесь.
Если копнуть еще глубже то можно найти
еще несколько оригинальных способов, о ко-
торых я тольком не знаю, к сожалению.
А сейчас самый, на мой взгляд, эффекти-
вный способ.
Сразу скажу, что байт кидаем за
10.5 тактов
Экран соответственно за
10.5*6912=72576 т
По моему даже Пентагон, не успеет
без атрибутов 10.5*6144=64512 т
А здесь успевает наверное любой компьютер.
Суть метода в том, что ваша картинка
будет распределена в программе.
Пишем код:
LD SP,#5В00
LD HL,#223A;ВАША ГРАФИКА, АТРИБУТЫ
PUSH HL
LD HL,#3AB3;ЕЩЕ ГРАФИКА
PUSH HL
...
Ну и таких строчек надо не мало. В ито-
ге ваш экран будет занимать, ровно в два
раза больше памяти.
В чем еще прелесть данного метода: если
вы заметили, вы можете выводить картинку
храня ее одновремменно в жатом состоянии.
Объясняю: если в картинке идут подряд бай-
ты, скажем, #аЬOЗ,#аЬOЗ... можно будет на-
писать в программе:
LD HL,#AB03
PUSH HL
PUSH HL
...
При этом скорость вывода изображения
повышается!
Если хочется выводить спрайты в такой
экран, то если подумать можно запросто на-
писать процедуру вывода спрайта или может
даже точки или линии. Но в этом случае не
должно быть компресии.
Ну вот вроде и все о чем я хотел пове-
дать. Признаться, я даже и не думал писать
об етом, думая что уже все известно, но
когда я начинал рассказывать, на меня смо-
трели с большими глазами и говорили что
это круто.
------------------------------------------
Other articles: