PSPx форум

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

lis5131 17.12.2012 15:02

Системный шрифт PSP
 
Ковырнул тут на досуге игру. Задался интересным вопросом.
Суть такая. Игра использует системный шрифт ltn3.pgf и ltn5.pgf (точнее две разных игры.)
Есть ли возможность заменить этот шрифт через плагин. (не трогая flash0)?

Yoti 18.12.2012 14:47

lis5131,
ну да, можно патчить в оперативке. Но много проще, как по мне, просто перехексить номер.

lis5131 20.12.2012 11:20

Цитата:

Сообщение от Yoti (Сообщение 1058961)
lis5131,
ну да, можно патчить в оперативке. Но много проще, как по мне, просто перехексить номер.

А можно поподробней.
Про вариант перехексить номер - где это искать?
И про второй вариант как заменить в памяти?

Yoti 20.12.2012 18:49

Цитата:

Сообщение от lis5131 (Сообщение 1059073)
Про вариант перехексить номер - где это искать?

Так в исполняемом бинарнике, чисто по идее же.

Цитата:

Сообщение от lis5131 (Сообщение 1059073)
И про второй вариант как заменить в памяти?

Ну, либо найти адрес модуля и патчить по смещению, либо подменять функцию на свою попяченую.

lis5131 20.12.2012 19:19

Цитата:

Сообщение от Yoti (Сообщение 1059134)
Так в исполняемом бинарнике, чисто по идее же.


Ну, либо найти адрес модуля и патчить по смещению, либо подменять функцию на свою попяченую.

Дело в том что я там не нахожу его - шрифт. Пробовал распаковывать файлы prx psp отказалась распаковывать.

frostegater 21.12.2012 14:46

lis5131,

flash0 содержит шрифты:
Код:

jpn0.pgf
kr0.pgf
ltn0.pgf
ltn1.pgf
ltn2.pgf
ltn3.pgf
ltn4.pgf
ltn5.pgf
ltn6.pgf
ltn7.pgf
ltn8.pgf
ltn9.pgf
ltn10.pgf
ltn11.pgf
ltn12.pgf
ltn13.pgf
ltn14.pgf
ltn15.pgf

Ты можешь похексить, т.е. изменить путь хекс-редактором (WinHex или HEXWorkshop, я лично первое использую).
А можно патчить виртуально при помощи дополнительного модуля, но это для ТРУЪ, кто силён в MIPS-е, т.к. нужно патчить не строку в датаспейсе, а указатель в кодоспейсе. Да и не целесообразно для твоей цели, не будешь же ты барахло грузить вместе с игрой.

Поэтому изменяй путь до файла внаглую и всё. Шрифты можешь грузить свои как из flash0, так и с флешки (во flash0 они отличаются только языковым набором). Путь к флешке: "ms0:/" (например "ms0:/lol.pgf"). Главное не лезь за размеры существующей строки, если же место осталось - забей нулями лишнюю часть.

lupus 21.12.2012 19:11

Всё не та просто, тупо перехексить скорее всего не выйдет, я как-то тоже разбирал игрушку, в бинарниках ничего не нашёл, хотя и декриптовал их. Скорее всего надо дизасмить.
Хотя как знать, может и повезёт.

lupus 21.12.2012 19:52

Ещё вспомнил, в заброшенном переводе монстрхантера GH положил свой шрифт с собственной таблицей в корень образа и подменил ссылку на него, чтобы не из ф0 читался. Только там тоже тупо перехексить не вышло, емнип он дизасмил бинарник, чтобы найти адреса, но порядок действий я не уточнял, а теперь его днём с огнём не сыщешь :/

lis5131 21.12.2012 20:48

Сразу возник вопрос что считать запускным файлом
Цитата:

0000027 , \UMD_DATA.BIN
0000032 , \PSP_GAME\SYSDIR\EBOOT.BIN
0000560 , \PSP_GAME\SYSDIR\UPDATE\PARAM.SFO
0000576 , \PSP_GAME\SYSDIR\UPDATE\EBOOT.BIN
0004672 , \PSP_GAME\SYSDIR\UPDATE\DATA.BIN
0021056 , \PSP_GAME\PARAM.SFO
0021072 , \PSP_GAME\PIC0.PNG
0021104 , \PSP_GAME\PIC1.PNG
0021200 , \PSP_GAME\ICON0.PNG
0021216 , \PSP_GAME\ICON1.PMF
0021456 , \PSP_GAME\SYSDIR\BOOT.BIN
0021984 , \PSP_GAME\USRDIR\resource0.bin
0021984 , \PSP_GAME\USRDIR\resource0.bin - вся игра содержится здесь.

Я в памяти псп нахожу свободно ltn3.pgf и ltn5.pgf и ltn12.pgf

http://pix.academ.org/img/2012/12/21...43f692bfaf.jpg

А вот в образе нет.
Взять например lunar
Там все перепаковано - это не важно - гимны нашел текст нашел, а вот шрифт ltn12.pgf, можно конечно перевести и сделать замену шрифта во флеш0. Но хотелось бы без этого обойтись.

frostegater 22.12.2012 08:13

lis5131,
Код:

\PSP_GAME\SYSDIR\EBOOT.BIN
это исполняемый файл


Если не найдёшь строки ms0:/ и с ней не выйдет, то дизасмь, но тут уже надо быть сильным в MIPS-е. Было бы у меня время я бы разобрался со шрифтом.
Ищи место загрузки шрифта. Можно искать по указателю (откуда вызывается строка) и считать алгоритм.

Мои предположения (как бы сделал я на месте авторов):
Скорее всего строка просто собирается из различных частей или ltnX.pgf это всего лишь маркировка.
Но мне кажется, что в движке игры где-то прописан путь flash0:/font/, а из игры вызывается функцией с аргументом ltn12.pgf, в движке строка склеивается и получается полный путь.

P.S. Измени ltn12.pgf на jpn0.pgf (не забудь зануллить остаток строки) и посмотрим что будет со шрифтом. Если изменится или заглючит, то можно двигать дальше.

ErikPshat 22.12.2012 09:09

Что за игра хоть, может вот эта: http://ru.playstation.com/psn/games/...-STAR-HARMONY/
Тут скриншотики: http://ru.playstation.com/ws/mp/inte...-STAR-HARMONY/

А то тупо гадать, а может там, а может здесь, никто толком не подскажет, пока сам не посмотрит и не найдёт.

lis5131 22.12.2012 10:58

Да игра Lunar Silver Star Harmony psp, я же написал (lunar)
А какой дизассемблер есть для PSP. У меня есть дизик для PSX и компа. Они разные. Если можно название дизассемблер дайте?

frostegater 22.12.2012 11:13

lis5131, prxtool

lis5131 22.12.2012 12:25

Прикол
Цитата:

\PSP_GAME\SYSDIR\EBOOT.BIN
В лунаре. Забит 00.

frostegater 22.12.2012 14:09

lis5131, тогда BOOT.BIN

lis5131 22.12.2012 17:14

Да. Похоже он упакован. Не чего не найти.

frostegater 22.12.2012 17:32

lis5131, если начинается с ~PSP, то с 151 оффсета начинается GZ архив. Выдели всё с него и до конца, потом в новый файл, распакуй. Получишь ELF файл, там всё чисто.

lis5131 22.12.2012 18:43

Цитата:

Сообщение от frostegater (Сообщение 1059341)
lis5131, если начинается с ~PSP, то с 151 оффсета начинается GZ архив. Выдели всё с него и до конца, потом в новый файл, распакуй. Получишь ELF файл, там всё чисто.

Или я тормажу или.... Вообщем не чего не выходит. Начинается на psp

EBOOT.BIN

lupus 22.12.2012 20:27

Prxdecryptor в помощь. Я им обычно распаковываю. Если бинарник закриптован ключём, то руками вынуть gzip в хексе не выйдет. Сам глянуть не могу, т.к. сижу с телефона и домой приеду только завтра.
В принципе подойдёт любой софт, который использовали для декрипта и патчинга игр под старый прошивки. Только патчить не нужно :)
А потом искать или дизасмить prxtool-ом.

lis5131 22.12.2012 21:03

Да. Действительно только Prxdecryptor пакуется.
Вот файл ELF и дизик его
Не какого упоминания про font и флеш0 я не нашел.
Только disc0 и ms0.

ErikPshat 23.12.2012 00:17

Цитата:

Сообщение от lis5131 (Сообщение 1059326)
Да игра Lunar Silver Star Harmony psp, я же написал (lunar)

Ну я так сразу же и догадался по первым же результатам поиска:

Скрин
[IMG]http://img161.**************/img161/3578/lunarsilverstarstoryntsnq6.jpg[/IMG]

lis5131 23.12.2012 00:44

Немного не такой.
http://pix.academ.org/img/2012/12/23...390584bb0d.jpg

Вот такой.

ErikPshat 23.12.2012 11:14

Цитата:

Сообщение от lis5131 (Сообщение 1059371)
Немного не такой.
Вот такой.

КЭП, я читать умею, что выше писалось :)
А ваще, с самого начала вопрос был задан НИАЧЁМ и получил ты ответы такие же НИАЧЁМ. Зачем крутить вокруг да около и гадать на кофейной гуще?

Цитата:

Сообщение от lis5131 (Сообщение 1059331)
Прикол
Цитата:

\PSP_GAME\SYSDIR\EBOOT.BIN
В лунаре. Забит 00.

Это только означает, что в образе кто-то поковырялся и поменял местами файлы, и возможно, ещё и пропатчил Prometheus-ом.
  • EBOOT.BIN - главный экзешник программы.
  • BOOT.BIN - забитый нулями кэш, равный байт-в-байт по размеру декриптованного EBOOT.BIN.
Далее по делу...
Не поленился, скачал и глянул образ. Пока имею следующие данные:
  • В образе зашифрованы следующие файлы, которые нужно было для начала расшифровать и посмотреть (декриптованные выложил здесь):

    • PSP_GAME\SYSDIR\EBOOT.BIN

    • PSP_GAME\USRDIR\LUNAR\MODULE\ - (libccc.prx, libfont.prx, libpsmfplayer.prx, psmf.prx)

  • Если вопрос поставлен в поиске указателей шрифтов, то я бы, в первую очередь, обратил бы внимание на такой интересный файл libfont.prx. На первый взгляд это просто библиотека обработки шрифта, типа - horizontal\vertical\h_size\v_size\h_resolution\v_resolution\weight\family_code\s tyle\sub_style\language_code\region_code\country_code\font_name\file_name\extra_ attributes\expire_date.
    Возможно дизасм выведет на то место, куда эти характеристики должны применяться.

  • Но мне думается, что нужно копать в ресурсах, в папке PSP_GAME\USRDIR\LUNAR\DATA

    Ресурсы в порядке убывания размера файла:

    • ..\GIM\STATUSMENU\WINDOW\fmap_name.gim - картинка-полоска статуса, отображаемая во время боя слева вверху.
    • ..\PACK\BGMPack.dat - содержит около 380 файлов фоновых звуков и мелодий AT3 (Atrac 3 Plus) (декодируется только аппаратным декодером PSP)
    • ..\PACK\PACK_MAP_GIM.dat - содержит очень много пакетов dat в архивах GZIP (1F8B[0808]), каждый из которых содержит несколько картинок GIM
    • ..\PACK\PC_SP_PACK.dat - содержит больше 100 пакетов dat в архивах GZIP (1F8B[0808]), каждый из которых содержит несколько системных звуков VAG.
    • ..\PACK\MO_SP_PACK.dat - содержит очень много пакетов dat в архивах GZIP (1F8B[0808]), каждый из которых содержит картинки GIM анимированных спец-эффектов выстрелов, заклинаний и т.п.
    • ..\PACK\SEPack.dat - содержит очень много пакетов dat в архивах GZIP (1F8B[0808]), каждый из которых содержит несколько системных звуков VAG.
    • ..\PACK\BtlMonsterGroupPack.dat - содержит пакеты dat в архивах GZIP (1F8B[0808]), каждый из которых содержит картинки монстров с разных ракурсов в GIM
    • ..\PACK\PACK_IMAGE.dat - содержит пакеты dat в архивах GZIP (1F8B[0808]), каждый из которых содержит картинки персонажей с разных ракурсов в GIM.
    • ..\PACK\BtlMapPack.dat - содержит архивы GZIP (1F8B[0808]), в которых содержатся картинки карт в GIM
    • ..\PACK\fPackFace.dat - содержит архивы GZIP (1F8B[0808]), в которых содержатся картинки персонажей крупным планом в GIM
    • ..\PACK\PACK_COLLISION.dat - содержит архивы GZIP (1F8B[0808]), в которых содержатся схематические карты в BMP
    • ..\PACK\FH_VOICE.dat - содержит записи диалогов в AT3 (Atrac 3 Plus)
    • ..\PACK\FH_VOICE2.dat - содержит записи диалогов в AT3 (Atrac 3 Plus)
    • ..\PACK\FH_VOICE3.dat - содержит записи диалогов в AT3 (Atrac 3 Plus)
    • ..\PACK\BtlPartyDataPack2 - содержит пакеты dat в архивах GZIP (1F8B[0808]), каждый из которых содержит картинки персонажей в бою с оружием с разных ракурсов в GIM.
    • ..\PACK\ScriptPack.dat - содержит пакеты dat в архивах GZIP (1F8B[0808]), каждый из которых содержит какие-то скрипты TEXT00X.dat ))
    • ..\PACK\StationedPack.dat - содержит архивы GZIP (1F8B[0808]), в которых содержатся картинки системных меню в GIM
    • ..\PACK\PACK_MOTION.dat - содержит архивы GZIP (1F8B[0808]), в которых содержатся коды анимации объектов в DAT.
    • ..\PACK\Btl_Eff_Pack.dat - содержит архивы GZIP (1F8B[0808]), в которых содержатся картинки эффектов в GIM
    • ..\PACK\SUBEFF_PACK.dat - содержит архивы GZIP (1F8B[0808]), в которых содержатся картинки эффектов в GIM


Возможно это то, что ты хотел узнать?
Или ты хотел увидеть типа такое меню:

[IMG]http://img259.**************/img259/1985/24758470.png[/IMG] [IMG]http://img717.**************/img717/4721/24936179.png[/IMG]

Yoti 23.12.2012 21:22

Цитата:

Сообщение от lis5131 (Сообщение 1059260)
Сразу возник вопрос что считать запускным файлом

Учим матчасть.

Цитата:

Сообщение от lis5131 (Сообщение 1059326)
я же написал (lunar)

А я написал так:
Код:

03/03/2010 | NFO | Lunar_Silver_Star_Harmony_USA_PSP-PSPKiNG
11/11/2009 | NFO | Lunar_Harmony_of_Silver_Star_JPN_PSP-Caravan


lis5131 24.12.2012 11:43

Мужики вы читать умеете? Материальную часть игры я знаю. Меня она сейчас не интересует.
Меня интересует шрифт.
Игра использует системный шрифт PSP - ltn12.pgf
Как сделать так, чтобы игра грузила этот шрифт с карты памяти?

frostegater 24.12.2012 12:12

lis5131, я ж говорю, путь (строка) может клеиться из разных частей. Поищи вторую часть "flash0:/font"

Yoti 24.12.2012 12:53

lis5131,
учим понятие "матчасть", учим понятие "контекст", учим матчасть в контексте цитаты.

lis5131 24.12.2012 16:22

Тут попутно ковырнул еще пару игр.
В одной нашел такой вот код
Цитата:

0x08916250: "disc0:/PSP_GAME/USRDIR/data/"
0x08916270: "font/"
0x08916278: "Error sceFontOpen: 0x%8.8x\n"
0x08916294: "Font_OpenFile::%s\n"
0x089162A8: "Error sceFontFindOptimumFont: 0x%8.8x\n"
0x089162D0: "Error sceFontOpen %d: 0x%8.8x\n"
0x089162F0: "Error sceFontClose: 0x%8.8x\n"
0x08916310: "thread waiting...\n"
0x08916324: "Error sceFontGetCharInfo: 0x%8.8x\n"
0x08916348: "Error sceFontGetFontInfo: 0x%8.8x\n"
0x0891636C: "Error (sceFontGetCharGlyphImage_Clip): 0x%8.8x\n"
0x0891639C: "FontListThread"
0x089163AC: "Font Event"
Что бы это значило?
Может ли шрифт писаться как переменная - то есть так(0x%8.8x\n)?
Или я иду в неправильном направлении?

ErikPshat 24.12.2012 21:06

Цитата:

Сообщение от lis5131 (Сообщение 1059459)
Меня интересует шрифт.
Игра использует системный шрифт PSP - ltn12.pgf

Чем не устраивает шрифт на скриншотах выше?
Скрины сняты из игры "Lunar: Silver Star Harmony"

Цитата:

Сообщение от lis5131 (Сообщение 1059479)
Может ли шрифт писаться как переменная - то есть так(0x%8.8x\n)?

В данном случае эти переменные указывают на номера ошибок.

Цитата:

Сообщение от lis5131 (Сообщение 1059479)
Тут попутно ковырнул еще пару игр.

Опять разговор ниачём.

lis5131 24.12.2012 22:23

ErikPshat, да нет здесь все нормально, но я ищу в игровом тексте шрифт.

ErikPshat 24.12.2012 22:31

lis5131, ага, смотрю в текстовиках нету текстов из диалогов субтитров. Тогда где же они?
Чё-та я все ресурсы глянул, правда проверил только по первым смещениям. Вероятно они где-то внутри поглубже.

Тут нужно исходить из тех текстов в диалогах и от них выходить на шрифт.
Я так понял ты память уже дампил и оттуда увидел указание на ltn12.pgf.

Но раз из текстовиков русский шрифт поддерживается, тогда может и из диалогов берётся тот же шрифт.

lis5131 24.12.2012 22:44

В диалогах тоже ltn12.pgf

Родной шрифт
http://pix.academ.org/img/2012/12/25...6995f5b8bf.jpg
Мой шрифт.
http://pix.academ.org/img/2012/12/25...2f01fbaa44.jpg

Вставлял первый попавшийся.
Весь текст сжат в файлах TEXT000.DAT (GZIP)(UTF-8)(ScriptPack.dat)

В данный момент я хочу понять как переписать ссылку на шрифт(на свой шрифт).

ErikPshat 24.12.2012 22:56

Цитата:

Сообщение от lis5131 (Сообщение 1059537)
В диалогах тоже ltn12.pgf

То есть, в настройках этот же шрифт?
Пробовал смотреть изменения шрифта в настройках при подмене ltn12.pgf?

lis5131 24.12.2012 23:02

Цитата:

Сообщение от ErikPshat (Сообщение 1059544)
То есть, в настройках этот же шрифт?
Пробовал смотреть изменения шрифта в настройках при подмене ltn12.pgf?

Да, там тот же шрифт. (настройки и диалоги один шрифт)

http://pix.academ.org/img/2012/12/25...07473bac8e.jpg

ErikPshat 24.12.2012 23:07

lis5131, попробуй перевести первый диалог и сохранить TEXT000.DAT, как Юникод UTF16LE.
Запакуй обратно в GZIP и вставь на место.

Должен тогда текст по-русски нормально выводиться, если действительно один шрифт. Ведь у меня настройки нормально выводятся.

lis5131 24.12.2012 23:10

Цитата:

Сообщение от ErikPshat (Сообщение 1059552)
lis5131, попробуй перевести первый диалог и сохранить TEXT000.DAT, как Юникод UTF16LE.
Запакуй обратно в GZIP и вставь на место.

Должен тогда текст по-русски нормально выводиться, если действительно один шрифт. Ведь у меня настройки нормально выводятся.

Это потребует время.
Но.... Я не это хочу понять. Я хочу понять как переписать путь на шрифт.

ErikPshat 25.12.2012 09:15

Ну в общем, как и говорил, Юникод UTF16LE работает, но глюкаво )))
Первые диалоги лежат в файле TEXT060.dat.

[IMG]http://img843.**************/img843/8752/92847049.png[/IMG] [IMG]http://img259.**************/img259/1763/84274294.png[/IMG]

Ещё скрины
[IMG]http://img15.**************/img15/8443/64507776.png[/IMG] [IMG]http://img546.**************/img546/2210/36044380.png[/IMG]

[IMG]http://img607.**************/img607/9374/56216546.png[/IMG] [IMG]http://img94.**************/img94/6506/41355904.png[/IMG]

[IMG]http://img94.**************/img94/2357/47731134.png[/IMG] [IMG]http://img687.**************/img687/1166/73363130.png[/IMG]

Тут дело в том, что в скриптах используются служебные символы как раз из русской кодировки Юникод UTF16LE.
Например, код переноса строки обычно используют , а в юникоде 0D0A.
В данном же случае используется перенос кодом 0104, но это не беда, т.к. этот код не доходит до пределов русской кодировки. Хотя, как раз под этим кодом находится заглавная буква Ё и она обычно находится перед русской раскладной, которая впрочем редко используется.

А русская кодировка начинается с буквы А по адресу 1004, далее буква Б - 1104, буква В - 1204 и т.д.
Но беда в том, что между диалогами встречаются служебные символы 1104, 1404, 1604, 1704, 1904, 1A04, 2704, 2904, 3E04, 4E04 - это те, которые я заметил. Так что буквы, попадающие на эти коды, просто не будут отрисовываться, а кроме того, будут выполнять предназначенные для них функции.
На первом скрине должно быть "Богиня Альфина!", но выводится "гиня Альфина!", потому что буква Б имеет служебный код 1104 и в каких-то сочетаниях следующая маленькая буква о тоже не выводится.



lis5131, так что не зря ты ищешь путь к шрифту, потому что в данном случае придётся таскать с собой другой шрифт с другой кодировкой.
Но указателей на шрифт я пока не нашёл.
Либо заменять служебные буквы другими, например английскими или менять заглавные на маленькие, либо наоборот.

frostegater 25.12.2012 09:35

Если поколупать исходники zeroVshPatcher можно найти редирекции путей. Таким образом можно перенаправить на свой шрифт с лёгкостью. ИМХО самый классный путь и работает 100%.

lis5131 25.12.2012 10:44

ErikPshat, а чем ты запаковывал назад. Я пробовал 7z(9.20) - у меня повис.


ZeroVSH_Patcher_v0.2.zip у меня есть. Я его пробовал, но он меняет только ltn0.pgf т.е основной шрифт.

lupus 25.12.2012 17:54

Цитата:

Сообщение от frostegater (Сообщение 1059611)
Если поколупать исходники zeroVshPatcher можно найти редирекции путей. Таким образом можно перенаправить на свой шрифт с лёгкостью. ИМХО самый классный путь и работает 100%.

Фрост, а есть ли возможность пересобрать из сырцов так, чтобы любой из шрифтов подменять можно было?
Ну или Ётя??? ::blush::


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

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