Изучаю дальше твой код.
1) Как данные депакируются? На очередном шаге просто добавляются данные в конец, на который указывает указатель? Но если так, то как быстро заполнится память устаревшими данными? Не хватит никакой. А если, допустим, переносить кусок на каком нибудь шаге (ну допустим через 5 экранов), то на это нужно будет время.
Хотя нет. В твоем случае на экран 10*16=160 байт. Ландшафт имеет длину 40 экранов. Получается к концу ландшафта будет 6400 байт распаковано. В принципе, вопрос снимается. А если так мало получилось, так вообще можно не паковать.
обьем буфера 256 байт
когда указатель дойдет до конца буфера
он начнет его сначала
карта одного экрана занимает 17*10=170 байт
Сообщение от ace210
2) Прикинул скорость. Вот такой ландшафт рисуется 45Ктактов.
У меня на аналогичный тратится 14Ктактов. Причем я использую маску при выводе для левых байтов тайла (на это тратится очень много времени из расчета на 1 байт). Правда я пока не выводил атрибуты. Ну, добавится 2Ктакта у меня не больше.
Это и понятно, почему так у тебя. Много времени тратится на ненужный пропуск 0-х тайлов, а также на переход на след строку адреса. Еще размер тайлов играет большую роль в таком расхождениии. У тебя они больше в 2 раза. Соответственно, выводить надо в 2 раза больше байтов.
Я же предлагаю хранить адреса уже расчитанные в данных ландшафта и просто потом на шаге пробежаться по младшим байтам и inc их сделать.
надо посмотреть
ты уже решил проблему со стиранием\рисованием спрайтов под лучем?