Многие в детстве видели игры для "Dendy" типа Super Mario Bros с бесконечными жизнями или где Марио мог одним прыжком долететь до финиша, или "Черный плащ 2" (!) который был хаком Super C с измененными тайлами. В 90х мало кто мог сам "хакнуть" игру, а теперь есть куча инструментов для этого и можно попробовать сделать это самому.
Для этого нам понадобится эмулятор FCEUX 2.2.2 ( в этом эмуляторе полно инструментов типа встроенного хекс редактора, дебагера , просмоторщика тайлов которые в данный момент в видеопямати и тд) и ром игры, например Super Mario Bros.
Запустим Марио в эмуляторе запустим игру и зайдем в поиску в памяти ( RAM Search)
Например мы хотим бесконечные жизни. Изначально у нас 3 жизни ( но отсчет идет с 0). Сделаем поиск в памяти как на картинке , и найдем все значения "2". Те значения которые меняются (красные) можно сразу же отсеивать опять делая "Search".
Дальше например добежим до скрытого блока с жизнью о котором все знают, возьмем его и сделаем поиск опять но уже предварительно изменив фильтр , выставим "Greater Than" (больше чем) и "Previous Value" (предыдущее значение). У нас останется один адрес где хранится количество жизней
Дальше кликаем правой кнопкой на адресе и откроется хексредактор с уже помеченным значением в памяти приставки , кликаем на него правой кнопкой и выбираем "Add Write Breakpoint".
Теперь откроется дебагер и он будет эмуляцию ставить на паузу каждый раз когда в ячейку жизней будет происходить запись (чтоб продолжить эмуляцию жмем Run) и будет показывать команды процессора которые выполняются при этом.
Вернемся в игру не закрывая ничего пока. И спрыгнем в пропасть потратив 1 жизнь. И сразу увидим что сработал наш "breakpoint" фильтр в дебагере. И в этой строке видно что происходит уменьшение (DEC) значения по адресу 075A и слева так же показана эта функция в хекс виде , а не в виде опкода процессора NES. Скопируем "CE 5A 07" .
Откроем окно с хекс редактором и выберем отображение содержимого рома, а не содержимого памяти приставки и сделаем поиск по "CE 5A 07".
Изменим "5A 07" на "00 00" и сохраним ром File -> Save Rom . Закроем эмулятор и все окна уже нам ненужные и запустим этот ром опять. И теперь при смерти у нас не будут отниматься жизни, тк вместо адреса значение которого должно уменьшаться у нас стоят нули.Это конечно все очень поверхностно и очень уж простой пример. Не все игры или параметры игры получиться так легко хакнуть без знания процессора 6502, но ради развлечения сойдет.
Хотел еще показать как графику можно поменять, но слишком длинно получается и сделаю другой пост .
Эмулятор - http://www.fceux.com/web/home.html
Опкоды NES процессора и их описание - http://www.thealmightyguru.com/Games/Hacking/Wiki/index.php?...
Ромы - http://www.emu-russia.net , http://www.emu-land.net