Отличный прогресс!
Теперь берем отладчик в эмуляторе и пытаемся найти, где же в оперативной памяти лежит тот кусок памяти, который был поправлен в SNA. Проще всего поиском, ищем какую-нибудь последовательность байт. В вашем случае можно прямо по 05 05 00 00 0С искать. В общем, у меня оказалось, что этот ваш байт соответствует адресу в памяти #B711.
Сейчас нужно поставить точку останова на чтение или запись по этому адресу в памяти. Это почему-то не очень частая функция в отладчиках, но в Unreal Speccy есть. Идем в отладчик (ESC), жмем Alt+C, вводим в правое окно наш адрес, жмем обе галки, добавляем.
Выходим из отладчика (ESC) и начинаем играть. В один из моментов наша точка останова сработает и программа тормознется в том коде, который попробует прочитать (чаще) или записать (реже) нашу ячейку. Тут нужно базовое знание ассемблера для того, чтобы примерно понять, что вокруг происходит. Если ничего интересного, то жмем ESC и ждем следующего срабатывания. Но может быть и что-то нужное, например, чтение ячейки и сравнение её с какой-то другой:
В этом случае смотрим, что располагается по сравниваемому адресу (B701). И нам сразу повезло! Там 0x1E, то есть 30. Искомое количество ходов!
Меняем его на FF и вуаля!
Дальше надо попробовать найти окружающую этот байт последовательность в SNA-файле (ну или просто, зная, что B711 минус B701 - это 0x10, то есть 16, идем по смещению от уже известного нам своим расположением в SNA счетчика ходов) и поменять. Готово, теперь у нас есть рабочий образ игры, в которой навсегда забито 255 ходов.








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