Итак, после ночи обдумывания и перечитывания документов, я думаю, что нашел идеальное решение.Матрица!
Учитывая следующие данные:
3, -1, -1, -1, -1
-1, 0, 1, 2, -1
-1, -1, -1, 3, -1
-1, -1, 5, 4, -1
-1, -1, -1, -1, -1
Я могу использовать эту информацию для доступа к информации в справочных таблицах, чтобы определить, какая информация мне нужна.Первая запись (0,0) определяет всю карту, где другие значения определяют, что нужно на этом конкретном экране.
MAP ARRAY PALETTE MUSIC TILESET STARTINGSCR
0 0 0 1 4
1 4 3 2 2
2 etc.
3
Поэтому при загрузке карты я смотрю на элемент (0,0).Он скажет, что мне нужно загрузить X плиток в PPU, использовать Y цветовую палитру, Z плиток и музыку.Также будет сказано, что экран 0 является начальным экраном и что уровень начинается там - расположите персонажа соответственно.
SCREEN PALETTE TILESET MUSIC TILEDATA SCROLLL SCROLLR SCROLLU SCROLLD
0 0 1 2 4 true true true true
1 etc
2 2 1 2 3 false false false true
Теперь допустим, что мне нужно переходить с экрана.Я могу посмотреть на текущий экран против целевого экрана.Если новый экран нуждается в информации, отсутствующей в PPU, я могу инициировать переход, который будет загружать данные во время него.Я также могу видеть, могу ли я прокрутить в этом направлении;Например, если целевой экран равен -1, я не могу прокрутить это направление.Я также могу хранить флаг где-нибудь, чтобы определить, что при прокрутке на этот экран я не могу прокрутить назад.Например, я могу перейти прямо на экран № 2, но не могу прокрутить влево на экран 1.