Вложений: 1
riku.kh3, в шапке пример не совсем примитивный. Там самый обычный PRX, как и все нормальные PRX-ы. EBOOT.BIN - это так же файл PRX, в распакованном виде ELF. Просто видимо в этой игре разрабы нахитрили. А может они все такие на UMD.
В общем я же дампил тексты из памяти. Так вот, эти тексты складываются в самый конец этого EBOOT.BIN эльфа. И сам файл EBOOT.BIN складывается в памяти в рабочий вид, он же состоит в основном из рабочего программного кода, только в конец складывает результаты работы по ходу продвижения игры. Я подглядел, как он складывается и могу дать тебе разгадку явления ))
В позиции 0x225E60 файл заканчивается, а в дампе туда приклеивается рабочая часть игры. Если откроешь дамп в текстовом редакторе в кодировке Shift-JIS, то почти в самом конце увидишь текст, на момент которого был снят дамп. Сам дамп памяти и готовый EBOOT.BIN приаттачиваю. |
ErikPshat, да, prxtool теперь хоть и разбирает, но 'data ref' для этих фраз вообще не находит. Вот например одна из фраз в EBOOT.BIN декриптованом 1ECF7C-1ECFAB (в LITBIS дампе 1EBF7C-1EBFAB). Как ее хотя бы на байт вперед или назад сместить? Ничего что бы на ее начало указывало не находится, как в примере из шапки. :scratch_one-s_head:
|
riku.kh3, а у меня PRXTool теперь с этим файлом вообще не работает ))) Так что видимо что-то не так с ибутом, это не выход.
Смещение узнаётся и без PRXTool-а. Нужно адрес позиции вбить в поиск и он выведет на то смещение. Но файл у нас получился не верный, поэтому это ни к чему не приведёт. Думаю нужно брать оригинальный декриптованный файл и с ним работать. Там заголовок не 0x60, как обычно, а 0x1018, поэтому его нужно отнимать. В оригинале думаю это позиция текста 0x1EDF70. И там нет указателей на текст. Скорее всего указатели в скриптпаке или их нет совсем между текстами. Они могут быть на начало каждой группы текстовых диалогов. Я там вижу, что каждый диалог начинается с 8175 и заканчивается 8176. Затем каждый диалог просто отделяется 2-умя нулями 0000 - это и есть цепная реакция между диалогами, их отделяющая. А уже между группами диалогов идёт 4 нулевых байта 00000000. Таким образом они по-очереди наверное и раскладываются без всяких указателей. Получается ты можешь двигать смещения внутри всех групп диалогов, но главное не сдвигать программный код до и после всех диалогов. |
ErikPshat, там это рандомные фразы, которые персонажи говорят в мини-игре с бейсболом. Между ними последовательности точно нет, поэтому должны быть указатели на их начало.. И это точно не в скриптпаке.
Цитата:
|
Цитата:
А разве нельзя один диалог, чтобы залазил на другой, но между ними оставлять разделяющий байт. Просто один диалог будет длиннее, а другой короче. То есть, когда поинтер следующего диалога сдвигается от своего начала. |
ErikPshat, только что проверил в наглую сдвинув этот самый разделяющий '00'. Фраза которая увеличилась отображается нормально ровно до '00'. Но следующая за ней фраза, за счет которой увеличил предыдущую, попросту начинается с конца предыдущей фразы пока не упирается в '00'. То есть вторая фраза испортилась и отображает лишь маленький кусочек конца предыдущей фразы.
|
riku.kh3, получается поинтеры на каждую фразу где-то есть. Нужно поискать ))) они могут быть и в каком-нибудь отдельном куске.
Собсно поинтеры обычно заметно, их видно по стройному ряду кодов, плавно увеличивающихся. Обычно идёт 4 байта смещения и следом 4 служебных байта. |
Вложений: 1
Не знаю, может помочь или нет, тут ELF'ы от PS3 и PS2 версии этой игры. В PS3 ELF'е эта фраза находится по 1D17D0-1D17FF, а в PS2 по 371988-3719B7.
Для PS2 ELF'ов есть тоже дизассамблер, называется ps2dis099_23, но я в нем тоже ничего, что бы указывало на начало этой фразы не нахожу. |
Пока я сюда заглянул, дополню: по большей части инструкция написана для перевода homebrew, которые выводят текст отладочным шрифтом (вот этим вот мелким из пикселей). Как можно понять из комментариев, замена текста в коммерческих играх таким методом, как правило, невозможна. Однако, если кто-то всё же захочет изучить строение файла игры, то нужно работать с EBOOT.BIN файлом, который необходимо предварительно декриптовать при помощи pspdecrypt. Однако, доступная публично версия по ссылке достаточно устаревшая и может не понять какие-то методы шифрования (криптовки). Когда и если обновлённая версия будет доступна для всех, я постараюсь не забыть обновить этот (или добавить новый) комментарий со ссылкой.
|
Цитата:
|
Re-Education,
да, но декриптер можно завернуть в скрипт удобный, например. |
Вложений: 2
Цитата:
Вложение 19322 |
Текущее время: 03:39. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.