Главная arrow Документация arrow Примеры работы с программой Happy Finder
23.05.2017 г.

Последние Комментарии

Final Fantasy II 14.05.2017 г.
Incredible Crash Dummies 09.05.2017 г.
Monster Tale [NDS] 04.05.2017 г.

Гостевая Книга

Char
Обратите внимание на Faselei с Neo Geo Pocket. На
Краткие новости
Ко Дню труда скопилось несколько переводов для релиза. Мы хотели опубликовать часть из них и раньше, но потом решили выложить их одной новостью. Пользователями нашего форума при поддержке команды были закончены два перевода: Monster Tale (NDS)  и Zombie Nation (NES) . Первая игра выполнена в жанре платформера с ролевыми элемента и повествует о приключениях юной девушки в сказочном королевстве, населённом монстрами. Вторая игра в жанре шмапа и рассказывает о борьбе самурая-тэнгу Намакуби, который должен спасти Америку от порабощения инопланетной тварью, прилетевшей на Землю в метеорите. Обращаем внимание, что мы всегда рады оказать помощь грамотным переводчикам, хотя и не всегда быстро находим для этого время.

Помимо этого, Guyver совместно с Arrogant наконец-то завершили тестирование перевода Jikuu Yuuden – Debias (NES) . Игра создана в жанре рпг и немного напоминает знаменитую Castlevania. Такая же смена дня и ночи, монстры, снадобья, оружие, загадки и разные предметы.

И напоследок Guyver-ом также был завершён перевод игры Golvellius - Valley of Doom (SMS)  – отличной рпг-бродилки, созданной фирмой Sega. По сути являясь клоном Zelda, игра, тем не менее, имеет свои оригинальные игровые элементы: вид сбоку в пещерах, возможность покупки экипировки, позволяющей проходить недоступные ранее места и т.д.

Желаем всем приятного отдыха от тяжёлых трудовых будней!

1 may

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