PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   Русификация игр и софта для PSP (https://www.pspx.ru/forum/forumdisplay.php?f=190)
-   -   Работаем со смещениями - расширяем горизонты! (https://www.pspx.ru/forum/showthread.php?t=83903)

ErikPshat 15.05.2014 14:07

Вложений: 1
riku.kh3, в шапке пример не совсем примитивный. Там самый обычный PRX, как и все нормальные PRX-ы. EBOOT.BIN - это так же файл PRX, в распакованном виде ELF. Просто видимо в этой игре разрабы нахитрили. А может они все такие на UMD.

В общем я же дампил тексты из памяти. Так вот, эти тексты складываются в самый конец этого EBOOT.BIN эльфа. И сам файл EBOOT.BIN складывается в памяти в рабочий вид, он же состоит в основном из рабочего программного кода, только в конец складывает результаты работы по ходу продвижения игры.

Я подглядел, как он складывается и могу дать тебе разгадку явления ))
  1. Берёшь свой декриптованный файл EBOOT.BIN
  2. От позиции 0x18 до позиции 0x1018 (ровно 0x1000) удаляешь всю эту область.
  3. Получаешь готовый рабочий файл и можешь его прогонять через prxTool.

В позиции 0x225E60 файл заканчивается, а в дампе туда приклеивается рабочая часть игры.
Если откроешь дамп в текстовом редакторе в кодировке Shift-JIS, то почти в самом конце увидишь текст, на момент которого был снят дамп.
Сам дамп памяти и готовый EBOOT.BIN приаттачиваю.

riku.kh3 15.05.2014 14:26

ErikPshat, да, prxtool теперь хоть и разбирает, но 'data ref' для этих фраз вообще не находит. Вот например одна из фраз в EBOOT.BIN декриптованом 1ECF7C-1ECFAB (в LITBIS дампе 1EBF7C-1EBFAB). Как ее хотя бы на байт вперед или назад сместить? Ничего что бы на ее начало указывало не находится, как в примере из шапки. :scratch_one-s_head:

ErikPshat 15.05.2014 15:22

riku.kh3, а у меня PRXTool теперь с этим файлом вообще не работает ))) Так что видимо что-то не так с ибутом, это не выход.

Смещение узнаётся и без PRXTool-а. Нужно адрес позиции вбить в поиск и он выведет на то смещение. Но файл у нас получился не верный, поэтому это ни к чему не приведёт. Думаю нужно брать оригинальный декриптованный файл и с ним работать. Там заголовок не 0x60, как обычно, а 0x1018, поэтому его нужно отнимать.

В оригинале думаю это позиция текста 0x1EDF70. И там нет указателей на текст. Скорее всего указатели в скриптпаке или их нет совсем между текстами. Они могут быть на начало каждой группы текстовых диалогов.
Я там вижу, что каждый диалог начинается с 8175 и заканчивается 8176.
Затем каждый диалог просто отделяется 2-умя нулями 0000 - это и есть цепная реакция между диалогами, их отделяющая.
А уже между группами диалогов идёт 4 нулевых байта 00000000.
Таким образом они по-очереди наверное и раскладываются без всяких указателей.

Получается ты можешь двигать смещения внутри всех групп диалогов, но главное не сдвигать программный код до и после всех диалогов.

riku.kh3 15.05.2014 15:41

ErikPshat, там это рандомные фразы, которые персонажи говорят в мини-игре с бейсболом. Между ними последовательности точно нет, поэтому должны быть указатели на их начало.. И это точно не в скриптпаке.

Цитата:

Сообщение от ErikPshat (Сообщение 1087025)
Я там вижу, что каждый диалог начинается с 8175 и заканчивается 8176.
Затем каждый диалог просто отделяется 2-умя нулями 0000 - это и есть цепная реакция между диалогами, их отделяющая.

Не, 8175 - это открывающаяся скобочка диалога (что-то вроде русских ковычек) и 8176 закрывающаяся скобочка. Свободные нули можно свободно забивать своим текстом, и он отображается. Главное чтобы между фразами один байт '00' был разделительный. То есть, в этом плане, на пример из шапки похоже.

ErikPshat 15.05.2014 15:57

Цитата:

Сообщение от riku.kh3 (Сообщение 1087026)
Главное чтобы между фразами один байт '00' был разделительный.

Ну вот это главное. Они просто перестраховались и сделали 2 нулевых байта.
А разве нельзя один диалог, чтобы залазил на другой, но между ними оставлять разделяющий байт. Просто один диалог будет длиннее, а другой короче. То есть, когда поинтер следующего диалога сдвигается от своего начала.

riku.kh3 15.05.2014 16:00

ErikPshat, только что проверил в наглую сдвинув этот самый разделяющий '00'. Фраза которая увеличилась отображается нормально ровно до '00'. Но следующая за ней фраза, за счет которой увеличил предыдущую, попросту начинается с конца предыдущей фразы пока не упирается в '00'. То есть вторая фраза испортилась и отображает лишь маленький кусочек конца предыдущей фразы.

ErikPshat 15.05.2014 16:05

riku.kh3, получается поинтеры на каждую фразу где-то есть. Нужно поискать ))) они могут быть и в каком-нибудь отдельном куске.
Собсно поинтеры обычно заметно, их видно по стройному ряду кодов, плавно увеличивающихся. Обычно идёт 4 байта смещения и следом 4 служебных байта.

riku.kh3 15.05.2014 16:19

Вложений: 1
Не знаю, может помочь или нет, тут ELF'ы от PS3 и PS2 версии этой игры. В PS3 ELF'е эта фраза находится по 1D17D0-1D17FF, а в PS2 по 371988-3719B7.

Для PS2 ELF'ов есть тоже дизассамблер, называется ps2dis099_23, но я в нем тоже ничего, что бы указывало на начало этой фразы не нахожу.

Yoti 28.12.2024 00:32

Пока я сюда заглянул, дополню: по большей части инструкция написана для перевода homebrew, которые выводят текст отладочным шрифтом (вот этим вот мелким из пикселей). Как можно понять из комментариев, замена текста в коммерческих играх таким методом, как правило, невозможна. Однако, если кто-то всё же захочет изучить строение файла игры, то нужно работать с EBOOT.BIN файлом, который необходимо предварительно декриптовать при помощи pspdecrypt. Однако, доступная публично версия по ссылке достаточно устаревшая и может не понять какие-то методы шифрования (криптовки). Когда и если обновлённая версия будет доступна для всех, я постараюсь не забыть обновить этот (или добавить новый) комментарий со ссылкой.

Re-Education 28.12.2024 14:53

Цитата:

Сообщение от Yoti (Сообщение 1292442)
предварительно декриптовать при помощи pspdecrypt.

Ppsspp уже тоже умеет декриптованый eboot.bin сохранять, надо включить в инструментах разработчика

Yoti 30.12.2024 19:43

Re-Education,
да, но декриптер можно завернуть в скрипт удобный, например.

Yoti 10.02.2025 00:03

Вложений: 2
Цитата:

Сообщение от Yoti (Сообщение 1292442)
Когда и если обновлённая версия будет доступна для всех, я постараюсь не забыть обновить этот (или добавить новый) комментарий со ссылкой.

Свежая версия от скромного русского друга.

Вложение 19322


Текущее время: 03:39. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.