PDA

Просмотр полной версии : Системный шрифт PSP


Страницы : [1] 2 3

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

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

lis5131
20.12.2012, 11:20
lis5131,
ну да, можно патчить в оперативке. Но много проще, как по мне, просто перехексить номер.
А можно поподробней.
Про вариант перехексить номер - где это искать?
И про второй вариант как заменить в памяти?

Yoti
20.12.2012, 18:49
Про вариант перехексить номер - где это искать?
Так в исполняемом бинарнике, чисто по идее же.

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

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


Ну, либо найти адрес модуля и патчить по смещению, либо подменять функцию на свою попяченую.
Дело в том что я там не нахожу его - шрифт. Пробовал распаковывать файлы 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.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/

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

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

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

EBOOT.BIN (http://narod.ru/disk/64706543001.1a34095a025aa5ff142d4aa43058ed2c/EBOOT.BIN.html)

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

lis5131
22.12.2012, 21:03
Да. Действительно только 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

lis5131
23.12.2012, 00:44
Немного не такой.
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

Yoti
23.12.2012, 21:22
Сразу возник вопрос что считать запускным файлом
Учим матчасть.

я же написал (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
Меня интересует шрифт.
Игра использует системный шрифт PSP - ltn12.pgf
Чем не устраивает шрифт на скриншотах выше?
Скрины сняты из игры "Lunar: Silver Star Harmony"

Может ли шрифт писаться как переменная - то есть так(0x%8.8x\n)?
В данном случае эти переменные указывают на номера ошибок.

Тут попутно ковырнул еще пару игр.Опять разговор ниачём.

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/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?

lis5131
24.12.2012, 23:02
То есть, в настройках этот же шрифт?
Пробовал смотреть изменения шрифта в настройках при подмене ltn12.pgf?
Да, там тот же шрифт. (настройки и диалоги один шрифт)

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

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

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

lis5131
24.12.2012, 23:10
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%.

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


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

lupus
25.12.2012, 17:54
Если поколупать исходники zeroVshPatcher можно найти редирекции путей. Таким образом можно перенаправить на свой шрифт с лёгкостью. ИМХО самый классный путь и работает 100%.
Фрост, а есть ли возможность пересобрать из сырцов так, чтобы любой из шрифтов подменять можно было?
Ну или Ётя??? ::blush::

frostegater
25.12.2012, 18:43
lupus, есть.. да там легко.. завтра сделаю

lis5131
25.12.2012, 18:44
С жатием разобрался. А вот написать такой плагин было бы не плохо. Не селен я в с++.
Нашел там только одну строчку касающуяся ltn0.pgf - заменил на ltn12.pgf. И все равно он меняет основной системный шрифт.

lupus
25.12.2012, 20:04
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 не полностью текстовые файлы, а имеют формат бинарного кода + текстовые секции. Поэтому нельзя тупо открывать файл в текстовом редакторе, менять текст и там же сохранять в редакторе. От этого весь бинарный код пересохранится в заданной кодировке и испортится.

lis5131
25.12.2012, 20:22
Насчет текста я уже понял. Пишу спец редактор. С жатиями разобрался - использовал 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.

lis5131
25.12.2012, 21:21
А как его не менять, если русский текс и английский по длине никогда не совпадают. Русские слова, как правило, чаще всего длиннее. Да и как полный смысл уложить в диалоги. Так что размер переведённого файла по любому изменится и сжать его точно с оригиналом редко получится.

А толку-то от этого плагина? Когда вы игру переведёте и выложите, вы что там, ещё напишете инструкцию "Как запускать игру"? Типа залейте игру в папку ms0:/ISO; скопируйте наш уникальный плагин в папку ms0:/seplugins; пропишите путь к плагину в файл vsh.txt :xDD:
Бред! )))

Нужно писать модуль в папку Lunar\PSP_GAME\USRDIR\LUNAR\MODULE
И использовать лаунчер, как EBOOT.BIN, а EBOOT.BIN переименовать в BOOT.BIN.

Насчет текста - общая длинна русского текста всегда (почти) меньше английского исключение предметы, вещи, и т.д. Тут думаю проблем не будет. А если будут то все решаемые.

Насчет плагина может и бред. Для этого я и пришел сюда - за помощью. Или найти как путь перебить к шрифту, или найти иные способы....

lupus
25.12.2012, 22:42
А толку-то от этого плагина? Когда вы игру переведёте и выложите, вы что там, ещё напишете инструкцию "Как запускать игру"? Типа залейте игру в папку 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 или в эмуле.

Yoti
27.12.2012, 20:33
Тут ещё такая идея возникла, можно ли запилить не плагин, а модуль, чтобы его в образ класть вместо eboot.pbp, и сначала он грузился, а затем родной eboot?
Ещё чуть-чуть, и ты бы придумал патчить прометеем образы ХД
Если кто напишет лоадер для подмены ибута - скиньте мне сорцы)

lupus
27.12.2012, 20:43
Ну принцип тот же, что у прометея. Это так сложно реализовать? Я слаб в этом вопросе...

Yoti
27.12.2012, 21:15
Это так сложно реализовать?
Нет, не сложно. Но мне лень или некогда)

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 должен делать то что вы хотите. Даже изменять ниче не надо. Попробуйте ещё.

lis5131
28.12.2012, 12:13
я так посмотрел код и zVshPatcher должен делать то что вы хотите. Даже изменять ниче не надо. Попробуйте ещё.
Сколько я не пробовал он меняет только шрифт меню псп. А в игре фиг.

lis5131 добавил 28.12.2012 в 12:13
ErikPshat, да я кстати спорить тут бесполезно. Все зависит от того - какой текст попадется.
Ладно это бесполезный спор.

Вообщем я так понял с подменой шрифта, или заменой пути к шрифту - не чего не выйдет?

frostegater
28.12.2012, 12:39
lis5131, ааа.. может быть там залочка на APITYPE, я щас посмотрю

хм, нет залочки. Ладно, я пну разраба, пусть сделает поддержку для игр, у меня нет времени долго копаться.

lis5131
28.12.2012, 14:46
Спасибо, будем надеятся что он сделает. У меня псп 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, да я кстати спорить тут бесполезно. Все зависит от того - какой текст попадется.
Ладно это бесполезный спор.Да тут даже не в том дело, на каком языке текст длиней.

Я просто хочу сказать, что тут нет никаких ограничений на длину текста, т.е. не обязательно укладываться в длину исходного текста и не надо ваще париться по этому поводу, просто пиши сколько хочешь.

lis5131
28.12.2012, 21:40
Спасибо. Это хорошо. Остался вопрос с шрифтом пока пытаюсь раскопать.
Интересный момент ($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
28.12.2012, 23:53
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:

lis5131
29.12.2012, 01:20
Спасибо. Дельное замечание.
:drinks: С меня причитается.
СПАСИБО ОГРОМНОЕ.

ErikPshat
29.12.2012, 02:15
lis5131, Ну надеюсь ты понял, что нужно делать...

Сначала я прописал путь к карте памяти ms0:/font/ и всё получилось.
Потом прописал путь disc0:/PSP_GAME/USRDIR/LUNAR/MODULE/ и закинул туда свой кастомный шрифт - прекрасно работает из образа и даже очень быстро выводится, я заметил, что из флеша шрифт немного задерживается.

Пишешь именно в позицию 0х80С0 новый путь, надеваешь каску и противогаз, и вперёд с противотанковыми гранатами.
В общем заменял путь, снова дампил память, всё отлично, прописанный внаглую путь не затирается в памяти.

Нужно сделать однобайтовый шрифт PGF, чтобы можно было прямо в хексе или в текстовике писать русским шрифтом, без всяких закорючек и Юникодов, чтобы в шрифте не попадались служебные символы, т.е. шрифт должен быть в диапазоне C0-FF.
Текстовые секции, где написан текст, можно писать без ограничений на длину, не обращая внимания на сдвиг последующего кода, т.к. это всё-таки текстовик, просто со служебными символами.

lupus
29.12.2012, 11:27
Я бы остался на родном юникоде, по той лишь причине, что это позволит оставить читабельными надписи, которые пишутся в данные сохранения.
А этот мой пост кто-то перенёс?
Ребята, раз уж тут вскольз касались темы, может ли консольная версия 7zip пожать gzip? Что-то не разберусь :/

ErikPshat
29.12.2012, 13:04
это позволит оставить читабельными надписи, которые пишутся в данные сохранения.Эмм, а они могут стать не читабельными?
Вроде если запишутся в однобайте, так и считаются этой же консолью с этой игрой точно так же и тем же шрифтом.

А этот мой пост кто-то перенёс?
Там я тебе ответил, не помню чтобы пост кто-то переносил.

lupus
29.12.2012, 13:54
Эмм, а они могут стать не читабельными?
Вроде если запишутся в однобайте, так и считаются этой же консолью с этой игрой точно так же и тем же шрифтом.

Я про инфу, которую можно посмотреть из xmb
Там я тебе ответил, не помню чтобы пост кто-то переносил.
Єто меня глючит судя по всему...

ErikPshat
29.12.2012, 17:47
Ну вообщем вот, сделал парочку файликов libfont.prx на всякие разные случаи.
Какой требуется, таким нужно подменить аналогичный файл в образе игры через UMDGen.
Ессно лучший вариант будет - держать шрифт прямо в образе.

Там прописал пути к шрифту в 2-ух вариантах:

Один берёт шрифт с карты памяти, по пути ms0:/font/, туда и кидать любой шрифт под названием ltn12.pgf.
Второй берёт шрифт из образа, по пути disc0:/PSP_GAME/USRDIR/LUNAR/MODULE/, т.е. туда кидать и шрифт и сам libfont.prx

Ну и один нестандартный шрифт прилагаю, для теста, чтобы видно было, что шрифт берётся не из системы.
Куда и как прописывается шрифт, кто не понял, можете сами посмотреть через Хекс-редактор ;)

lupus
29.12.2012, 17:59
Эрик, а можешь сделать ещё такой либфонт, чтобы шрифт класть в disc0:/PSP_GAME/USRDIR/, а шрифт чтобы назывался ltn0.pgf тогда его можно будет практически к любой игре прикрутить, где это может понадобиться.

ErikPshat
29.12.2012, 18:17
Эрик, а можешь сделать ещё такой либфонт, чтобы шрифт класть в disc0:/PSP_GAME/USRDIR/
Да без проблем, забирай.

а шрифт чтобы назывался ltn0.pgf
Да просто переименуй ltn0.pgf в ltn12.pgf, какие проблемы, от этого шрифт же не будет работать именно так, как он называется )))
Я просто даже не стал искать, где это название прячется, т.к. нет в этом необходимости.
Да и чё-та я сомневаюсь, что эта библа будет работать с другими играми.

lis5131
29.12.2012, 20:28
Спасибо. Твои уроки очень полезны, я теперь во многих играх могу шрифт поменять.
Были пробелы - в моей голове, сейчас я пытаюсь их заполнить, ха.
УРААА - ErikPshat -у!

frostegater
29.12.2012, 20:56
Эрик как всегда молодец :)
проспасибал всю тему :D

lis5131
01.01.2013, 22:09
Походу возник такой вопрос libfont.prx - разбирается без проблем, а как его собрать обратно чтоб работал на моей прошивке?Пробовал PRX_Encrypter не чего не вышло?

ErikPshat
02.01.2013, 04:05
lis5131, ну я же его как-то собрал ;)

lis5131
02.01.2013, 07:26
ErikPshat, я хочу проверить кой какие идеи. Мне нужно еще два файла собрать из разных игр. У самого пока не выходит. Поэтому хочу научится сам собирать. Ты профи - поэтому и собрал.:good:

'А я не волшебник - я только учусь'.:dash:

PRX_Encrypter - файл на выходе получается 5,25 мб и не работает (оригинал 25 кб)
EasyPBPRX - файл на выходе получается 400 кб и не работает (оригинал 25 кб)

lupus
02.01.2013, 09:30
Криптовать не обязательно.

lis5131
02.01.2013, 09:49
Криптовать не обязательно.
Тогда не работает.thank youЯ уже третий день сижу собираю разбираю вставляю и не пашет.

lupus
02.01.2013, 10:20
Пробовал просто декриптовать и вставлять без изменений?

lis5131
02.01.2013, 10:52
Пробовал просто декриптовать и вставлять без изменений?
Там просто ELF файл будет, врят-ли он будет работать без подписи сонни.

ErikPshat
02.01.2013, 12:02
Криптовать не обязательно.
Тогда не работает.thank youЯ уже третий день сижу собираю разбираю вставляю и не пашет.Ну так правильно, если ты это пытаешься запустить на официальной прошивке, то без подписи и сама игра не запустится.
А на кастоме криптовать не обязательно.

lupus, только я один заметил, что файлы во вложениях подписаны Соней? :xDD:

lupus
02.01.2013, 12:46
Там просто ELF файл будет, врят-ли он будет работать без подписи сонни.
Вообще не вижу проблемы. Хомки неподписанные и декриптованные ибуты запускаются, так почему бы этому не запускаться.

Эрик, я даже не смотрел, чем подписаны, если честно. Для меня логично, что соневские модули подписаны соней, а те, в которых копались, будут запускаться на кастомах. Как-то так :)

lis5131
02.01.2013, 12:53
Вообще не вижу проблемы. Хомки неподписанные и декриптованные ибуты запускаются, так почему бы этому не запускаться.

Эрик, я даже не смотрел, чем подписаны, если честно. Для меня логично, что соневские модули подписаны соней, а те, в которых копались, будут запускаться на кастомах. Как-то так :)
А не, вру, пошла...

А на витке пойдет?

lupus
02.01.2013, 13:52
Через CEF - да

ErikPshat
05.01.2013, 13:47
Кстати, по этому поводу я тут вспомнил одну вещь...
Нужно сделать однобайтовый шрифт PGF, чтобы можно было прямо в хексе или в текстовике писать русским шрифтом, без всяких закорючек и Юникодов, чтобы в шрифте не попадались служебные символы, т.е. шрифт должен быть в диапазоне C0-FF.

Вот в этой теме я уже оказывается всё это делал и выкладывал, лежит там во вложении. Так что можно ваще писать однобайтной кириллицей, а не Юникодом. Вот текст сообщения из шапки той темы:

В архиве, для примера лежит шрифт TimesNewRoman.ttf, который я немного кастомизировал, удалив лишние языки, которые шли после русского алфавита. Английский вначале естесственно остался.

Так-же я в нём продублировал русский алфавит в области C0-FF (192-256). Поэтому его можно использовать в программах и плагинах, используя 8-битную (1-байтную) кодировку, вместо UTF-8.
Как он выглядит, можете посмотреть на скриншоте выше.

lis5131
05.01.2013, 14:09
ErikPshat, шрифт у меня уже есть готовый начинается с C0=А. С этим нет проблем. хочешь напрямую пиши хочешь как юникод (C0 00 C0 00 C0 00)

lupus
05.01.2013, 14:39
0xc0000 - это не юникод.

lis5131
05.01.2013, 16:43
0xc0000 - это не юникод.
Опечатался.:blush:Утф 8 - ты правда 00 много поставил.

ErikPshat
05.01.2013, 16:45
lis5131, ну ты можешь ваще без нулей писать 0xC0C1C2C3C4 (АБВГ)

По поводу подписи модулей попозжа напишу, когда башка от нового года отойдёт )))

lis5131
05.01.2013, 17:50
ErikPshat, не вопрос подождем.

lupus
05.01.2013, 18:30
lis5131, ну ты можешь ваще без нулей писать 0xC0C1C2C3C4 (АБВГ)

По поводу подписи модулей попозжа напишу, когда башка от нового года отойдёт )))
Подписать-то их можно, вот только какой в этом смысл? :)

ErikPshat
06.01.2013, 04:35
Подписать-то их можно, вот только какой в этом смысл? :)
Ну так чтобы всё выглядело оригинально, чтобы нубы не поняли где и как ковыряли, и чтобы игра запускалась на официальной прошивке

lis5131
06.01.2013, 07:26
Ну так чтобы всё выглядело оригинально, чтобы нубы не поняли где и как ковыряли, и чтобы игра запускалась на официальной прошивке
В точку. И еще одно иногда игры используют ЛБА вместо названия файлов. Тук конечно понятно что оригинальный (разжатый ELF) не впихнешь туда.

lupus
06.01.2013, 12:17
Ну так чтобы всё выглядело оригинально эстет ))
чтобы нубы не поняли где и как ковырялида пусть ковыряют, может чему дельному научатся. сам когда-то с нуля начинал.
чтобы игра запускалась на официальной прошивкеимхо подписанные игры давно не актуальны.
Но сам принцип знать конечно полезно.
И еще одно иногда игры используют ЛБА вместо названия файлов.Таких припоминаю аж 2 - ФФ3 и Рататуй. Правда в ФФ3 не совсем по лба. Может ещё о каких-то не знаю, но таких игр подавляющее меньшинство.
понятно что оригинальный (разжатый ELF) не впихнешь туда.Что-то не припомню, чтобы после декриптовки оригинальные соневские модули в размере прибавляли.

lis5131
06.01.2013, 12:35
lupus, вот несколько примеров
Сжатый Распакованный
20,2 КБ 34,4 КБ
23,6 КБ 50,3 КБ

Распаковывал libfont.prx из разных игр.

lupus
06.01.2013, 14:39
Хм, странно. Eboot.bin после декриптовки никогда размер не меняет, интересно, почему здесь так? о0

ErikPshat
06.01.2013, 18:40
lupus, модули сжимаются, а EBOOT.BIN только шифруется.

Причём у нешифрованного размер меньше, чем у шифрованного, как ни странно :D

lupus
06.01.2013, 23:39
Будем знать.