Ковырнул тут на досуге игру. Задался интересным вопросом.
Суть такая. Игра использует системный шрифт ltn3.pgf и ltn5.pgf (точнее две разных игры.)
Есть ли возможность заменить этот шрифт через плагин. (не трогая flash0)?
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:/ в мод. библе записан прямо тупо так в открытом виде, а не как до этого?
ErikPshat, тебя не затруднит всё-таки проверить на реальной PSP модифицированный libfont? Неужели железу PSP пофиг, что путь к disc0:/ в мод. библе записан прямо тупо так в открытом виде, а не как до этого?
Щас попробую всё-таки запилить в образ мод.либфонт и проверить.
Ну а путь складывается по тому адресу в памяти flash0:/font/. В оригинале то место забито нулями специально для этих нужд. А т.к. по тому адресу я уже прописал новый путь, то он уже не затирается. Это можно проверить сдампив память с модифицированным либфонтом.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
riku.kh3, ну собсно проверил, всё работает. Подписанный и зашифрованный кастомный модуль отлично отрабатывает на PSP.
Только я шрифт туда подкинул свой Times New Roman сконверченный в ltn0.pgf - переименованный в jpn0.pgf.
Соответственно игра у меня японская и вместо шрифта я вижу прочерки, отображаются только английские слова и спец-символы типа - !?"
ErikPshat, тогда это объясняет, почему на эмуляторе путь переписывается назад на flash0, и все это китайское мамбо джамбо с написанием своего модуля
Кстати, я не понял, почему вдруг эмулятор использует шрифты из flash0, но так не должно быть. На эмуле так же должен либфонт отрабатывать и так же должен брать шрифт из образа.
Попробуй убрать из эмуля шрифт jpn0.pgf из папки совсем.
А может ты новый модуль не сохранил в образе игры? Или может шрифт туда забыл подкинуть?
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Кстати, я не понял, почему вдруг эмулятор использует шрифты из flash0, но так не должно быть. На эмуле так же должен либфонт отрабатывать и так же должен брать шрифт из образа.
Попробуй убрать из эмуля шрифт jpn0.pgf из папки совсем.
А может ты новый модуль не сохранил в образе игры? Или может шрифт туда забыл подкинуть?
Нет, собрал я всё правильно (несколько раз пробовал, ошибки быть не может). Видимо, эмулятор по-другому немного работает, и ему пофиг что там уже записано в памяти - поверх затирает.
Подписанный:
Неподписанный:
Что странно, китайское мамбо джамбо работает на одном из эмуляторов (ppsspp):
Но не работает на втором (jpcsp). Как на реальной PSP - тоже не знаю.
riku.kh3, эмм, это китайское мамбо действительно чудо из чудес
Как они так умудрились сконвертировать такую библу, там я вижу после концовки файла идёт ещё куча мусора, больше, чем сам продуктивный код.
Выбрось эту шнягу подальше.
И не понятно, что это у тебя на первых скринах и всех остальных пытается грузиться flash0:/font/zh_gb.pgf
Этого шрифта нет ни в игре, нигде. Либо ты сам где-то подмешал это китайское чудо с моим модулем вперемешку.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
ErikPshat, не, это эмулятор для своих системных нужд пытается и несуществующий шрифт добавить (там эмитация окошек для сейвов/загрузок где этот шрифт может использоваться, ввода текста и т.п.). Он вообще все существующие шрифты пытается грузить во всех играх.. В образе там все чистенько - только твой libfont.prx заменен и jpn0.pgf рядышком с ним.
riku.kh3, я вижу у китайцев такой хитрый путь: ms0:/iso/open_ms0
Они наверное подумали, что путь сработает и откроется ms0
Ага, и откуда они догадались такую строчку воткнуть ms0:/ISO/zh_gb.pgf
oldfont.prx - это вообще либа не от этой игры. То есть, как я понял, либа libfont.prx компилится только для одной игры, под которую она предназначена, на другой игре по идее она работать не должна. Это потому, что в самой либе прописано название игры, зашифрованное в заголовке ~SCE. В этом oldfont прописан заголовок от другой игры:
\yr=`c`0~{tx...22222GIDD/
А у твоей игры заголовок:
\yr=`c`0~{tx...22222JFDD/
Просто введи в поиске декриптованного модуля значение 22222JFDD и ты выйдешь на этот код.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Все, понятно почему на эмуляторах с правильным libfont.prx шрифт не грузится откуда положено. Они попросту не используют libfont.prx вообще, вместо него там в самом эмуляторе грузится рутина. Попробовал заменить libfont.prx на пустышку забитую мусором, и оба эмулятора как ни в чем не бывало запустили игру:
riku.kh3, ну на первых скринах я вижу, что вроде бы грузится disc0:/PSP_GAME/USRDIR/X9DULE/libfont.prx
Там кругом видно, что путь отрабатывает.
И шрифт должен браться оттуда же disc0:/PSP_GAME/USRDIR/X9DULE/jpn0.pgf
Ты посмотри внимательнее в логах, может наряду с другими шрифтами он грузится где-то в конце?
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
ErikPshat, на первых то скринах да, видно что 'вроде бы' грузится, но на самом деле эмуль определяет "что" это такое пытается грузится и скипает, перенаправляя на свой код рутины по работе со шрифтами. Логи я внимательно все пересмотрел - disc0:/PSP_GAME/USRDIR/X9DULE/jpn0.pgf не грузится 100%. Да и говорю, пустым файлом заменил libfont.prx в игре, а она все так же как ни в чем не бывало работает и шрифт все так же отображается.
То есть грубо говоря даже если libfont.prx и грузится, эмулятор его поверх своим кодом все-равно перезаписывает. Как то так, в общем.
riku.kh3, ну ладно, тогда значит понятно, что нифига не понятно, почему эмуляторы подсовывают свои шрифты
В общем думаю проблему мы решили, ведь игру планируется запускать на PSP. И в общем всё на ней работает, как положено.
Ну а проблемы со шрифтами при сохранении - это уже из другой оперы.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
riku.kh3, ну ладно, тогда значит понятно, что нифига не понятно, почему эмуляторы подсовывают свои шрифты
В общем думаю проблему мы решили, ведь игру планируется запускать на PSP. И в общем всё на ней работает, как положено.
Да, тут все отлично.
Сообщение от ErikPshat
Ну а проблемы со шрифтами при сохранении - это уже из другой оперы.
Проблем со шрифтами при сохранении не будет, если суметь существующие буковки по ширине уменьшать научиться. Для этого надо скорее всего сам pgf ковырять. А так да, если колхозным путем пойти и перерисовать буквы перекидав их местами и вместо одной из них сделать пробел, то при сохранении будет каша отображаться.. ну и бонусом перенос слов, скорее всего, перестанет работать.
ErikPshat, надпись 'Converted Edition' у тебя на скрине в обычной ascii кодировке с нормальным $20 пробелом, текст для таких системных сообщений берется из самого EBOOT.BIN.
А на втором скрине текст и пробелы в shiftjis 2-байтовой кодировке:
Vot takaya vot kodirovka
В самой игре если использовать в диалогах ascii с обычными $20 пробелами то игра будет крэшится при попытке сохраниться. То есть в идеале бы сократить ширину shiftjis буковок и пробела, чтобы они выглядели как обычно.
Получается нужно как-то Shift-JIS сконвертировать из TTF.
А в TTF можно подкорректировать пробел покороче с помощью редактора шрифтов, дома на компе валяется такой.
Это у Японцев в этой кодировке всегда расстояния такие, чтобы иероглифы не сливались, ну и другие символы языков так же отрисованы.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
ErikPshat, с самим TTF я как только не игрался.. ширину уменьшать пробовал, в самой windows и любыми программами где этот шрифт используется как положено буковки уже становятся и shiftjis пробел в два раза меньше как надо.. но после конвертирования в pgf в самой игре совсем все не так.. Пробел как большим был так большим и остается, из ascii буквы если все глифы удалить - интервала вообще она перестает создавать.. а если из shiftjis символа все глифы удалить - в точности все до наоборот..
riku.kh3 добавил 08.05.2014 в 23:20
Сообщение от ErikPshat
Это у Японцев в этой кодировке всегда расстояния такие, чтобы иероглифы не сливались, ну и другие символы языков так же отрисованы.
Скрины которые я выкладывал с русским текстом все в том же shiftjis'е и там никаких интервалов нет. То есть не статическая эта ширина, и должна быть где-то таблица ширины для каждого символа.