Home » Articles » PSX Manuals

Модификация программного кода в PSX играх

Данный мануал демонстрирует изменение программного кода в PSX играх.

* При копировании материала на другие ресурсы, ссылку на источник указывать обязательно!

Необходимые программы:

1.CDmage
2.SlowR3KA
3.PSIG
4.Notepad++

Обозначения:
$ - адрес в оперативной памяти.
f$ - адрес в исполняемом файле(SLUS_007.47) игры.

Примечание:
Поиск и анализ кода тут не рассматриваются, так как это большая тема, требующая отдельного рассмотрения.

Для примера возьмём Resident Evil DC dual shock. Казалось бы в игре всё гладко, и лезть туда не стоит.
Но тот кто играл в RE4 знает - что круче перезаряжать оружие в самой игре, а не лезть каждый раз в инвентарь.
Предоставим игроку такую возможность в первой части RE.

Сама возможность перезарядки делается очень просто:

Активация перезарядки:

$800414A0 f$31CA0 = 0x3C делаем дополнительную проверку кнопки.
$800415A1 f$31DA1 =0x02 добавляем в проверку кнопки [].
$800447EC f$34FEC =0x00000000 отключаем перезапись патронов в пистолете.

Но если всё вначале очень просто, жди что далее вылезет что-то сложное.
Этого не надо пугаться, просто надо быть готовым к этому.

Дело в том - что перезарядка будет реалистичной, если в заменяемой обойме останутся патроны, то главный герой выкинет эту обойму вместе с ними, и вставит новую.
Поклонники реализма будут рады, возможно до того момента когда патроны закончатся. Игроки со стажем вряд ли будут пользоваться такой перезарядкой.

Модификация кода перезарядки:

В общем, извлекаем исполняемый файл(SLUS_007.47) с кодом игры из образа диска с помощью CDmage.


Анализируем код игры(я это делаю в программе IDA) находим код перезарядки оружия.

Запускаем программу SlowR3KA. Дизассемблируем код перезарядки $800448A8 f$350A8 - $80044938 f$35138.
*Перед дизассемблированием следует установить флаг: PSIG, и указать начальный и конечный адрес кода.


Открываем файл “Gun reload.psig” в Notepad++, и видим готовый для компиляции код.
*Чтобы включить подсветку кода, нужно в выпадающем меню "Синтаксисы" выбрать пункт "PSIG".

 

Модифицируем код перезарядки как нам нужно.


Сохраняем новый код с именем “New gun reload.psig”.

Компилируем новый код перезарядки и вставляем в исполняемый файл(SLUS_007.47) игры.
Для этого запускаем PSIG, кнопкой “IN” открываем наш файл “ New gun reload.psig ”.
Кнопкой “OUT” открываем исполняемый файл, в который вставится код “ SLUS_007.47”.

*Можно бросить файлы в окно программы. Файлы с расширением psig, asm, txt, грузятся как входящие, остальные как исходящие.


Для того чтобы код прописался по заданному адресу, нужно чтобы галочка “Insert code” была установлена. Жмём кнопку “Compile”.

Вставляем исполняемый файл(SLUS_007.47) игры обратно в образ диска.


Запускаем игру и радуемся!
Видео

 

Category: PSX Manuals | Added by: 2-FACE (2016-03-11)
Views: 2315 | Tags: Mr2, psx, hacking, code | Rating: 5.0/1
Total comments: 4
avatar
0
1 Слава_Власов • 9:44 PM, 2018-10-06
Как же нужно было узнать, что именно по этому адресу в исполняемом файле находится код, относящийся к перезарядке?
avatar
0
2 2-FACE • 7:59 AM, 2018-10-07
В дебаггере смотришь, кто переписывает патроны при перезарядке:
1. Находишь адрес патронов в пистолете.
2. Ставишь брейкпоинт на запись в адрес.
3. Стреляешь из пустого пистолета.
4. Когда герой начнёт перезаряжать обойму, игра остановится на нужном участке кода.
avatar
0
3 kairimaniac • 6:49 PM, 2019-06-05
Hi, how do I look for the controls I want to order the buttons in a PSX game.
avatar
0
4 kairimaniac • 6:50 PM, 2019-06-05
want to learn about ROMhacking how to unlock things without the need of gimmicks in the game