[NES Ромхакинг] Урок № 5: Использование Game Genie кодов в ромхакинге и создание своих собственных GG кодовВ данном мини-уроке мы с вами рассмотрим, как можно использовать Game Genie (коды обмана) для взлома игр.
О том, что же такое Game Genie, наверное, вам рассказывать не стоит. Все мы играли в консольные игры на эмуляторы, доставали читы из Интернета и вставляли их в специальное окно, чтобы включить их в игру и получить желаемый результат. Ну, а для тех, кто не в курсе – я вкратце поясню. Game Genie (коды обмана) – это код, состоящий из 6 или 8 букв, в котором зашифрован адрес байта, который заменяется на указанный в этом же коде. Пример: SXSLUOVK - 39D3?CE:AD. Вставив код обмана и активировав его в эмуляторе, вы получите нужный эффект незамедлительно.
Но если эти коды можно использовать для временного эффекта – почему бы их не внедрить непосредственно в ром, чтобы иметь возможность играть во взломанный ром на любом эмуляторе или даже на приставке?.. Разумеется, мы так и поступим, правда? В таком случае предлагаю вам один очень интересный и, на мой взгляд, самый полезный ресурс для любого новичка в ромхакинге – GameHacking.Net. На нём собраны коды к большинству популярных консолей. И что самое главное – коды к ним добавляют такие же геймеры-любители, как и мы с вами, так что если захотите помочь ресурсу с наполнением страниц новыми рабочими кодами – можете зарегистрироваться на нём и помочь его облагородить.
Чтобы найти коды для нужной вам игры, переходим по адресу: gamehacking.org/?sys=nes (откроется страница со списком NES игр), где выбираем заглавную букву вашей игры и затем ищем её в списке. В данном случае рассмотрим такую игру, как «Чип и Дейл спешат на помощь»: gamehacking.org/game/29235 . У меня лично вот такой файл в наличии: Chip_'n_Dale_Rescue_Rangers_(U)_[!].nes (хотя это не столь важно, главное – чтобы регион совпадал). Заходим на страницу, видим кучу кодов, среди которых есть и ранее невиданного вами типа RAW. «Что они обозначают, как ими пользоваться?» - спросите вы. Отвечу: на сайте представлены коды трёх типов – GENIE, RAW и PAR. Что такое GENIE, вы, наверное, уже догадались. RAW (от англ. «raw» - «сырой») – в буквальном смысле «сырой код». Если вы читали мои предыдущие статьи, то вы, скорее всего, поймёте, что указанный код RAW – это адрес переменной во временной памяти эмулятора. Рядом указано значение, которое необходимо ввести в RAM памяти, чтобы получить эффект, указанный в описании чита (к каждому коду есть своё описание, но только на английском языке). Собственно, это всё равно, что кто-то уже нашёл переменные за вас, и вам нужно только сделать бряк и найти значение в ROM, чтобы заменить его на указанное. PAR (Pro Action Rocky) – аналог RAW, но в библиотеке чит-кодов для NES он не встречается, так что его рассматривать не будем (его можно встретить в списках читов к более мощным консолям).
А теперь – краткий ликбез для тех, кто плохо понимает английский:
1-Hit Kill Bosses – убийство боссов с одного удара
Always Have или Always Start With – Всегда иметь / Всегда стартовать с указанным предметом, жизнями и пр..
Jump In Mid-Air – прыгать в воздухе (бесконечные прыжки)
Infinite Lives – бесконечные (неопределённые) жизни
Infinite Health/Energy – бесконечное здоровье/энергия
Invincibility/Invulnerability – бессмертие/неуязвимость
Level/Stage Modifier – выбор уровня
Walk Thru Walls/Enemies – ходить через стены/врагов
… Остальное и так понятно.
Как встраивать Game Genie в игру:
Берём любой понравившийся код со страницы, указанной выше. Например, вы хотите, чтобы в игре поверх ящиков отображалось их содержимое. В таком случае берите чит под названием X-Ray Vision (alt), код: ENSEXLEI. Копируете код, запускаете Chip 'n Dale Rescue Rangers на эмуляторе FCEUX 2.2.3 и затем заходите в Debug->Game Genie Encoder/Decoder. В появившемся окне вводите данный код в форму Game Genie Code:
Можете вводить вручную и с маленькой буквы (регистр не учитывается) – главное, чтобы код вводился вами без ошибок. Как только код будет полностью вами введён (или вставлен) – утилита сама напишет вам прямой путь на необходимое значение в ROM памяти. Нажав дважды на строчку в Possible Affected Address, вы попадёте прямо на нужное значение, которое вам нужно поменять. В окошке Game Genie Encoder/Decoder Value означает текущее значение в роме, а Compare (сравнение) – значение, на которое вам его нужно поменять. И как только вы это сделаете, и игра прочитает данные изменения – результат будет виден сразу:
Как видите, ничего сверхсложного в этом нет. Хочу ещё отметить, что коды с шестью буквами вместо восьми дают не всегда стабильный и не всегда правильный эффект, поскольку вставляют одно и то же значение в несколько мест, так что встраивать их в игру я не рекомендую, потому как ром можно запороть.
… Ну, и напоследок я бы хотел показать вам, каким образом получаются эти самые Game Genie. У нас уже есть готовый код… что нам делать дальше? Ищем в Интернете прогу под названием Game Genie Converter. Открыв её, выбираете пункт NES, затем вставляете имеющийся код в верхнее поле, как показано на картинке:
Таким образом, вы увидели GG код в расшифрованном виде. В Hex Code указан код в RAM (тот, что вы получаете после срабатывания брейкпоинта), далее идут всё те же – текущее и новое значение. Ниже располагается Instruction – инструкция машинного кода. Ранее я уже упоминал некоторые из них: DEC – DECREASE, INC – INCREASE, CMP – COMPARE, NOP - NOPE.
Собственно говоря, это всё, что вам нужно знать о создании и применении Game Genie в ромхакинге. Благодарю за внимание!