| Разработка и ромхакинг > Ромхакинг и программирование |
| Перевод Digimon World PSX (PAL) |
| (1/3) > >> |
| ReeDeR:
Давно люблю эту игру.Но на неё нет нормального русского перевода. Тот что есть он от Кудос с кривыми шрифтами и абсолютным наплевательством на длину слов. Буквально там русские слова были написаны английскими буквами плюс умещали всё это в длину оригинального текста. Т.е пираты на поинтеры вообще забили. Дело в том что игры я никогда не переводил,но как то интересовался этим. Вообщем взялся за эту игру и кое что уже получается. Я узнал таблицу символов.Кодировка текста в игре использует Shift JIS японскую кодировку. Нашел и перерисовал шрифты под русский алфавит. И начал перевод с системных сообщений. И вот успехи. Узнал про смещения поинтеров. Гдето используются смещение A0000 гдето 90000. Например в названии техник 90000 а в названии локаций а0000. Я дампил память и вычитал разницу между файлом и памятью и легко находил поинтеры. Таблицы поинтеров во многих случаях видны не вооруженным глазом в хексе. Чтото типо 1234 FFFF 1234 FFFF 3455 FFFF и тд. Использовал Круптар для перевода.Устанавливал там область с поитерами и устанавливал смещения и Круптар легко выдирал тест из файла по поитером.Но тут я взялся за игровые диалоги персонажей. И тут возникли проблемы. Я знаю что диалоги лежал в одном файле DG0.SCN. Но у меня возникли проблемы с поиском поинтеров. Способ с вычитание разницы не сработал. Вот вижу эти диалоги в хексе по буквенно но поинтеры на него найти не могу. Хотя и есть чтото похожее на таблицу поинтеров,но смещения не работают.Вернее для одного диалога получилось правильное смещение и он отображается верно а другой диалог отображается не с начала,такое ощущение что разные смещения. Есть тут спецы которые могут описать процесс поиска поинтеров с помощью дебаггера например? А то не хотелось бы запнуться на диалогах и забрасывать игру. :neznayu: |
| SILENT_Pavel:
--- Цитата: ReeDeR от 10 Июнь 2015, 21:20:58 ---Тот что есть он от Кудос --- Конец цитаты --- Он еще тут однажды засветился, кошмарище. http://www.emu-land.net/forum/index.php/topic,65832.msg1044803.html#msg1044803 |
| ReeDeR:
--- Цитата: SILENT_Pavel от 11 Июнь 2015, 00:22:58 ---Он еще тут однажды засветился, кошмарище. http://www.emu-land.net/forum/index.php/topic,65832.msg1044803.html#msg1044803 --- Конец цитаты --- Да не надо мне показывать :) Я этот перевод знаю и проходил эту игру с этим переводом. Весьма забавный перевод на самом деле. Много улыбок доставили корявые словечки. Игра казалась сложная и я часто не знал куда идти и что делать.А всё потому что я просто не мог понять что мне говорят персонажи.Когда персонаж говорит чтото типо "ИД В К С ТАМ ТЫ НАЙД ЦВ " :lol: Вот я и решил исправить ситуацию.И как видишь менюшки я уже подправил.Так же переведены названия локаций ,Вещи ,дигимоны,техники.Дальше нужно браться за основное,диалоги то бишь.И тут проблемс. |
| Mr2:
--- Цитата: ReeDeR от 10 Июнь 2015, 21:20:58 ---Есть тут спецы которые могут описать процесс поиска поинтеров с помощью дебаггера например? А то не хотелось бы запнуться на диалогах и забрасывать игру. :neznayu: --- Конец цитаты --- Ставь бряк на чтение поинтера "only if read" =0x80046855. Или анализируй код чтения строки, тогда поймёшь откуда берутся поинтеры. Код отлавливай по чтению первого символа строки "MemRead" =0x80046855. |
| mrtest:
Отличная игра. когда был еще сопляком, проходил ее вместе с друзьями, фана было хоть отбавляй. Афтар, оч прошу, переводи лучше USA версию. Все-таки 50fps не тру. Так же могу дать наводку на хакера, который разберет тебе игру под ключ. Только он за спасибо не работает. Обойдется в районе 4к. :) |
| paul_met:
Текст может начинаться со служебных символов. По сему, можно ошибиться, определяя точное начало строки. К тому же, поинтеры могут быть относительными. Первая строка считается нулевой, а все последующие (если они отделены стоп-байтом) отсчитываются от её начала. Допустим, что 2-я строка относительно 1-й смещена на 0х4A байт. Значит, поинтер для неё будет 4A00h (учитывая обратный порядок байт). Ещё можно воспользоваться дизассеблером (ps2dis). Там иногда удаётся отследить поинтеры парой действий. Подсветить адрес начала строки, нажать пробел, а затем F3 для автоматического поиска ссылок на выделенный адрес. |
| Dizzy:
Поголовье больших букв снизь сразу - "Новая игра, Боевой клич, Режим битвы" и так далее. |
| ReeDeR:
--- Цитата: mrtest от 11 Июнь 2015, 09:06:10 ---Отличная игра. когда был еще сопляком, проходил ее вместе с друзьями, фана было хоть отбавляй. Афтар, оч прошу, переводи лучше USA версию. Все-таки 50fps не тру. Так же могу дать наводку на хакера, который разберет тебе игру под ключ. Только он за спасибо не работает. Обойдется в районе 4к. :) --- Конец цитаты --- Нет юса не катит.Там символов мало.В идеале вообще нужно японку переводить. |
| Yoti:
ReeDeR, большие буквы - соседи "Ы" - местами перепутаны. |
| ReeDeR:
--- Цитата: Yoti от 11 Июнь 2015, 12:56:16 ---ReeDeR, большие буквы - соседи "Ы" - местами перепутаны. --- Конец цитаты --- да :lol: И шрифт надо подправить. Но то всё фигня, надо разобраться с диалогами. Добавлено позже: --- Цитата: Mr2 от 11 Июнь 2015, 08:22:57 ---Ставь бряк на чтение поинтера "only if read" =0x80046855. Или анализируй код чтения строки, тогда поймёшь откуда берутся поинтеры. Код отлавливай по чтению первого символа строки "MemRead" =0x80046855. --- Конец цитаты --- Ты можешь подробнее о бряках?Какой дебаггер использовать?Вот у уменя эмуль Psx 1.13 там есть отладчик вроде. |
| ReeDeR:
Есть у кого идеи как может работать игровой скрипт в диалогах? Какие указатели выводят текст. Нужно изменить диалоговое пространство. Но изменяя длину слов увеличится длина диалога и стартовые коды диалогов сместятся и не будут работать. Скрипт диалога выглядит так [1ba0] [1a00] Текст диалога [0d00] Текст в новой строке [0d00] [0000] 1ba0 - это код названия диалога. В игре это выглядит как имя того кто говорит 1a00 - Это код СТАРТА диалога 0d00 - Это код переноса строки в диалоговом окне 0000 - Это код КОНЦА диалога. Мне нужно найти указатель который даёт команду старту диалога. Например если я изменяю адрес расположения 1ba0 , то диалог просто не стартует. Т.е Диалог похоже начиннается именно с Названия персонажа диалога 1da0. С дебаггером много провозился но понял мало. :neznayu: |
| Mr2:
--- Цитата: ReeDeR от 11 Июнь 2015, 13:17:35 ---Ты можешь подробнее о бряках? --- Конец цитаты --- Тут можно немножко почитать. --- Цитата: ReeDeR от 11 Июнь 2015, 13:17:35 ---Какой дебаггер использовать? --- Конец цитаты --- pcsx 1.5 with debugger |
| Mefistotel:
ReeDer, прикрепи файл с диалогами и английскую таблицу. |
| ReeDeR:
--- Цитата: Mefistotel от 16 Июнь 2015, 00:27:50 ---ReeDer, прикрепи файл с диалогами и английскую таблицу. --- Конец цитаты --- Вот посмотри. https://yadi.sk/d/SCqOmMj2hGkBB Добавлено позже: --- Цитата: Mr2 от 16 Июнь 2015, 00:14:23 ---Тут можно немножко почитать.pcsx 1.5 with debugger --- Конец цитаты --- Кстати не могу заставить его работать. Все плагины засунул в него ,настроил.Вылетает сразу при загрузке диска. Я нашел pSX 1.13 с r3000 деббагером. Этот вроде пашет. |
| paul_met:
--- Цитата: ReeDeR ---Т.е Диалог похоже начиннается именно с Названия персонажа диалога 1da0. --- Конец цитаты --- А чего гадать то? Берёшь и проверяешь - ставишь брейк на чтение по предполагаемым адресам. Вариантов не много, так что быстро найдёшь с какого адреса стартует диалог. |
| ReeDeR:
--- Цитата: paul_met от 16 Июнь 2015, 07:11:24 --- А чего гадать то? Берёшь и проверяешь - ставишь брейк на чтение по предполагаемым адресам. Вариантов не много, так что быстро найдёшь с какого адреса стартует диалог. --- Конец цитаты --- Надо же всё так просто :lol: Делал такое. Пытался найти какието связи и чтото не получилось. Вот поставил бряк на чтение первого байта в диалоге. Куда копать. |
| Mr2:
--- Цитата: ReeDeR от 16 Июнь 2015, 00:58:02 ---Кстати не могу заставить его работать. Все плагины засунул в него ,настроил.Вылетает сразу при загрузке диска. --- Конец цитаты --- Только с Digimon World PSX или с другими играми тоже? В любом случае эмулятор модульный, пробуй другие плагины. Смени Internal HLE Bios на любой другой. --- Цитата: ReeDeR от 16 Июнь 2015, 10:24:46 ---Вот поставил бряк на чтение первого байта в диалоге. Куда копать. --- Конец цитаты --- По коду смотри откуда читается адрес первого символа строки. Пример: Бряк срабатывает на этой строчке кода. LB v0, 0000(v1) ; v0 =первый символ строки, v1 =адрес первого символа строки. Далее тебе нужно отлавливать загрузку поинтера в v1, она естественно идёт раньше загрузки самого символа строки. |
| ReeDeR:
--- Цитата: Mr2 от 16 Июнь 2015, 15:24:23 ---Только с Digimon World PSX или с другими играми тоже? В любом случае эмулятор модульный, пробуй другие плагины. Смени Internal HLE Bios на любой другой.По коду смотри откуда читается адрес первого символа строки. Пример: Бряк срабатывает на этой строчке кода. LB v0, 0000(v1) ; v0 =первый символ строки, v1 =адрес первого символа строки. Далее тебе нужно отлавливать загрузку поинтера в v1, она естественно идёт раньше загрузки самого символа строки. --- Конец цитаты --- Эмуль не работает. Видимо староват он. Может несовместимость, у меня w7x64. Биос сразу ставил нормальный а не хле. С другими играми не пробывал. Другие то мне не нужны. Буду использвать pSX там есть дебаг хоть и не такой навороченный чтоли. Я помню что первая же интрукция у меня вылетает на NOP т.е там ничего. |
| paul_met:
--- Цитата: ReeDeR ---Эмуль не работает. Видимо староват он. Может несовместимость, у меня w7x64. --- Конец цитаты --- Работает он спокойно и на win 8.1 x64. Что-то у тебя там с системой. А дебаггер в PSX жутко неудобный и менее продвинутый. |
| ReeDeR:
--- Цитата: paul_met от 16 Июнь 2015, 17:27:36 --- Работает он спокойно и на win 8.1 x64. Что-то у тебя там с системой. А дебаггер в PSX жутко неудобный и менее продвинутый. --- Конец цитаты --- У тебя он есть? Может скинешь архивчик? |
| Навигация |
| Главная страница сообщений |
| Следующая страница |