| Разработка и ромхакинг > Ромхакинг и программирование |
| Чит-коды в эмуляторах |
| (1/2) > >> |
| iddqd:
Создание 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. |
| iddqd:
Создание 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): Получили результаты: Ну тут уже всё понятно. Добавляем код, не забываем выделить его в списке – иначе он не будет работать: В результате имеем это: |
| iddqd:
Сделаем неуязвимость в игре 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-видео=) |
| Phil:
iddqd, а можно ли зная чит-код пофиксить сам ром? (к примеру Balloon Fight (U).nes: SUNNIZVI - Infinite lives или AENYPPZE - Start with 9 lives; Ice Climber (U).nes: OKEIPGVS - Infinite lives, AEXKTGLE - Start with 9 lives) А с помощью каких прог, вообще, удобнее менять количество жизней в самих ромах? (Прост охота в трёх версиях Ice Climber-а (Ice Climber (VS).nes, Ice Climber (U).nes, Ice Climber (VS).fds) сделать по 9 жизней) |
| iddqd:
Phil, ром фиксят коды GameGenie. Я работаю только с RAM, к сожалению.. Но здесь есть спецы. |
| Марат:
--- Цитата: Phil от 27 Январь 2010, 01:00:08 ---iddqd, а можно ли зная чит-код пофиксить сам ром? (к примеру Balloon Fight (U).nes: SUNNIZVI - Infinite lives или AENYPPZE - Start with 9 lives; Ice Climber (U).nes: OKEIPGVS - Infinite lives, AEXKTGLE - Start with 9 lives) А с помощью каких прог, вообще, удобнее менять количество жизней в самих ромах? --- Конец цитаты --- С помощью hex редактора, зная место, где находятся жизни. |
| r57shell:
Это не развёрнутый ответ!) Правильный ответ то что в самом чите к примеру SUNNIZVI есть информация где, и как менять ром. Первый же гугл поиск по фразе "Game-Genie to PAR" привёл к http://www.videogamesource.com/genie/create.html Если ещё получше порыться, то можно и найти как из SUNNIZVI понять что в роме менять(хотя вот в той ссылке вроде это есть). Вот например если пароль Game-Genie в сеге при раскодировке выдаст чото на подобии 0000CDEF:0412 - то первое это оффсет в роме где надо патчить, а второе - чем заменить. |
| Марат:
Ты сначала вопрос прочитай нормально. Вопрос был " А с помощью каких прог, вообще, удобнее менять количество жизней в самих ромах? " |
| r57shell:
--- Цитата: Phil от 27 Январь 2010, 01:00:08 ---iddqd, а можно ли зная чит-код пофиксить сам ром? --- Конец цитаты --- я на эту часть отвечал, фак... этож не меня спрашивали :ohmy: --- Цитата: Phil от 27 Январь 2010, 01:00:08 ---А с помощью каких прог, вообще, удобнее менять количество жизней в самих ромах? --- Конец цитаты --- --- Цитата: Марат от 27 Январь 2010, 10:32:03 ---С помощью hex редактора, зная место, где находятся жизни. --- Конец цитаты --- вот это пояснил ) Добавлено позже: можно и на примерах только лень :crazy:. Ладно сча сделаю :] И кстати необязательно спомощью хекс редактора... нелюблю в них копаться... можно любым хекс патчером. |
| Марат:
А, ну, тогда я извиняюсь. |
| r57shell:
Впринципе всё подробно описано в http://www.videogamesource.com/genie/gg/create/nes_6_to_8.html (ссылка несовсем по теме - она о том как перевести код из 6 букв в 8-сми буквенный) Хотя нет... погорячился ))) Описано всё не по этой теме но зато оттуда можно понять как чо делать :) ну я понял покрайней мере... но для тех кто инглишь невоспринимает вот какой пример там даётся :) Megaman 3: NXTKGE start with infinite energy tanks. Это 6-ти буквенный пароль. Вводят в http://www.angelfire.com/games2/codehut/ggconvc.zip Получают 40EC? :AF и вот эти 2 символа хотят найти в роме, а ищат их так: Для любых целых i смотрят адресс 40EC+10+i*8000 в роме (все числа шестнадцатиричные - и только 40EC нам надо знать из 6-ти значного пароля), после чего записывают байт который по этому адрессу - все различные записывают. У них полчилось "48,05,00,21,E0,84,90,FF,FC" После чего в эту прогу (ggconvc), в пустое отведённое место, вводят все эти варьянты ("48,05,00,21,E0,84,90,FF,FC") и проверяют каждый код который выдаёт этот конвертер. Если код работает - значит он искомый 8-ми буквенный. Ссылаются ещё на прогу http://www.angelfire.com/games2/codehut/GameGenieDecoder.zip, которую если затестить то видно [картинка прикрепленная], что то что после вопроса(в ggconvc) это compare (с английского сравнить), а после двоеточия это value (с английского значение - логично предположить что это означает чем заменить). Теперь вывод. Это значит что чтобы 8-ми буквенный применить, нужно взять ввести его (SANNIZVI) в ggconvc и получим 727D?D6:85 после чего найти все D6 по адресам для всех целых i: 727D+10+i*8000 и заменить их на 85. Сейчас попробую ^^. Только надо ром сначала скачать. Эмм ошибочка пароль то SUNNIZVI... а я то думаю чоза хрень )). Добавлено позже: Пациент скорее мёртв чем жив, короче все коды которые ты хочешь врубить - это рам коды тоесть постоянное изменение данных в памяти. А те которые в ром можно изменить они должны изменять ром, а не рам. Вот к примеру проканал код VXVKGAEO для Megaman 3 - удалось пропатчить ром. Делал как: ввёл VXVKGAEO в ggconvc и получил 40EC?90:AE пробежался по адресам 40FC,C0FC,140FC,1C0FC... до конца рома, по адрессу 3C0FC нашел 90 которое надо заменить на AE. Заменял http://www.emu-land.net/forum/index.php/topic,2076.msg488086.html#msg488086 а именно вот из этого архива http://www.emu-land.net/forum/index.php?action=dlattach;topic=2076.0;attach=22964 hexpatcher-ом написал "3C0FC,AE" и готово :] пробегался по адресам вручную в Total Commander жмём F3,3 хм а насчёт читов на RAM - надо искать где в роме идут ссылки, чтобы например просто при убийстве - неуменьшать кол-во жизней и всё )). Добавлено позже: А если хочешь аналогичные коды в других ромах то надо самому искать. |
| pro709:
Чит-коды в эмуляторе nestopia для battle city например для жизней танка ? |
| iddqd:
pro709, всё расписано подробно, со скринами: http://www.emu-land.net/forum/index.php/topic,37168.msg509943.html#msg509943 Тебе даже значения искать не нужно - возьми коды с GameHacking.org Те, что без пометки GG введи в Raw - Adress/Value/etc. Коды, помеченные GG вводи в поле GameGenie. |
| pro709:
В Nestopia 1.40 не могу сделать код на бесконечные жизни и здоровье для игры Kyatto Ninden Teyandee ? |
| iddqd:
pro709, что значит сделать? Используете готовые коды или ищете значение самостоятельно? Какая версия рома? |
| pro709:
Nestopia 1.40 |
| iddqd:
Нужна версия не эмулятора, а рома, т.е. игры. Вот коды: http://gamehacking.org/?s=v2&admin=search&searchinput=Kyatto+Ninden+Teyandee&hackers=on&cx=partner-pub-3413463488890851%3Ahxz5bp-zamb&cof=FORID%3A11&ie=ISO-8859-1&sa=Search&games=on&filter=0 Код Game Genie на бесконечное здоровье Открой в эмуляторе Options - Cheats, далее в Temporary Cheats нажми Add В новом окне поставь отметку на GameGenie, введи код в поле ввода кода, далее введи описание в поле Description, нажми кнопку Validate, затем Submit Во вновь открывшемся окне нажми OK Я проверил этот код на версии рома Kyatto Ninja Teyandee (J) [T+Eng.10_Vertigo], можно проверить на других версиях: Kyatto Ninja Teyandee (J) [T+Eng4.5_Shadow], Kyatto Ninja Teyandee (J) [T-Rus(B)] и т.п. Думаю, код будет работать на всех ромах на основе оргинального (J) рома. |
| pro709:
Зачем мне готовые коды я ищу значения самостоятельно? В virtuanes093e все нашел что хотел а в Nestopia никак |
| iddqd:
Ты нашел код в RAM Nes (Raw код)? Тогда зачем тебе заново искать? Просто введи тот же код в Nestopia, у него отличный от VirtuaNes формат кода, введи в формате для Nestopia и всё. |
| pro709:
1 байт это жизни а что 2,3,4 байта |
| Навигация |
| Главная страница сообщений |
| Следующая страница |