Главная arrow Документация arrow Примеры работы с программой Happy Finder
24.06.2017 г.
Краткие новости
Поздравляем всех с наступившей недавно весной - временем появления цветов, солнца и новых надежд! В этой связи мы приготовили скромный, но всё-таки хороший подарок. Им будет перевод малоцветной, однако весьма милой и оригинальной игры про ангелочка Марлоу. Быть может, больше известной кому-то под непростым названием Taiyou no Tenshi Marlow - O Hanabatake wa Dai-Panic.

И конечно же наша команда поздравляет сегодня всю прекрасную половину человечества с Международным женским днём! Сильной же половине напомним, что нужно никогда не забывать о героинях сегодняшнего праздника, любить, ценить их и оберегать от любых огорчений. И уж точно ни в коем случае не опаздывать на свидания!

angelochek

 
Цитаты
Фрост Роберт: "Поэзия — то, что гибнет в переводе."
Внимание! Всем-всем-всем!
Товарищи! Если у кого-то из вас вдруг завалялись ненужные (или не очень нужные) картриджи денди - не дайте пропасть добру! Приму в дар, скопирую и верну хозяину или куплю/обменяю любые интересные картриджи, особенно редкие или пиратские. С предложениями обращайтесь НА ФОРУМ или В ЛИЧКУ. Подпись: Guyver.
Примеры работы с программой Happy Finder Печать E-mail
Автор Guyver   
08.01.2015 г.

Примеры работы с программой Happy Finder (автор: Guyver)

Оглавление.

1. Введение.
2. Пример с игрой Operation Europe - Path to Victory 1939-1945 (U) [!].gen.
3. Пример с игрой Front Mission (J) (V1.0) [T+Eng1.0b_FH].smc.
4. Поиск непоследовательных значений.
5. Вместо заключения.
Введение.

Программа Happy Finder предназначена для простого поиска данных в файле и нахождения адреса найденных данных с возможностью cдвига реального адреса на заданный интервал. Найденные адреса, к примеру, можно подключить в Kruptar в качестве поинтеров. В этом документе на примерах будет рассмотрена работа самой программы, и даны некоторые пояснения для работы с программой Kruptar.
 
Пример с игрой Operation Europe - Path to Victory 1939-1945 (U) [!].gen
 
Игра: Operation Europe - Path to Victory 1939-1945 (U) [!].gen
Задача: найти и подключить пойнтеры в программе Kruptar.

В этой игре используются абсолютные четырёхбайтные пойнтеры. Для примера рассмотрим текст из игры:

адрес фразы: 00047830: Soviet advance on
адрес фразы: 00047842: drive east and stop the
адрес фразы: 0004785A: Hitler then planned to
адрес фразы: 00047872: Antwerp in Belgium.

Так вот, пойнтеры в самом роме имеют вид, абсолютно идентичный адресу фразы, т.е.

Пойнтер на 1 фразу будет: 00047830
Пойнтер на 2 фразу будет: 00047842
Пойнтер на 3 фразу будет: 0004785A
Пойнтер на 4 фразу будет: 00047872

Сами адреса на фразы очень легко получить в виде списка в программе Kruptar, используя нулевые пойнтеры. Просто ставим размер пойнтеров PtPointerSize: «0», сдвиг PtReference: «0» и вынимаем адреса текста командой «Add Pointers», где указываем адрес первой и последней фраз вместо адресов пойнтеров. Таким образом можно получить адреса всего текста в совершенно любой игре. А потом сохранить их в текстовой файл командой «Save To File».
 
happy_finder
 
Мы получили адреса фраз. Теперь найдём сами пойнтеры с помощью программы Happy Finder. Открываем программу, задаём начальный адрес «00», задаём конечный адрес «FFFF0» (размер самого рома 1048576 байт, в шестнадцатиричном виде это 100000, поэтому нужно ввести значение чуть меньше размера самого рома),  задаём значения для поиска и нажимаем кнопку «Начать поиск».
 
happy_finder
 
 
Поиск завершён, найдено 4 адреса, это и есть адреса самих пойнтеров! Сохраняем их в текстовой файл. Теперь пойнтеры можно легко подключить в программе Kruptar командой «Add From File».
 
Пример с игрой Front Mission (J) (V1.0) [T+Eng1.0b_FH].smc
 
Игра: Front Mission (J) (V1.0) [T+Eng1.0b_FH].smc
Задача: найти и подключить пойнтеры в программе Kruptar.

В этой игре используются абсолютные двухбайтные пойнтеры. С разным значением PtReference. Но у некоторых из них есть одна особенность. Перед каждым пойнтером стоит определённое значение. К примеру, A9. Для примера рассмотрим текст из игры:

адрес фразы: 00318826: Not enough money.
адрес фразы: 00318838: Is this OK?
адрес фразы: 00318844: Data loaded.
адрес фразы: 00318851: Data saved

Пойнтеры в самом роме имеют следующий вид (выделенные цифры):

… A9 26 88 A2 F1 …
… A9 38 88 A2 F1 …
… A9 44 88 A2 F1 …
… A9 51 88 A2 F1 …

Как можно заметить, пойнтеры легко определить по одинаковым символам, которые стоят перед/за ними. Эти символы – разная служебная информация. Сами пойнтеры разбросаны по всему рому. Поэтому проще их найти автоматически, а не вручную. Список адресов можно получить из Kruptar с помощью нулевых пойнтеров. Но сам список нужно модифицировать перед тем, как вставлять его в программу поиска. 0031 нужно заменить на A9, а последние цифры в адресе поменять местами. Теперь найдём сами пойнтеры с помощью программы Happy Finder. Открываем программу, задаём начальный адрес «00», задаём конечный адрес «347FF0» (размер самого рома 3440640 байт, в шестнадцатиричном виде это 348000, поэтому нужно ввести значение чуть меньше размера самого рома), задаём значения для поиска, задаём сдвиг и нажимаем кнопку «Начать поиск». Сам поиск можно провести несколькими способами. Результат будет довольно неоднозначным:
 
 1 Способ:
happy_finder
2 Способ:
happy_finder
3 Способ:
happy_finder
4 Способ:
happy_finder
 
Как видно из скриншотов, во втором способе нашёлся лишний адрес. Если у вас будет много значений для поиска, и если они к тому же будут короткими по длине, есть вероятность найти вместо нужных адресов мусор. Но его можно отсеять уже в процессе тестирования игры. А если вообще искать пойнтеры без учёта спецсимволов, как в четвёртом способе, то среди адресов будет просто куча ненужного мусора. Первый и третий способы – самые верные, но третий более долгий.

Всё, адреса пойнтеров найдены. Сохраняем их в текстовой файл. Теперь пойнтеры можно легко подключить в программе Kruptar командой «Add From File».
 
Поиск непоследовательных значений: (используйте «QQ» для такого поиска)
 
Игра: Front Mission (J) (V1.0) [T+Eng1.0b_FH].smc
Задача: найти и подключить пойнтеры в программе Kruptar, если известны только сами признаки, по которым можно идентифицировать пойнтеры. Т.е. когда у нас нет адресов фраз текста.

Как рассмотрено выше, пойнтеры для интересующего нас текста имеют вид:

… A9 26 88 A2 F1 …
… A9 38 88 A2 F1 …
… A9 44 88 A2 F1 …
… A9 51 88 A2 F1 …

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

A9 QQ QQ A2 F1 – где вместо QQ программа будет искать любые байты:
 
happy_finder

 
Среди всех найденных будут и наши 4 адреса, как и все остальные, которые удовлетворяют заданному нами условию: первый символ должен быть A9, а четвёртый и пятый – A2 F1. Все остальные символы (второй и третий) могут быть произвольными.
 
Вместо заключения
 
На этих простых примерах была рассмотрена работа программы. Ей можно искать не только адреса пойнтеров, но и просто адреса текста, если это позволяет алгоритм игры. Например, в игре на консоль Sony PlayStation «Eternal Eyes» можно найти адреса диалогов, так как перед каждой фразой из диалога стоят определённые символы. Всё зависит от каждого конкретного случая. Сама программа ещё несовершенна и очень медленно работает с длинными значениями для поиска. Чем длиннее значение – тем медленнее идёт поиск. Но при поиске необязательно задавать в диапазоне поиска весь ром. Иногда достаточно указать определённый небольшой диапазон, если вы знаете, где находятся пойнтеры. К примеру, если это блок пойнтеров. Надеюсь, в будущем у меня получится сделать программу немного быстрее.

Guyver (X.B.M.) 2015 год. Мой E-Mail: Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
Последнее обновление ( 09.01.2015 г. )
 
« Пред.   След. »
home contact search contact search