Ковырнул тут на досуге игру. Задался интересным вопросом.
Суть такая. Игра использует системный шрифт ltn3.pgf и ltn5.pgf (точнее две разных игры.)
Есть ли возможность заменить этот шрифт через плагин. (не трогая flash0)?
Другие консоли: Все PSP, все PSV, SCPH-1002, SCPH-102, SCPH-77008, CECH-4208C, SCPH-1000R
Регистрация: 19.03.2008
Адрес: Россия
Сообщений: 5,742
Вы сказали Спасибо: 819
Поблагодарили 3,845 раз(а) в 2,017 сообщениях
Сила репутации: 1
Репутация: 3845 
(репутация неоспорима)
Сообщение от lupus
Спс. Тут ещё такая идея возникла, можно ли запилить не плагин, а модуль, чтобы его в образ класть вместо eboot.pbp, и сначала он грузился, а затем родной eboot?
Заморочился вопросом. В общем, взял самый обычный usermode eboot.pbp, который грузит kernelmode prx. Перегнал его через eboot2iso, а также через pbp2iso. Оба варианта работают. То есть можно спокойно написать самую обычную программу, а затем просто DATA.PSP из неё использовать как EBOOT.BIN. Если всё правильно сделано, то оно без проблем заработает.
Хочу также заменить шрифт в Planetarian, но вот незадача.
libfont.prx декриптовал успешно, но prxtool наотрез отказывается его дизассемблировать
Кто знает, в чём может быть проблема?
Ниже прикреплю оригинальную и декриптованную либу. libfont.zip
P.S.: причина замены шрифта — судя по дампу памяти в эмуляторе, в игре используется шрифт jpn0.pgf, при вставке в скрипт русского текста на выхлопе у кириллицы получается моноширинный шрифт, что не есть хорошо.
Yoti, благодарю.
Решил разобраться, что было не так. Ошибка, что указана на скриншоте мало о чём говорит, т.к. заплатки стояли.
У меня всего-навсего оказался старый/нерабочий дистрибутив prxtool. Прекрасно с модулем справился билд, выложенный в этой теме.
Да, через плагин конечно будет работать.. но немного попрактичней хотелось бы.. готовый проект страдает:
Да и в патч это как бы тоже не добавишь, а форсировать ради одной игры устанавливать плагин всех подряд точно никто не будет.
UPD:
Нашел какой-то самопальный PRX, написанный китайцами. Ложится вместо libfont.prx, и в свою очередь грузит оригинальный файл переименованный в oldfont.prx и функцией fontfuck подменяет путь к шрифту)) Шрифт только там другой - zh_gb.pgf
riku.kh3, ты там скачай готовые шрифты и либфонты, там ниже в сообщениях я выложил готовый пак. Сравни их и обнаружишь то место, где я менял пути. Да, файлы обратно зашифрованы, поэтому их нужно декриптовать.
Сейчас вспомнить трудно, но по-моему пути в оригинале отображаются в неявном виде, т.е. они как-то хитро завуалированы. Я эти смещения угадал, когда сдампил через дампер памяти этот модуль libfont.prx. В памяти он складывает путь в файле.
Короче, запускаешь игру, чтобы отображался шрифт в игре в нужном месте, например в меню настроек игры или в диалогах. И в этот момент дампишь память. Я вроде использовал дампер memdump от эмм... нашего разработчика, от фузы, плин памяти совсем нет )) Он лежит на форуме в какой-то теме.
Сейчас я уезжаю и инета не будет наверное, так что, если сам не справишься, то смогу помочь только спустя неопределённое время. Но думаю, если почитаешь диалоги на предыдущей странице, то сам поймёшь.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Это не тот вид дампа. Там вижу только ссылки на модули, например так: disc0:/PSP_GAME/USRDIR/X9DULE/libfont.prx
Но вот самого модуля libfont.prx я в дампе не вижу.
Ищи дампер от Andy_maN. Он дампит все загруженные модули по-отдельности.
Сообщение от riku.kh3
Вот досада, реальной PSP нет, декриптовать сравнить не могу.
Ну можно на Вите сделать или кого-нибудь попросить, например у Кулера есть PSP, у vash есть и много у кого есть
ErikPshat, спасибо. Подписать его - и вообще будет идеально. Собираюсь отправить его автору английского порта, мы с ним уже общались.
По поводу самого шрифта еще что говорил.. Так выглядят русские буковки в родном jpn0.pgf:
Но при попытке сохранится, игра крэшится.. скорее всего из-за ASCII пробелов ($20), которые движок игры принимает за скриптовые команды.. С shiftjis пробелами все работает нормально, но выглядит так:
Я пробовал играться с TTF шрифтом, и там свободно получается изменить ширину любой буквы и нужного пробела... но после конвертации в через ttf_pgf.exe, в самой игре ширина уже не становится.. то есть, думаю, либо она прописана в самом pgf и ttf_pgf при конвертации всегда вставляет ее статичное значение.. либо игра вставляет этот интервал после самой буквы. Как-то так.
Перевод PC-версии на русский кстати ведется тут: http://notabenoid.com/book/47139/
Если с техническими проблемами разобраться можно было бы организовать PSP версию.
riku.kh3, в архиве я положил свой jpn0.pgf - это не родной. Ты его пробовал? TTF2PGF ты использовал мою сборку?
И кстати, на английском порте тоже видно, что идёт 2-ой пробел:
Сообщение от riku.kh3
игра крэшится.. скорее всего из-за ASCII пробелов ($20)
А что если пробелы 0x20 подменить на другой код, например подглядеть в Shift-JIS?
Ну собственно получается та же история, как в предыдущем переводе с Лунаром. Там так же использовались служебные символы в русской кодировке. Эти символы можно все вычислить по коду переводимого файла и просто не использовать их, делать подмену из другого диапазона, либо в самом шрифте переместить буквы в другую область.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
riku.kh3, в архиве я положил свой jpn0.pgf - это не родной. Ты его пробовал? TTF2PGF ты использовал мою сборку?
Да, с ним (программа тоже оттуда), и с другим заведомо правильно собранными jpn0.pgf (у меня есть красивенький курсивчиком, там сразу же разницу видно). Да и по логам эмулятора видно что он грузится из flash0:/fonts/jpn0.pgf. Но если на реальном железе как положено работает, то не суть важно.
Сообщение от ErikPshat
И кстати, на английском порте тоже видно, что идёт 2-ой пробел:
Ага, английские буквы тоже в двухбайтовом shiftjis'е.
Сообщение от ErikPshat
А что если пробелы 0x20 подменить на другой код, например подглядеть в Shift-JIS?
С этой кодировкой я очень хорошо знаком, там просто нету других пробелов.. коды неиспользуемых символов тоже как надо не отображаются.
Сообщение от ErikPshat
Ну собственно получается та же история, как в предыдущем переводе с Лунаром. Там так же использовались служебные символы в русской кодировке. Эти символы можно все вычислить по коду переводимого файла и просто не использовать их, делать подмену из другого диапазона, либо в самом шрифте переместить буквы в другую область.
Как вариант конечно, но там в окошке сохранения фраза на которой сейв делается отображается системными шрифтами, биллиберда будет несовсем эстетичная, конечно, но как вариант.