Читал. У Тернера каждая комната прямоугольного размера задается двумя байтами, где размещены типоразмер комнаты и относительные координаты.
У меня игровое пространство проектируется произвольной формы сначала на бумаге в виде контуров дорог и стен. Размеры дорог и стен кратны квадратам 2х2 клеток экрана. Дальше все заменяется последовательностью чисел 1, N1, 0, N2, 1, N3, 0, N3. То есть с указанием количества одинаковых элементов. Показанный на рисунке экран занимает 60-70 байтов и быстро распаковавается.
Как и у Тернера, у меня есть подпрограмма, которая по контурам 2D карты расставляет кирпичи для получения 3D изображения. Работает достаточно быстро. Распаковывается сразу вся карта уровня. При перемещении на целый или часть экрана будет печататься изображение из 3D карты, на которой расположены номера тайлов.
Все ресурсы распределены по страницам: LEVELS, PAGE_MAP_2D, PAGE_MAP_3D, PAGE_SPR (спрайты танков, тайлы, шрифт ). При работе впечатывается нужная. Во время прерывания PAGE_SPRITES, при выходе из подпрограммы обработки прерывания восстанавливается старая страница.





Ответить с цитированием