Home » Articles » PSX Manuals

Поиск статичных данных в PSX играх

Поиск статичных данных в PSX играх:

Автор: Mr2
Мануал вдохновил: ViToTiV

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

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

1.Code Marker - отметка отработанного кода и используемых переменных.
2.Debugger - вылавливание\отслеживание нужных участков кода, выполнения кода.
3.HexCmp - сравнение данных.
4.Dino archiver - архиватор файлов.
5.Byte manager - менежджер данных.
Маркированные файлы.(файлы полученные в процессе анализа)

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

Допустим мы решили перевести Dino Crisis на русский язык, утерев нос горе переводчикам 90-ых. И всё у нас гладко, но вот беспокоит нас одна проблема. Текстурка слова EASY немного меньше слова ЛЕГКО. Недолго думая мы достаём джокера из рукава... Для поиска координат и размера, будем использовать Code Marker и дебаггер для проверки переменных.

* Этим способом не удастся отыскать данные зашитые в код игры.

Запускаем игру через Code Marker, как только появится главное меню, жмём кнопку F11 и включаем разметку.(устанавливаем переключатель на Mark at start) Жмём кнопку Continue. Ждём когда слово NEW GAME мигнёт 50 раз. Это нужно чтобы прописались все не интересующие нас данные.

Вызываем окно CM клавишей F11, и сохраняем маркированные данные под номенром 1.

*Кнопка "Save marks", сохраняет разметку в папку эмулятора dump\.


Переходим в меню новой игры. Сразу же размечаются используемые данные для выбранного меню.


Вызываем окно CM клавишей F11, и сохраняем маркированные данные под номенром 2.

*В файле 1_ code_marked.bin у нас размеченные данные до входа в меню новой игры, а в 2_ code_marked.bin разметка после входа в меню.

Сравниваем маркировку.

Нас интересуют маркеры чтения 01, на остальные не обращаем внимания. По адресу $80019704 находим первое чтение данных, после перехода в меню выбора сложности. Для того чтобы узнать за что отвечают эти данные, нужно поменять их на любые другие. Через дебаггер меняем данные по адресу $80019704 и смотрим результат.

*Кнопка "Run >", снимает эмуляцию игры с паузы.

После присвоения 0x25, мы выясняем что наткнулись на координаты вывода по оси X.

А это не то что нам нужно. Продолжаем проверять следующие данные, пока не находим интересующие нас значения по адресу $100000.

Меняем $80100000 на 0x25.

И видим что поменялось начало копирования текста на экран . А это значит что где-то рядом и ширина текста.

Меняем $80100002 на 0x29 и видим что поменялась ширина копируемого на экран текста.

Ищем нужную комбинацию байт "e000201021010000" в файле TITLE.DAT, и с лёгкостью попадаем на нужные  данные f$2c801.

Но просто так эти данные менять нельзя, так как файл сжат. Разжимаем файл с помощью Dino archiver.

Archive offset: 2C800
Archive size offset: 64
Decompressed file: coord.dta

Меняем ширину и координаты копируемого текста.

Запаковываем.
Compressed file: coord.lzss

Вставляем архив обратно в файл TITLE.DAT.
IN: coord.lzss
OUT: TITLE.DAT

Исправляем размер архива и радуемся.(предварительно перевернув байты)
IN: TITLE.DAT

 

Category: PSX Manuals | Added by: 2-FACE (2018-10-13)
Views: 1278 | Rating: 5.0/1
Total comments: 0