Хочу также заменить шрифт в Planetarian, но вот незадача.
libfont.prx декриптовал успешно, но prxtool наотрез отказывается его дизассемблировать
Кто знает, в чём может быть проблема?
Ниже прикреплю оригинальную и декриптованную либу. libfont.zip
P.S.: причина замены шрифта — судя по дампу памяти в эмуляторе, в игре используется шрифт jpn0.pgf, при вставке в скрипт русского текста на выхлопе у кириллицы получается моноширинный шрифт, что не есть хорошо.
Yoti, благодарю.
Решил разобраться, что было не так. Ошибка, что указана на скриншоте мало о чём говорит, т.к. заплатки стояли.
У меня всего-навсего оказался старый/нерабочий дистрибутив prxtool. Прекрасно с модулем справился билд, выложенный в этой теме.
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
Ну собственно получается та же история, как в предыдущем переводе с Лунаром. Там так же использовались служебные символы в русской кодировке. Эти символы можно все вычислить по коду переводимого файла и просто не использовать их, делать подмену из другого диапазона, либо в самом шрифте переместить буквы в другую область.
Как вариант конечно, но там в окошке сохранения фраза на которой сейв делается отображается системными шрифтами, биллиберда будет несовсем эстетичная, конечно, но как вариант.
Да, через плагин конечно будет работать.. но немного попрактичней хотелось бы.. готовый проект страдает:
Да и в патч это как бы тоже не добавишь, а форсировать ради одной игры устанавливать плагин всех подряд точно никто не будет.
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 есть и много у кого есть
riku.kh3, ну вообщем вот подписанный тем же родным кирком ~SCE и ~PSP либфонт, надеюсь не напортачил и должен работать...
По заголовку и размеру он ничем не отличается от оригинала. Тело же конечно уже другое 0x150 + 0x40, но подписано этим же родным кирком и заголовком.
Ах да, мой шрифт, который я выкладывал в предыдущем архиве, ловит кириллицу в юникоде и в однобайте. Так что можно использовать как двубайтную кодировку юникода, так и однобайтную win-1251 0xC0 = А.
А ты точно уверен, что шрифт именно jpn0.pgf? А то вдруг там какой-нибудь ltn12.pgf... как в Лунаре.
В общем шрифт должен подхватываться из папки disc0:/PSP_GAME/USRDIR/X9DULE/. Название самого шрифта не указывается в пути, его даже не видно при дампе памяти, он как-то странно там отбирается по непонятному механизму, но в дампе sceFont_Library виден шрифт kr0.pgf
riku.kh3, ну вообщем вот подписанный тем же родным кирком ~SCE и ~PSP либфонт, надеюсь не напортачил и должен работать...
По заголовку и размеру он ничем не отличается от оригинала. Тело же конечно уже другое 0x150 + 0x40, но подписано этим же родным кирком и заголовком.
Ах да, мой шрифт, который я выкладывал в предыдущем архиве, ловит кириллицу в юникоде и в однобайте. Так что можно использовать как двубайтную кодировку юникода, так и однобайтную win-1251 0xC0 = А.
А ты точно уверен, что шрифт именно jpn0.pgf? А то вдруг там какой-нибудь ltn12.pgf... как в Лунаре.
В общем шрифт должен подхватываться из папки disc0:/PSP_GAME/USRDIR/X9DULE/. Название самого шрифта не указывается в пути, его даже не видно при дампе памяти, он как-то странно там отбирается по непонятному механизму, но в дампе sceFont_Library виден шрифт kr0.pgf
В эмуляторе flash0 папочка с программой лежит и там шрифты, которые на PSP используются хранятся. Если в ней подменить jpn0.pgf, то соответственно всё тут же меняется.. да и как он по-другому может называться просто не представляю kr0.pgf это что-то корейское, смею предположить.
ErikPshat, тебя не затруднит всё-таки проверить на реальной PSP модифицированный libfont? Неужели железу PSP пофиг, что путь к disc0:/ в мод. библе записан прямо тупо так в открытом виде, а не как до этого?