Я попытаюсь познакомить вас с это замечательной прогой!
Для этого нам понадобится:
1.
Kruptar 6 (собственно)
2. Любой Hex-редактор
3. Знание пойнтеров
4. Калькулятор с поддержкой Hex (подойдет стандартный Win калькулятор)
5. Немножко терпения
Я покажу на примере игры Cristalis (GameBoyColor)
! Я рассматриваю случай, когда у нас есть все
таблицы, ром с перерисованными шрифтами, и мы знаем расположение и значение пойнтеров.
! Еще нюанс! На время написания доки версия
Kruptar’а была 6.0.5.6 Я не могу ручаться за соответствие доки с более поздней версией. Но если программа
претерпит серьезные изменения, я постараюсь обновить данный хелп.
Открываем
Kruptar!
Что мы видим?
Мы видим окошки, что характерно для большинства программ
Djinn’а.
Если Вас это не смущает, то продолжим…
Нажимаем на иконку
Создать новый проект или просто нажимаем
Ctrl + N.
Откроется окошко, где Вам предлагают задать программе оригинальный (английский или японский) РОМ и изменяемый
(то есть с перерисованными шрифтами).
Теперь высветилась иконка
Добавить группу (горячая клавиша
Ctrl + G).
Нажав на нее, увидим окошко, спрашивающее, будем ли мы использовать пойнтеры в переводе. Уважающий себя
переводчик (РОМхакер, как хотите) выберет
Да, т.к. очень сложно, не используя пойнтеры, сделать
качественный перевод.
Подробно рассмотрим окошко
Новая группа (с пойнтерами):
1. Таблица для оригинального ROM’а.
Выберем английскую (или японскую) таблицу.
2. Таблица для изменяемогоROM’а.
Выберем русскую таблицу (мы на какой язык переводим?)
3. Размер пойнтера.
Пойнтеры бывают разные, двух-, трех-, и четырехбайтные. Ну вы это знаете (см. первый восклицательный знак)
4. Кратность.
При пересчёте, каждый пойнтер будет кратным одному из выбранных значений (1, 2, 4, 8). Кратность на 2, 4 и 8
используется только в некоторых играх для GBA.
5. Тип.
а)
Normal - ничего необычного
б)
PunType - игра Punisher, The (U).nes
в)
AutoStart - используем, если
Разница смещений равна началу блока пойнтеров
6. Интервал.
Бывают такие случаи, когда пойнтеры идут не друг за другом, а между ними стоят посторонние байты. Здесь и надо
указать тот промежуток, который занимают эти байты между пойнтерами.
7. Motorola.
Ставим галочку, если эта консоль на процессоре
Motorola. Подробнее о процессорах консолей вы можете
прочитать, например, на
http://tv-games.ru.
У нас консоль GameBoy, поэтому
не ставим галочку!
8. Signed.
Пойнтеры типа signed int (c++) или integer (pascal/delphi), то есть они могут указывать как вперёд от начала
отсчёта, так и назад.
9. Метод хранения текста.
Программа поддерживает 7 методов.
а)
Текст + /
Текст, заканчивающийся каким-либо байтом (часто 00 или FF).
(Используется в большинстве игр и программ)
б)
Длина (1 байт) + Текст
Текст, начинающийся с байта, обозначающего количество символов.
(Часто используется в играх для NES)
в)
Длина (1 байт) + Текст + /
Текст, начинающийся с байта, обозначающего количество символов. Должен заканчиваться каким-либо байтом.
(Используется в игре Raf World для NES)
г)
Длина (1 байт) + 1-я строка + Длина (1 байт) + 2-я строка
Две строки метода
б.
(Используется в игре The Terminator для NES)
д)
Кол-во строк (2 байта) + 1-я строка + / + ... + n-я строка + /
Несколько строк метода а, количество которых указывается в первых двух байтах.
(Используется в игре Pirates! Gold для Sega)
е)
Длина (1 байт) + Х (1 байт) + Данные + Текст
(Используется в игре Magical Hat no Buttobi Turbo! Daibouken (Sega)).
ж)
Special
Пойнтеры, указывающие на 2-х байтные пойнтеры, указывающие, в свою очередь, на текст метода
а.
10. Разница смещений.
Это разница между адресом начала фразы и пойнтером этой фразы.
Рассмотрим поподробнее.
Откроем ром в hex-редакторе (я использую GoldFinger) и найдем там текст.
Я выделил красным прямоугольником три пункта:
1. Как видно, курсор стоит на начале строки (на букве
Т).
Её адрес я выделил
Offset: 1A3032
2. Я выделил пойнтер этой фразы в текстовой части GoldFinger’a.
3. Я выделил пойнтер этой фразы в кодовой части GoldFinger’a.
Его значение –
3270
Начинаем считать:
Разница смещений =
1A3032 (адрес начала строки) –
7032 (перевернутое
значение
3270) =
19С000
Значит, в строке
Разница смещений пишем
h0019С000
!Если значение пойнтера (ptr) больше адреса начала строки (str), то в
калькуляторах Win95/98/ME вычисляется так:((ptr - str) xorFFFFFFFF) + 1
11. Кодировка.
ANSI – это стандартная Win кодировка, если вы переводите с английского, то выбирайте ее.
Shift - JIS – нужна, если вы переводите с японского языка.
12. Начальное смещение.
Это адрес первого байта того места в ROM’е, в котором и будет лежать Ваш переведенный текст. Обычно это место,
занимаемое английским (японским) текстом + иногда добавляют свободное место в ROM’е, находящееся неподалеку.
Про этот нюанс Вы тоже знаете, Вы же читали о размерах пойнтеров и их свойствах.
13. Конечное смещение.
А это адрес последнего байта.
14. Блоки для текста
Здесь будет список промежутков, которые Вы выделили под текст.
! Не забудьте нажать кнопку >>, чтобы добавить промежуток.
Вообще, я предпочитаю не указывать здесь эти промежутки, а указать их в окошке Новый элемент.
Вот результат:
Нажав ОК, мы увидим, что в окошке Элементы проекта появилась группа. В этой группе зафиксированы все данные,
выбранные в окне
Новая группа, кроме блоков для текста (их всегда можно изменить). Теперь мы можем
добавлять сюда текстовые блоки (элементы) с выбранными данными.
Нажмем
Добавить элемент (
Ctrl+Alt+A)
Появилось окошко
Новый элемент.
Здесь мы можем выбрать другую таблицу(если это нужно), добавить еще места под текст и, самое главное, указать
местонахождение пойнтеров!
В поле
Начало блока пойнтеров введем адрес первого байта первого пойнтера, а в поле
Конец блока
пойнтеров введем адрес последнего байта последнего пойнтера.
Ура!!! Появился текст, который Вы сможете перевести!
! Если вместо текста появилась какая-то белиберда, то Вы, возможно, перепутали адреса или
неправильно высчитали Разницу смещений.
Часто, особенно в RPG’шках, в роме много блоков текста, и у них бывает различная
Разница смещений.
Тогда можно разложить блоки по группам с одинаковой
Разницей смещения, причем блоков и групп может быть
сколько угодно (то есть можно в одном проекте разложить весь текст игры).
Вот такая вот картина у меня получилась:
Весь текст в одном проекте.
И не надо открывать тысячи файлов!
Вы можете сохранять перевод, не вставляя его в файл, что тоже очень удобно.
Если Вы захотите посмотреть, что же у вас получается, то для начала нажмите кнопку
(F9), чтобы вставить текст из одной группы, или
(Ctrl+F9), чтобы вставить текст из всех групп сразу.
Есть еще немного «примочек», программы, такие, как Прогресс перевода, Настройка эмулятора для запуска игры
прямо из Kruptar’а, Hex-редактор и др, но думаю, с этим вы разберетесь сами.
Спасибо, что дочитали до конца!