"Семья Аддамсов"
- одна из самых запутанных игр на NES.
Практически все зоны доступны сразу, но чтобы пройти их, надо знать правильный порядок. Но даже после полного прохождения у каждого из игроков остаётся несколько вопросов. Никому неизвестно, куда ведёт закрытая дверь в холле и зачем нужны третьи ноты в библиотеке. Но вооружившись дизассемблером и монитором памяти, можно это узнать.
Сначала с помощью поиска читов необходимо отсеять ячейки памяти, которые изменяются вместе с игровой зоной. Чтобы это сделать в эмуляторе fceuxd sp надо много раз, меняя комнату, в меню Tools->Cheats просеивать ячейки кнопками Equal и Not Equal. Когда останется примерно тридцать ячеек можно с помощью монитора памяти (Tools->Hex editor), следить за ними в реальном времени. При этом опытному ромхакеру в глаза сразу должна броситься ячейка $613, которая со всех сторон окружена нулями, а сама меняется с номером комнаты или при сборе предметов. В игре есть только один параметр, который меняется при таких условиях - подсказка с названием комнаты внизу экрана.
Сюда ставится точка остановки на запись и при следующей смене комнаты находится код, который пишет в эту ячейку.
lda x, $71 ;переносим в x значение из ячейки $71 |
Проверка подтверждает, что номер комнаты сохраняется в ячейке $71. Теперь можно создать мобильный телепорт - переставить точку остановки на запись на ячейку $71, и после срабатывания, вручную подменять её на любое число, чтобы получить таблицу игровых комнат.
# ROOM ПОЯСНЕНИЕ |
Аналогичным отсевом можно найти в памяти место хранения полученных предметов. Если в ячейке по адресу записан 0 - предмет отсутствует, если 1 - предмет уже найден. Другие числа означают разновидность предмета. Таблица предметов (собрана для проверки существования тайного ключа от двери в холле):
ADDRESS ITEM ПОЯСНЕНИЕ |
Никаких секретов =\
Еще для надежности можно провести исследование кода вывода надписи Locked Door
, которая появляется, если нету при попытке зайти в закрытую дверь. Для этого точка остановки снова перемещается на ячейку $613, игра стопится на попытке зайти в любую закрытую дверь, память дампится в файл и загружается в дизассемблер. Анализ процедуры, на которой остановилось выполнение, показывает 5 переходов на вывод сообщения о закрытой двери. По таблице номеров комнат и предметов легко расшифровываются условия.
ADDRESS Условие |
Проверка условия на двери в холле
E74C: LDA byte\_71 ;загрузка номера текущей комнаты |
С нотами такая же штука. В момент, когда Гомез передаёт дворецкому манускрипт, единственное, что происходит в коде - выставляется значение номера мелодии в ячейку $623. Если записать в эту ячейку другие числа, можно послушать все 5 музыкальных тем игры или заставить дворецкого играть нойз из кода игры. Ячейка с номером мелодии постоянно считывается только в комнатах Library(открывается секретный проход в комнату цепей нотами 1) и Ballroom (призраки начинают танцевать и открывается вход в лес, если были выбраны ноты 3). Ноты номер 2 не используются нигде =\
Секретов нет, но теперь это хотя бы проверено.
update Ненужная нота в библиотеке - это отсылка к старому черному белому сериалу