"Stop the Express" на World of Spectrum
Как игра устроена внутри.
Игровой экран имеет размер 32×24 тайла, тайлы 8x8 пикселей плюс атрибут. Т.е. экран 256×192
= экран Спектрума.
В памяти мы храним экран в виде индексов тайлов два раза, я их назвал «экран план» и
«экран факт».
Если мы хотим что-то вывести на экран – меняем всегда только экран план. Допустим хотим
вывести строку –
просто копируем символы этой строки на экран план.
Регулярно выполняется процедура актуализации экрана. Она бежит по экрану план, для каждого тайла
сравнивает
есть ли различие с тайлом экран факт.
Только если различие есть, то делаем изменение на экране, и обновляем номер тайла в экране факт.
Сами тайлы это 9 байт – 8 байт на пиксели плюс один байт на атрубут, всего 256 тайлов.
Если обратите внимание, большинство строк на экране в горизонтальном направлении почти одинаковы.
Поэтому даже когда выполняется вроде бы большое скроллирование (поезд уезжает), реально изменений на
экране не так уж и много.