Просмотр полной версии : Системный шрифт PSP
Ковырнул тут на досуге игру. Задался интересным вопросом.
Суть такая. Игра использует системный шрифт ltn3.pgf и ltn5.pgf (точнее две разных игры.)
Есть ли возможность заменить этот шрифт через плагин. (не трогая flash0)?
lis5131,
ну да, можно патчить в оперативке. Но много проще, как по мне, просто перехексить номер.
lis5131,
ну да, можно патчить в оперативке. Но много проще, как по мне, просто перехексить номер.
А можно поподробней.
Про вариант перехексить номер - где это искать?
И про второй вариант как заменить в памяти?
Про вариант перехексить номер - где это искать?
Так в исполняемом бинарнике, чисто по идее же.
И про второй вариант как заменить в памяти?
Ну, либо найти адрес модуля и патчить по смещению, либо подменять функцию на свою попяченую.
Так в исполняемом бинарнике, чисто по идее же.
Ну, либо найти адрес модуля и патчить по смещению, либо подменять функцию на свою попяченую.
Дело в том что я там не нахожу его - шрифт. Пробовал распаковывать файлы 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"). Главное не лезь за размеры существующей строки, если же место осталось - забей нулями лишнюю часть.
Всё не та просто, тупо перехексить скорее всего не выйдет, я как-то тоже разбирал игрушку, в бинарниках ничего не нашёл, хотя и декриптовал их. Скорее всего надо дизасмить.
Хотя как знать, может и повезёт.
Ещё вспомнил, в заброшенном переводе монстрхантера GH положил свой шрифт с собственной таблицей в корень образа и подменил ссылку на него, чтобы не из ф0 читался. Только там тоже тупо перехексить не вышло, емнип он дизасмил бинарник, чтобы найти адреса, но порядок действий я не уточнял, а теперь его днём с огнём не сыщешь :/
Сразу возник вопрос что считать запускным файлом
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.bin0021984 , \PSP_GAME\USRDIR\resource0.bin - вся игра содержится здесь.
Я в памяти псп нахожу свободно ltn3.pgf и ltn5.pgf и ltn12.pgf
http://pix.academ.org/img/2012/12/21/18ada6868cd01b697011cd43f692bfaf.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/detail/item326424/LUNAR-SILVER-STAR-HARMONY/
Тут скриншотики: http://ru.playstation.com/ws/mp/internal/detail/item326424/?uri=/psn/games/detail/item326424/LUNAR-SILVER-STAR-HARMONY/
А то тупо гадать, а может там, а может здесь, никто толком не подскажет, пока сам не посмотрит и не найдёт.
Да игра Lunar Silver Star Harmony psp, я же написал (lunar)
А какой дизассемблер есть для PSP. У меня есть дизик для PSX и компа. Они разные. Если можно название дизассемблер дайте?
frostegater
22.12.2012, 11:13
lis5131, prxtool
Прикол
\PSP_GAME\SYSDIR\EBOOT.BIN
В лунаре. Забит 00.
frostegater
22.12.2012, 14:09
lis5131, тогда BOOT.BIN
Да. Похоже он упакован. Не чего не найти.
frostegater
22.12.2012, 17:32
lis5131, если начинается с ~PSP, то с 151 оффсета начинается GZ архив. Выдели всё с него и до конца, потом в новый файл, распакуй. Получишь ELF файл, там всё чисто.
lis5131, если начинается с ~PSP, то с 151 оффсета начинается GZ архив. Выдели всё с него и до конца, потом в новый файл, распакуй. Получишь ELF файл, там всё чисто.
Или я тормажу или.... Вообщем не чего не выходит. Начинается на psp
EBOOT.BIN (http://narod.ru/disk/64706543001.1a34095a025aa5ff142d4aa43058ed2c/EBOOT.BIN.html)
Prxdecryptor в помощь. Я им обычно распаковываю. Если бинарник закриптован ключём, то руками вынуть gzip в хексе не выйдет. Сам глянуть не могу, т.к. сижу с телефона и домой приеду только завтра.
В принципе подойдёт любой софт, который использовали для декрипта и патчинга игр под старый прошивки. Только патчить не нужно :)
А потом искать или дизасмить prxtool-ом.
Да. Действительно только Prxdecryptor пакуется.
Вот файл ELF и дизик (http://narod.ru/disk/64710850001.08fa3a65dd8cb91c55a848cae95bdd11/dec.7z.html) его
Не какого упоминания про font и флеш0 я не нашел.
Только disc0 и ms0.
ErikPshat
23.12.2012, 00:17
Да игра Lunar Silver Star Harmony psp, я же написал (lunar)
Ну я так сразу же и догадался по первым же результатам поиска:
http://img161.**************/img161/3578/lunarsilverstarstoryntsnq6.jpg
Немного не такой.
http://pix.academ.org/img/2012/12/23/3996022ab256f71f651ee0390584bb0d.jpg
Вот такой.
ErikPshat
23.12.2012, 11:14
Немного не такой.
Вот такой.КЭП, я читать умею, что выше писалось :)
А ваще, с самого начала вопрос был задан НИАЧЁМ и получил ты ответы такие же НИАЧЁМ. Зачем крутить вокруг да около и гадать на кофейной гуще?
Прикол
\PSP_GAME\SYSDIR\EBOOT.BIN
В лунаре. Забит 00.
Это только означает, что в образе кто-то поковырялся и поменял местами файлы, и возможно, ещё и пропатчил Prometheus-ом.
EBOOT.BIN - главный экзешник программы.
BOOT.BIN - забитый нулями кэш, равный байт-в-байт по размеру декриптованного EBOOT.BIN.
Далее по делу...
Не поленился, скачал (http://isohunt.com/torrent_details/157712561/Lunar_Silver_Star_Harmony_USA_PSP-PSPKiNG?tab=summary) и глянул образ. Пока имею следующие данные:
В образе зашифрованы следующие файлы, которые нужно было для начала расшифровать и посмотреть (декриптованные выложил здесь (http://www.mediafire.com/?qd4ttr1tlqt673s)):
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
Возможно это то, что ты хотел узнать?
Или ты хотел увидеть типа такое меню:
http://img259.**************/img259/1985/24758470.png http://img717.**************/img717/4721/24936179.png
Сразу возник вопрос что считать запускным файлом
Учим матчасть.
я же написал (lunar)
А я написал так:
03/03/2010 | NFO | Lunar_Silver_Star_Harmony_USA_PSP-PSPKiNG
11/11/2009 | NFO | Lunar_Harmony_of_Silver_Star_JPN_PSP-Caravan
Мужики вы читать умеете? Материальную часть игры я знаю. Меня она сейчас не интересует.
Меня интересует шрифт.
Игра использует системный шрифт PSP - ltn12.pgf
Как сделать так, чтобы игра грузила этот шрифт с карты памяти?
frostegater
24.12.2012, 12:12
lis5131, я ж говорю, путь (строка) может клеиться из разных частей. Поищи вторую часть "flash0:/font"
lis5131,
учим понятие "матчасть", учим понятие "контекст", учим матчасть в контексте цитаты.
Тут попутно ковырнул еще пару игр.
В одной нашел такой вот код
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
Меня интересует шрифт.
Игра использует системный шрифт PSP - ltn12.pgf
Чем не устраивает шрифт на скриншотах выше?
Скрины сняты из игры "Lunar: Silver Star Harmony"
Может ли шрифт писаться как переменная - то есть так(0x%8.8x\n)?
В данном случае эти переменные указывают на номера ошибок.
Тут попутно ковырнул еще пару игр.Опять разговор ниачём.
ErikPshat, да нет здесь все нормально, но я ищу в игровом тексте шрифт.
ErikPshat
24.12.2012, 22:31
lis5131, ага, смотрю в текстовиках нету текстов из диалогов субтитров. Тогда где же они?
Чё-та я все ресурсы глянул, правда проверил только по первым смещениям. Вероятно они где-то внутри поглубже.
Тут нужно исходить из тех текстов в диалогах и от них выходить на шрифт.
Я так понял ты память уже дампил и оттуда увидел указание на ltn12.pgf.
Но раз из текстовиков русский шрифт поддерживается, тогда может и из диалогов берётся тот же шрифт.
В диалогах тоже ltn12.pgf
Родной шрифт
http://pix.academ.org/img/2012/12/25/94fb0128ac3353cc82dcaf6995f5b8bf.jpg
Мой шрифт.
http://pix.academ.org/img/2012/12/25/9c49907db0afa22ecddef02f01fbaa44.jpg
Вставлял первый попавшийся.
Весь текст сжат в файлах TEXT000.DAT (GZIP)(UTF-8)(ScriptPack.dat)
В данный момент я хочу понять как переписать ссылку на шрифт(на свой шрифт).
ErikPshat
24.12.2012, 22:56
В диалогах тоже ltn12.pgfТо есть, в настройках этот же шрифт?
Пробовал смотреть изменения шрифта в настройках при подмене ltn12.pgf?
То есть, в настройках этот же шрифт?
Пробовал смотреть изменения шрифта в настройках при подмене ltn12.pgf?
Да, там тот же шрифт. (настройки и диалоги один шрифт)
http://pix.academ.org/img/2012/12/25/b67f7d65a07508175a59e207473bac8e.jpg
ErikPshat
24.12.2012, 23:07
lis5131, попробуй перевести первый диалог и сохранить TEXT000.DAT, как Юникод UTF16LE.
Запакуй обратно в GZIP и вставь на место.
Должен тогда текст по-русски нормально выводиться, если действительно один шрифт. Ведь у меня настройки нормально выводятся.
lis5131, попробуй перевести первый диалог и сохранить TEXT000.DAT, как Юникод UTF16LE.
Запакуй обратно в GZIP и вставь на место.
Должен тогда текст по-русски нормально выводиться, если действительно один шрифт. Ведь у меня настройки нормально выводятся.
Это потребует время.
Но.... Я не это хочу понять. Я хочу понять как переписать путь на шрифт.
ErikPshat
25.12.2012, 09:15
Ну в общем, как и говорил, Юникод UTF16LE работает, но глюкаво )))
Первые диалоги лежат в файле TEXT060.dat.
http://img843.**************/img843/8752/92847049.png http://img259.**************/img259/1763/84274294.png
http://img15.**************/img15/8443/64507776.png http://img546.**************/img546/2210/36044380.png
http://img607.**************/img607/9374/56216546.png http://img94.**************/img94/6506/41355904.png
http://img94.**************/img94/2357/47731134.png http://img687.**************/img687/1166/73363130.png
Тут дело в том, что в скриптах используются служебные символы как раз из русской кодировки Юникод UTF16LE.
Например, код переноса строки обычно используют 0А, а в юникоде 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%.
ErikPshat, а чем ты запаковывал назад. Я пробовал 7z(9.20) - у меня повис.
ZeroVSH_Patcher_v0.2.zip у меня есть. Я его пробовал, но он меняет только ltn0.pgf т.е основной шрифт.
Если поколупать исходники zeroVshPatcher можно найти редирекции путей. Таким образом можно перенаправить на свой шрифт с лёгкостью. ИМХО самый классный путь и работает 100%.
Фрост, а есть ли возможность пересобрать из сырцов так, чтобы любой из шрифтов подменять можно было?
Ну или Ётя??? ::blush::
frostegater
25.12.2012, 18:43
lupus, есть.. да там легко.. завтра сделаю
С жатием разобрался. А вот написать такой плагин было бы не плохо. Не селен я в с++.
Нашел там только одну строчку касающуяся ltn0.pgf - заменил на ltn12.pgf. И все равно он меняет основной системный шрифт.
lupus, есть.. да там легко.. завтра сделаю
Спс. Тут ещё такая идея возникла, можно ли запилить не плагин, а модуль, чтобы его в образ класть вместо eboot.pbp, и сначала он грузился, а затем родной eboot?
ErikPshat
25.12.2012, 20:05
ErikPshat, а чем ты запаковывал назад. Я пробовал 7z(9.20) - у меня повис.Чем запаковывать не имеет значения. Я так же пакую через 7-ZIP.
Методом подбора "Уровня сжатия", а затем более тонко "Размера слова", регулирую размер выходного архива, чтобы он был приближен по размеру к исходному.
Название сжимаемого файла ессно должно быть, как в исходном, записанном в заголовке (TEXT060.dat).
http://img707.**************/img707/2938/gzip.png
Потом вставляешь в файл ScriptPack.dat. Если размер вставляемого файла не совпадает с исходным, то выставляешь в заголовке ScriptPack.dat новый размер.
Там размеры идут по порядку, начиная с позиции 0х8, а секция размера каждого архива составляет ровно 8 байт (4 байта размер + 4 байта Index).
Так как TEXT060.dat идёт 3-ий с конца, то его и меняем (выделено красным прямоугольником).
http://img20.**************/img20/5417/scryptpackdat.png
Так же, сами файлы TEXTxxx.dat не полностью текстовые файлы, а имеют формат бинарного кода + текстовые секции. Поэтому нельзя тупо открывать файл в текстовом редакторе, менять текст и там же сохранять в редакторе. От этого весь бинарный код пересохранится в заданной кодировке и испортится.
Насчет текста я уже понял. Пишу спец редактор. С жатиями разобрался - использовал bz архиватор на максимальном сжатие. Если размер файла не менять то он сжимает 1:1. И все пашет.
lis5131 добавил 25.12.2012 в 20:22
Остался проклятый шрифт.
frostegater,
Да кстати в плагене есть косяк. Когда подключаешься через УСБ с включенным плагином - он какую то туфту про отключение Bluetooth. Порит. Если можно - вырежь.
ErikPshat
25.12.2012, 20:54
Если размер файла не менять
А как его не менять, если русский текс и английский по длине никогда не совпадают. Русские слова, как правило, чаще всего длиннее. Да и как полный смысл уложить в диалоги. Так что размер переведённого файла по любому изменится и сжать его точно с оригиналом редко получится.
А толку-то от этого плагина? Когда вы игру переведёте и выложите, вы что там, ещё напишете инструкцию "Как запускать игру"? Типа залейте игру в папку ms0:/ISO; скопируйте наш уникальный плагин в папку ms0:/seplugins; пропишите путь к плагину в файл vsh.txt :xDD:
Бред! )))
Нужно писать модуль в папку Lunar\PSP_GAME\USRDIR\LUNAR\MODULE
И использовать лаунчер, как EBOOT.BIN, а EBOOT.BIN переименовать в BOOT.BIN.
А как его не менять, если русский текс и английский по длине никогда не совпадают. Русские слова, как правило, чаще всего длиннее. Да и как полный смысл уложить в диалоги. Так что размер переведённого файла по любому изменится и сжать его точно с оригиналом редко получится.
А толку-то от этого плагина? Когда вы игру переведёте и выложите, вы что там, ещё напишете инструкцию "Как запускать игру"? Типа залейте игру в папку ms0:/ISO; скопируйте наш уникальный плагин в папку ms0:/seplugins; пропишите путь к плагину в файл vsh.txt :xDD:
Бред! )))
Нужно писать модуль в папку Lunar\PSP_GAME\USRDIR\LUNAR\MODULE
И использовать лаунчер, как EBOOT.BIN, а EBOOT.BIN переименовать в BOOT.BIN.
Насчет текста - общая длинна русского текста всегда (почти) меньше английского исключение предметы, вещи, и т.д. Тут думаю проблем не будет. А если будут то все решаемые.
Насчет плагина может и бред. Для этого я и пришел сюда - за помощью. Или найти как путь перебить к шрифту, или найти иные способы....
А толку-то от этого плагина? Когда вы игру переведёте и выложите, вы что там, ещё напишете инструкцию "Как запускать игру"? Типа залейте игру в папку ms0:/ISO; скопируйте наш уникальный плагин в папку ms0:/seplugins; пропишите путь к плагину в файл vsh.txt :xDD:
Бред! )))
Нужно писать модуль в папку Lunar\PSP_GAME\USRDIR\LUNAR\MODULE
И использовать лаунчер, как EBOOT.BIN, а EBOOT.BIN переименовать в BOOT.BIN.
ну так:
Спс. Тут ещё такая идея возникла, можно ли запилить не плагин, а модуль, чтобы его в образ класть вместо eboot.pbp, и сначала он грузился, а затем родной eboot?
))
ErikPshat
26.12.2012, 12:14
Насчет текста - общая длинна русского текста всегда (почти) меньше английского исключение предметы, вещи, и т.д. Тут думаю проблем не будет. А если будут то все решаемые.
Ну да-а-а-а, русский текст длиннее английского. Можно конечно сделать короче, если совсем перевод делать детсадовским методом - когда тебе говорят тонну слов, а в ответ слышат только одно :)
Уж сколько программ переводил Хексом, так никогда русский текст не помещался в свои рамки. Постоянно приходилось раздвигать смещения или переносить текст ваще в другие места.
Да в данном случае по этому поводу не стоит париться, потому что в текстовых секциях можно писать текста сколько угодно, не задумываясь о смещении последующих байтов. А архив GZIP, даже сильно разбухший всегда можно ужать до нужных пределов, причём там места в конце каждого файла, забитого нулями, очень даже достаточно. И новый размер изменившегося архива ничего не стоит проставить по-своему, там всего-то 2 байта ))).
Просто пошёл я опять на второй круг, потому что попалось такое странное и смищьное утверждение, которое к тому же каждый раз почему-то всё более утверждается:
Если размер файла не менять то он сжимает 1:1. И все пашет.
Кстати, можешь посмотреть, как я переводил, если интересно.
Там правда переведён только первый диалог в TEXT060.dat, который я уже засунул в ScryptPack.dat. И там все архивы вынуты в исходном виде.
Ну можеш вынуть, распаковать и посмотреть: http://www.mediafire.com/?b846hw9sp1nwwk5
Можно просто в образ вставить ScryptPack.dat и посмотреть перевод на PSP или в эмуле.
Тут ещё такая идея возникла, можно ли запилить не плагин, а модуль, чтобы его в образ класть вместо eboot.pbp, и сначала он грузился, а затем родной eboot?
Ещё чуть-чуть, и ты бы придумал патчить прометеем образы ХД
Если кто напишет лоадер для подмены ибута - скиньте мне сорцы)
Ну принцип тот же, что у прометея. Это так сложно реализовать? Я слаб в этом вопросе...
Это так сложно реализовать?
Нет, не сложно. Но мне лень или некогда)
ErikPshat
28.12.2012, 00:00
да там легко.. завтра сделаюНу раз фрост сказал - значит будем ждать "завтра".
KirJan-DeSign
28.12.2012, 00:06
Сегодня, 00:00
будем ждать "завтра".
завтра было вчера или сегодня? что такое "завтра в 00-00" по межпланетному времени?
хех, не удержался :blush:
frostegater
28.12.2012, 03:06
я так посмотрел код и zVshPatcher должен делать то что вы хотите. Даже изменять ниче не надо. Попробуйте ещё.
я так посмотрел код и zVshPatcher должен делать то что вы хотите. Даже изменять ниче не надо. Попробуйте ещё.
Сколько я не пробовал он меняет только шрифт меню псп. А в игре фиг.
lis5131 добавил 28.12.2012 в 12:13
ErikPshat, да я кстати спорить тут бесполезно. Все зависит от того - какой текст попадется.
Ладно это бесполезный спор.
Вообщем я так понял с подменой шрифта, или заменой пути к шрифту - не чего не выйдет?
frostegater
28.12.2012, 12:39
lis5131, ааа.. может быть там залочка на APITYPE, я щас посмотрю
хм, нет залочки. Ладно, я пну разраба, пусть сделает поддержку для игр, у меня нет времени долго копаться.
Спасибо, будем надеятся что он сделает. У меня псп 3008 6.39
Когда подключаешься через УСБ с включенным плагином - он какую то туфту про отключение Bluetooth. Порит.
lis5131 добавил 28.12.2012 в 14:46
Начал копать дальше зашел в флеш 1
Нашел system.dreg там нашел путь к шрифту.(flash0:/font)
(смещение $69C0)Думаю что в батнике нет пути(поэтому мы его и ненайдем), а есть смещение на этот путь.Вопрос такой как сделать дизик памяти (PSP)?
Или дизик сырого сохранения памяти с эмулятора псп(JPCSP)?
prxtool - отказался делать - сказал что это не elf файл.
frostegater
28.12.2012, 16:38
lis5131, на то что в flash1 не смотри. Это системные настройки...
ErikPshat
28.12.2012, 21:03
Вообщем я так понял с подменой шрифта, или заменой пути к шрифту - не чего не выйдет?
Ну почему сразу так. Нужно искать, кто ищет - тот найдёт )))
ErikPshat, да я кстати спорить тут бесполезно. Все зависит от того - какой текст попадется.
Ладно это бесполезный спор.Да тут даже не в том дело, на каком языке текст длиней.
Я просто хочу сказать, что тут нет никаких ограничений на длину текста, т.е. не обязательно укладываться в длину исходного текста и не надо ваще париться по этому поводу, просто пиши сколько хочешь.
Спасибо. Это хорошо. Остался вопрос с шрифтом пока пытаюсь раскопать.
Интересный момент ($69C0) попадается только в бине лунара в остальных играх не использующих системный шрифт - нет.
При замене сразу игра повисла.
Есть еще один итересный момент
$69C0 - flash0:/font
6F80 - jpn0.pgf
7380 - ltn0.pgf
7780 - ltn1.pgf
7B80 - ltn2.pgf
7F80 - ltn3.pgf
8380 - ltn4.pgf
8780 - ltn5.pgf
8B80 - ltn6.pgf
8F80 - ltn7.pgf
9380 - ltn8.pgf
9780 - ltn9.pgf
9B80 - ltn10.pgf
9F80 - ltn11.pgf
A380 - ltn12.pgf
Так вот в бине лунара есть смещения $A380 и $69C0 в то время как остальных нет.
Незнаю может это просто совпадение.
ErikPshat
28.12.2012, 22:12
lis5131, а не пробовал поменять A380 на 7380 и поменять ltn0.pgf на нестандартный кастомный?
Указатели на шрифты скорее берутся отсюда: flash0:/codepage/cptbl.dat
lis5131, а не пробовал поменять A380 на 7380 и поменять ltn0.pgf на нестандартный кастомный?
Указатели на шрифты скорее берутся отсюда: flash0:/codepage/cptbl.dat
Пробовал - повисло.
ErikPshat
29.12.2012, 00:01
lis5131, Кстати, я нашёл путь в sceFont_Library, сдампил из памяти (это libfont.prx в папке MODULE, который я выше выкладывал декриптованный (http://www.pspx.ru/forum/showpost.php?p=1059380&postcount=23)).
MODULE: sceFont_Library
Address - 0x935e100
Text size - 32792
Data size - 380
В памяти там открывается путь flash0:/font/kr0.pgf
Никаким ltn12.pgf там не пахнет.
Дамп памяти выкладываю сюда (http://zalil.ru/34122073), можешь сам поглядеть.
Ищи текст: flash0:/font/ т.к. kr0.pgf лежит отдельно ниже.
ErikPshat
29.12.2012, 01:07
В памяти там открывается путь flash0:/font/kr0.pgf
Никаким ltn12.pgf там не пахнет.
Хотя нет, ошибался. Указание на kr0.pgf видимо идёт для только корейского региона.
В действительности шрифт используется ltn12.pgf.
Теперь можно использовать любой свой шрифт и положить его прямо в образ.
Лучше использовать однобайтный шрифт, т.е. взять виндовой TTF, переместить русский алфавит в однобайтовую область C0 - FF и сконвертировать в PGF.
Ну вот собственно и всё! На этой счастливой ноте можно тему закрывать.
P.S. Надеюсь увижу своё имя в кредитах... :blush:
Спасибо. Дельное замечание.
:drinks: С меня причитается.
СПАСИБО ОГРОМНОЕ.
ErikPshat
29.12.2012, 02:15
lis5131, Ну надеюсь ты понял, что нужно делать...
Сначала я прописал путь к карте памяти ms0:/font/ и всё получилось.
Потом прописал путь disc0:/PSP_GAME/USRDIR/LUNAR/MODULE/ и закинул туда свой кастомный шрифт - прекрасно работает из образа и даже очень быстро выводится, я заметил, что из флеша шрифт немного задерживается.
Пишешь именно в позицию 0х80С0 новый путь, надеваешь каску и противогаз, и вперёд с противотанковыми гранатами.
В общем заменял путь, снова дампил память, всё отлично, прописанный внаглую путь не затирается в памяти.
Нужно сделать однобайтовый шрифт PGF, чтобы можно было прямо в хексе или в текстовике писать русским шрифтом, без всяких закорючек и Юникодов, чтобы в шрифте не попадались служебные символы, т.е. шрифт должен быть в диапазоне C0-FF.
Текстовые секции, где написан текст, можно писать без ограничений на длину, не обращая внимания на сдвиг последующего кода, т.к. это всё-таки текстовик, просто со служебными символами.
Я бы остался на родном юникоде, по той лишь причине, что это позволит оставить читабельными надписи, которые пишутся в данные сохранения.
А этот мой пост кто-то перенёс?
Ребята, раз уж тут вскольз касались темы, может ли консольная версия 7zip пожать gzip? Что-то не разберусь :/
ErikPshat
29.12.2012, 13:04
это позволит оставить читабельными надписи, которые пишутся в данные сохранения.Эмм, а они могут стать не читабельными?
Вроде если запишутся в однобайте, так и считаются этой же консолью с этой игрой точно так же и тем же шрифтом.
А этот мой пост кто-то перенёс?
Там я тебе ответил, не помню чтобы пост кто-то переносил.
Эмм, а они могут стать не читабельными?
Вроде если запишутся в однобайте, так и считаются этой же консолью с этой игрой точно так же и тем же шрифтом.
Я про инфу, которую можно посмотреть из xmb
Там я тебе ответил, не помню чтобы пост кто-то переносил.
Єто меня глючит судя по всему...
ErikPshat
29.12.2012, 17:47
Ну вообщем вот, сделал парочку файликов libfont.prx на всякие разные случаи.
Какой требуется, таким нужно подменить аналогичный файл в образе игры через UMDGen.
Ессно лучший вариант будет - держать шрифт прямо в образе.
Там прописал пути к шрифту в 2-ух вариантах:
Один берёт шрифт с карты памяти, по пути ms0:/font/, туда и кидать любой шрифт под названием ltn12.pgf.
Второй берёт шрифт из образа, по пути disc0:/PSP_GAME/USRDIR/LUNAR/MODULE/, т.е. туда кидать и шрифт и сам libfont.prx
Ну и один нестандартный шрифт прилагаю, для теста, чтобы видно было, что шрифт берётся не из системы.
Куда и как прописывается шрифт, кто не понял, можете сами посмотреть через Хекс-редактор ;)
Эрик, а можешь сделать ещё такой либфонт, чтобы шрифт класть в disc0:/PSP_GAME/USRDIR/, а шрифт чтобы назывался ltn0.pgf тогда его можно будет практически к любой игре прикрутить, где это может понадобиться.
ErikPshat
29.12.2012, 18:17
Эрик, а можешь сделать ещё такой либфонт, чтобы шрифт класть в disc0:/PSP_GAME/USRDIR/
Да без проблем, забирай.
а шрифт чтобы назывался ltn0.pgf
Да просто переименуй ltn0.pgf в ltn12.pgf, какие проблемы, от этого шрифт же не будет работать именно так, как он называется )))
Я просто даже не стал искать, где это название прячется, т.к. нет в этом необходимости.
Да и чё-та я сомневаюсь, что эта библа будет работать с другими играми.
Спасибо. Твои уроки очень полезны, я теперь во многих играх могу шрифт поменять.
Были пробелы - в моей голове, сейчас я пытаюсь их заполнить, ха.
УРААА - ErikPshat -у!
frostegater
29.12.2012, 20:56
Эрик как всегда молодец :)
проспасибал всю тему :D
Походу возник такой вопрос libfont.prx - разбирается без проблем, а как его собрать обратно чтоб работал на моей прошивке?Пробовал PRX_Encrypter не чего не вышло?
ErikPshat
02.01.2013, 04:05
lis5131, ну я же его как-то собрал ;)
ErikPshat, я хочу проверить кой какие идеи. Мне нужно еще два файла собрать из разных игр. У самого пока не выходит. Поэтому хочу научится сам собирать. Ты профи - поэтому и собрал.:good:
'А я не волшебник - я только учусь'.:dash:
PRX_Encrypter - файл на выходе получается 5,25 мб и не работает (оригинал 25 кб)
EasyPBPRX - файл на выходе получается 400 кб и не работает (оригинал 25 кб)
Криптовать не обязательно.
Криптовать не обязательно.
Тогда не работает.thank youЯ уже третий день сижу собираю разбираю вставляю и не пашет.
Пробовал просто декриптовать и вставлять без изменений?
Пробовал просто декриптовать и вставлять без изменений?
Там просто ELF файл будет, врят-ли он будет работать без подписи сонни.
ErikPshat
02.01.2013, 12:02
Криптовать не обязательно.
Тогда не работает.thank youЯ уже третий день сижу собираю разбираю вставляю и не пашет.Ну так правильно, если ты это пытаешься запустить на официальной прошивке, то без подписи и сама игра не запустится.
А на кастоме криптовать не обязательно.
lupus, только я один заметил, что файлы во вложениях подписаны Соней? :xDD:
Там просто ELF файл будет, врят-ли он будет работать без подписи сонни.
Вообще не вижу проблемы. Хомки неподписанные и декриптованные ибуты запускаются, так почему бы этому не запускаться.
Эрик, я даже не смотрел, чем подписаны, если честно. Для меня логично, что соневские модули подписаны соней, а те, в которых копались, будут запускаться на кастомах. Как-то так :)
Вообще не вижу проблемы. Хомки неподписанные и декриптованные ибуты запускаются, так почему бы этому не запускаться.
Эрик, я даже не смотрел, чем подписаны, если честно. Для меня логично, что соневские модули подписаны соней, а те, в которых копались, будут запускаться на кастомах. Как-то так :)
А не, вру, пошла...
А на витке пойдет?
ErikPshat
05.01.2013, 13:47
Кстати, по этому поводу я тут вспомнил одну вещь...
Нужно сделать однобайтовый шрифт PGF, чтобы можно было прямо в хексе или в текстовике писать русским шрифтом, без всяких закорючек и Юникодов, чтобы в шрифте не попадались служебные символы, т.е. шрифт должен быть в диапазоне C0-FF.
Вот в этой теме я уже оказывается всё это делал и выкладывал, лежит там во вложении. Так что можно ваще писать однобайтной кириллицей, а не Юникодом. Вот текст сообщения из шапки той темы:
В архиве, для примера лежит шрифт TimesNewRoman.ttf, который я немного кастомизировал, удалив лишние языки, которые шли после русского алфавита. Английский вначале естесственно остался.
Так-же я в нём продублировал русский алфавит в области C0-FF (192-256). Поэтому его можно использовать в программах и плагинах, используя 8-битную (1-байтную) кодировку, вместо UTF-8.
Как он выглядит, можете посмотреть на скриншоте выше.
ErikPshat, шрифт у меня уже есть готовый начинается с C0=А. С этим нет проблем. хочешь напрямую пиши хочешь как юникод (C0 00 C0 00 C0 00)
0xc0000 - это не юникод.
Опечатался.:blush:Утф 8 - ты правда 00 много поставил.
ErikPshat
05.01.2013, 16:45
lis5131, ну ты можешь ваще без нулей писать 0xC0C1C2C3C4 (АБВГ)
По поводу подписи модулей попозжа напишу, когда башка от нового года отойдёт )))
ErikPshat, не вопрос подождем.
lis5131, ну ты можешь ваще без нулей писать 0xC0C1C2C3C4 (АБВГ)
По поводу подписи модулей попозжа напишу, когда башка от нового года отойдёт )))
Подписать-то их можно, вот только какой в этом смысл? :)
ErikPshat
06.01.2013, 04:35
Подписать-то их можно, вот только какой в этом смысл? :)
Ну так чтобы всё выглядело оригинально, чтобы нубы не поняли где и как ковыряли, и чтобы игра запускалась на официальной прошивке
Ну так чтобы всё выглядело оригинально, чтобы нубы не поняли где и как ковыряли, и чтобы игра запускалась на официальной прошивке
В точку. И еще одно иногда игры используют ЛБА вместо названия файлов. Тук конечно понятно что оригинальный (разжатый ELF) не впихнешь туда.
Ну так чтобы всё выглядело оригинально эстет ))
чтобы нубы не поняли где и как ковырялида пусть ковыряют, может чему дельному научатся. сам когда-то с нуля начинал.
чтобы игра запускалась на официальной прошивкеимхо подписанные игры давно не актуальны.
Но сам принцип знать конечно полезно.
И еще одно иногда игры используют ЛБА вместо названия файлов.Таких припоминаю аж 2 - ФФ3 и Рататуй. Правда в ФФ3 не совсем по лба. Может ещё о каких-то не знаю, но таких игр подавляющее меньшинство.
понятно что оригинальный (разжатый ELF) не впихнешь туда.Что-то не припомню, чтобы после декриптовки оригинальные соневские модули в размере прибавляли.
lupus, вот несколько примеров
Сжатый Распакованный
20,2 КБ 34,4 КБ
23,6 КБ 50,3 КБ
Распаковывал libfont.prx из разных игр.
Хм, странно. Eboot.bin после декриптовки никогда размер не меняет, интересно, почему здесь так? о0
ErikPshat
06.01.2013, 18:40
lupus, модули сжимаются, а EBOOT.BIN только шифруется.
Причём у нешифрованного размер меньше, чем у шифрованного, как ни странно :D
vBulletin® v3.8.7, Copyright ©2000-2025, vBulletin Solutions, Inc. Перевод: zCarot