Под впечатлением от безумного и весёлого хака управления Черного Плаща захотелось устроить исследование формата уровней этой игры.
Проверка брейкпоинтами по тому же методу, что и для Chip and Dale - куски кода идентичны, только располагаются немного по другим адресам.
Но адреса проецирования описаний блоков, макро-блоков и байт цвета из палитры остаются неизменными, так что получить их можно из дампов памяти игры по тем же смещениям:
Так можно получить описания экранов, макротайлов и тайлов.
Указатель на активный объект также хранится в байте 70, так что можно от него вычислить расположение описания врагов.
Адреса описаний объектов:
перед описаниями объектов по 4 массива с парами координат X и Y объектов.
Уровни описываются двумя двумерными массивами - в одном хранятся номера экранов, в другом совмещенные значение скроллов и дверей (5 бит на дверь, 3 на значение скролла), которые находятся на выбранном экране.
Массивы экранов начинается с 1DFAO, массивы скроллов - примерно с 1E1AD, длины массивов хранятся в 1DEE7.
описание уровней.
В целом устройство намного проще и логичнее, чем в Chip and Dale. На один уровень - один блок видеопамяти, тайлов и макротайлов и в среднем по 2 палитры, в отличие от C&D, в которой эти наборы определялись сочетанием двери и номера уровня, причем было много переключений с целью сжать 2 уровня в один набор.
Типов блоков тоже оставлено только 5 (пустой, платформа, крюк, шипы, дверь), вместо 16 чипидейловых.
Сами уровни геометрически сделаны проще, геймдизайн направлен на борьбу с врагами в большей степени, чем на решение загадок и обход препятствий, количество уровней изначально проектировалось так, чтобы уместиться в доступную на картридже память.
Из-за такой простоты достаточно легко добавить поддержку игры в редактор уровней Chip and Dale, рассчитанный на более замудренных бурундуков.