Чит-коды в эмуляторах Kega Fusion, ZSNES, SNES9X, VirtuaNes

Создание Pro Action Replay кодов в эмуляторе Super Nintendo– часть 1.

В первой статье будет показан самый простой приём – элементарный поиск точного значения. Используется эмулятор ZSNES 1.51 и ром Lethal Enforcers (U).
Поиском точного значения найдём адрес здоровья первого игрока. На экране вверху слева пять блоков со звёздами – ищем в памяти значение 5:
Ставим паузу, делаем быстрое сохранение в любой слот. В меню эмулятора Cheat – Search:
Далее выберем тип переменной целое 1 байт,в  десятичном виде (Decimal) и условие – поиск точного значения (Exact value search):
Нажали старт. Вводим значение 5 и жмём кнопку Search:
Нас просят вернуться в игру, чтобы дождаться изменения значения в игре (в этом случае получить ранение) и тогда можно будет отсеять:
Закрываем окно (X вверху справа – как любое окно в windows). Переходим в игру, снимаем паузу. В нас дважды попадают и здоровья становится 3 блока:
Отсеяли на 3, получаем один результат:
Нажали View:
Теперь жмём Add, в поле Enter new value вводим значение 5 (больше не надо – чтобы глюков не было), в поле Ener Cheat description вводим описание по-английски (бесконечное здоровье первого игрока) и снова жмём Add :
Получаем это:
Смотрим вверху слева направо:
Adress: 7E00B2 – адрес параметра; CV (Current Value) -Текущее значение – равно 5 в десятичном виде; PV (Previous Value) – предыдущее значение было равно 3; TGL – ON – включено, можно нажать кнопку Toggle и тогда сменится на OFF (выключено); Description – описание чита. Код выделен красным, жмём Save, в выбранной в настройках эмулятора директории появится файл .cht:
Теперь всё – можно возвращаться в игру и здоровье не будет уменьшаться=) Можно точно так же найти адрес патронов первого игрока точным значением (при полном магазине в памяти значение 6) – будет так:

Ожидаем - Nes, Genesis/SMD.

ZSNES.doc

Поиск PAR кодов средствами эмулятора Nes & SMD – часть 1. 

Создание RAW кодов в эмуляторе Nes – часть 1.
Воспользуемся эмулятором Nestopia 1.40. Запускаем в нём ром Moon Crystal (J) [T+Rus] – русский перевод от Шедевра:) Можно любой другой ром этой игры.
На экране две жизни:
Идём в Nestopia – Options – Cheats – Add:
A=0 B=0 то есть пока эти поля не трогаем, ниже оставляем отметку на «None» - получается что мы выполняем просто поиск неизвестного значения.
Далее возвращаемся в игру (кнопку Cancel не нажимаем!). В игре теряем одну жизнь. На экране стало 1. Возвращаемся в меню читов, в поле B впечатываем значение 1 и после этого выбираем условие поиска (фильтр) R0-R1=B:
Поясню – это означает, что значение уменьшилось на единицу. То есть R0 – первое состояние, R1 – второе, B – разница между ними.
Далее слева смотрим – из найденных нам подходят два адреса – 05ED и 0799. Проверяем первый из них (смотрим сверху вниз):
В разделе Raw: Adress 05ED
Value = 7 (можно другое)
Далее жмём кнопку Validate (обязательно!) – слева появится надпись Valid; Description – описание адреса, я вписал Inf. Lifes. Дальше жмём Submit – появится меню, как на скрине внизу. Выделяем чит мышью и жмём OK.
В игре проверяем код – умираем один раз и жизней стало 6:
Значит в памяти значение количества жизней отличается от экранного на единицу больше. Это очень распространённый вариант – жизни кончаются, если умереть когда на экране осталось 0 жизней. Но с этим всё. Теперь можем этот код сохранить – код выделен, жмём кнопку Export:
И сохраняем в файл .xml:

Добавлено позже:
Найдём некоторые параметры с помощью VirtuaNes 0.97e в игре Super Contra (ром Super C (U) [T+Rus].
На экране количество жизней 2. Делаем быстрое сохранение и далее Tool – Cheat Support:
Количество жизней хранится как 1 байт целое, поэтому оставляем Length – 1 byte. Жмём кнопку Start для начала поиска:
Теряем одну жизнь, отсеиваем на «уменьшилось» - нажимаем кнопку  Old>Now:
Без изменения счётчика жизней продвигаемся в игре, отсеиваем на «не изменилось» - Old=Now. Вот и нашли :
Далее Tool – Cheat Code:
Input – вводим код на адрес 0053. Пишется так: Адрес-тип переменной (в байтах – 1, 2 или 4) и значение. Ниже пишем комментарий к чит-коду:
Жмём OK:
В игре стало 4 жизни, которые не уменьшаются при умирании:
Сохраняем код:
Так как жизни хранятся точным значением, можно жизни второго игрока найти элементарно. Нажимаем Start в меню поисковика читов, дальше вводим Data = 2 и жмём Search:
Есть смысл проверить адрес 0054, так как он идёт сразу за адресом жизней первого игрока. Так и есть – это адрес жизней второго игрока:

Идём дальше. Найдём адрес здоровья в игре Moon Crystal. Сохраняемся при начальном уровне здоровья и начинаем поиск с нажатия кнопки Start:
Ранение – отсеиваем кнопкой Old>Now:
Грузим сохранение с полным здоровьем – Old<Now:
В игре без ранений проводим какое-то время – Old=Now:
Адрес 05F0 очень похож на адрес здоровья – так и есть, вот код на него:
Почему я поставил значение больше 3 поймут те кто в эту игру играл – там в дальнейшем добавляется уровень специальным призом.


_____________
Добавлено позже:
Поиск PAR кодов средствами эмулятора SMD – часть 1.
Fusion 3.63 – в  этом замечательном эмуляторе очень неудобный поисковик кодов, и это серьёзный недостаток. Но некоторые приёмы можно применять без проблем. Рассмотрим пока что два из них.
Запускаем игру Caliber Fifty. 
Найдём количество жизней (попыток). На экране 2 жизни. Делаем сохранение и идём в меню GameGenie/PAR:
Далее жмём кнопку CodeFinder:
Жмём кнопку Count. Она предназначена для поиска точного значения:
Жмём Find. У меня нашлось 97 результатов. Жмём OK, в открывшемся новом (старом) окне также OK и возвращаемся в игру. Там теряем одну жизнь, то есть становится 01 на экране – возвращаемся в окно поиска и отсеиваем на значение 1:
Остаётся 7 адресов. Грузим сохранение с 02 жизнями и отсеиваем на 2:
Не теряя и не приобретая новых жизней продвигаемся в игре и снова отсеиваем на 2. Количество результатов не изменилось? Тогда определим нужный адрес перебором.
Пробуем код со значением на адрес FF9968. Вводим адрес:значение, жмём Add code, выделяем код в списке мышью (обязательно!) и жмём OK:
результате получаем  бесконечные жизни:)
Примечание: эмулятор Kega Fusion использует для хранения данных перевёрнутый порядок байтов (спасибо разработчикам ArtMoney)у . Поэтому адреса Fusion, в первую очередь те, которые 1 байт целое, могут различаться на 1 байт. То есть в  Fusion код на адрес FF9968 – в других эмуляторах (Gens всех видов) надо использовать код на адрес FF9969. 
Теперь найдём код на гранаты. На экране 39 гранат. Идём в CodeFinder и в этот раз жмём кнопку Difference («Разница»). Этот вариант подходит для поиска разницы значений или интервала в таймерах – на сколько уменьшилось/увеличилось значение, столько и надо писать в поле Find.
Нас просят запомнить изначальное значение.
Возвращаемся в  игру. Бросаем, скажем, две гранаты, стало 37. Вводим разницу 2 и жмём Lower (если бы значение увеличилось – нажали бы Higher):
Получили результаты:
Ну тут уже всё понятно. Добавляем код, не забываем выделить его в списке – иначе он не будет работать:
В результате имеем это:

* Nintendo_NES_1.7z 
* VirtuaNes_1.7z 
* Caliber Fifty.7z 

Создание PAR кодов в эмуляторе SNES – часть 2.

Сделаем неуязвимость в игре Axelay на эмуляторе SNES9X fix 4.
Invincibility – мой любимый приём. Во многих играх существует неуязвимость при мигании, которая появляется после пропущенного удара,  респауна или начала уровня. В памяти по адресу неуязвимости отсчитывается время до её окончания. Этот адрес можно просто найти – по сути это тот же таймер, только скрытый (без экранных значений). Но есть ещё одна фишка – адресов неуязвимости обычно несколько, все они идут друг за другом без всяких смещений и значение предыдущего равно x256 следующего – проверено на практике.
В самом начале игры при мигании ставим паузу, сохраняемся и идём в Cheat – Search for new cheats:
В открывшемся окне поиска задаём нужные условия поиска – Значение больше нуля, тип переменной 4 байта целое, беззнаковое: Greater than – Entered value – 0 – Unsigned – Integer 4 bytes:
Жмём OK, в игре дожидаемся окончания мигания, снова пауза и отсеиваем на «уменьшилось»: Less than – Previous value:
Далее возвращаемся в игру, без мигания проводим какое-то время и отсеиваем на «не изменилось»: 
Далее всё сначала – мигание и «увеличилось»: Greater than – Previous value:
Снова «уменьшилось» и т.д. Смотрим те значения что «по нулям» - таких значений 4, и предыдущие значения были как раз x256. Остальные все не подходят – я делаю код на адрес 7E0324. Фактически это адрес 1 байт целое, работать с ним проще, так как меньше значение, которое нужно вписать:
Получаем готовый PAR код. Не забудьте проверить что отмечено Apply cheats:
Также смотрим в окне Cheats – GameGenie, Pro Action Replay codes:
Примечание – значение 14 по адресу неуязвимости в этой игре заморозило мигание спрайта в неподходящий момент (когда корабль не видно вообще), поэтому надо поставить другое значение – для начала можно попробовать на единицу больше или меньше, или любое нечётное число:
Вот и всё – враги и их выстрелы проходят сквозь игрока (который не мигает), можно записывать TAS-видео=)

SNES9X.DOC

| 27.04.2019 Просмотров: 2780
| Теги: ZSNES, VirtuaNES, Kega Fusion, Snes9X, Чит-коды, эмулятор