Sunday, 2024-12-22
FuSa Project
[ New messages · Members · Forum rules · Search · RSS ]
  • Page 1 of 3
  • 1
  • 2
  • 3
  • »
Русификация DCv8
ErikPshatDate: Saturday, 2009-04-11, 10:41 AM | Message # 1
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Andy_maN, можешь подсказать как мне сконвертить intraFont.prx из исходников intraFont 0.31.

Насколько я понял, BenHur встроил кириллицу CP1251 (Cyrillic) и CP866 (Russian) в версии 0.30.
И с помощью его библиотеки можно конвертить шрифты во внешние приложения.

Кстати, откопал SRC_intraFont от той пандоры DDCv8, которая прилагалась к релизу.
Так вот, там легко, без ошибок скомпилировались сразу два файла: intraFont.elf и intraFont.prx
Но когда я заменил в сборке на новые версии 0.31 intraFont.c и intraFont.h, то полезли ошибки.
Что-то там не склеивается...

Я пытаюсь русифицировать Пандору, но там старая версия intraFont 0.22 без поддержки кириллицы.

P.S. Я уже взломал защиту Алекса в Апдейтере 5.00М33-6 и поменял там Рекавери и VSH на русские, а ru_recovery.txt заменил вместо es_recovery.txt и перенаправил во flash1 biggrin
Да, ещё и перевёл установщик. Теперь при обновлении с 3.52М33-3 и выше сразу ставится всё пучком и вся установка на русском полностью.
Там, кста, 2 установщика. Один с предыдущих версий, второй с 5.00М33.

Теперь вот мучаюсь с Пандорой. Короче, так же встроил русские Рекавери и VSH.
ru_recovery.txt тоже направил во flash1:/...
Потом обновил файлы от 6-го обновления. Там вдобавок различаются файлы для FAT и для SLIM.
В ообщем Пандора 5.00М33-6 работает как часы.
Вот хочется добить её до конца, чтобы установка шла на русском.


Message edited by ErikPshat - Saturday, 2009-04-11, 6:53 PM
 
Andy_maNDate: Sunday, 2009-04-12, 1:28 PM | Message # 2
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Quote (ErikPshat)
Кстати, откопал SRC_intraFont от той пандоры DDCv8, которая прилагалась к релизу.

Так давай их тоже сюда smile
PS
У тебя только исходники библиотеки или всего анбрикера?
Выкладывай все что есть

 
ErikPshatDate: Monday, 2009-04-13, 1:44 AM | Message # 3
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Andy_maN, Не, всего анбрикера исходников у меня нет, откуда ))). Правда я его весь расковырял и знаю, где, в каком месте какой файл лежит и что внутри этого файла находится. Могу из большего файла сделать меньший и засунуть куда надо.

Исходники SRC компиляции intraFont v0.22 лежат в папке с Despertar del Cementerio v8: http://www.dark-alex.org/
И я из них скомпилировал сам intraFont. Но вот новую версию v0.31 никак из исходников BenHura не могу скомпилить. Проверял, все библиотеки include есть.

Короче, этим шрифтом сейчас многие программёры заинтересовались и насколько я понял, буквально все разом переходят на этот шрифт и уже на потоке компилят программы. Там привязки к debug 8х8 нет. Шрифт легко масштабируется, наклоняется, жирность меняет. На форуме QJ и на Ps2dev только о нём и говорят.

Вот ещё с этим как-то связано, DAX выпустил библиотеку VLF Library 1.0 и походу на её основе шрифт и базируется или наоборот.
И она фигурирует вместе с intraFont в DDCv8. Вот ещё ссылка: http://dark-alex.org/vlf10.zip
Скопируй ссылку, потом пройди по ней и там вставь, а то антиличь прибивает.

Я просто что-то недогоняю, т.к. не имею опыта в программировании и для меня непонятны эти расширения .h .c .o
Вот в Хексе я могу что-то хакнуть, а в С++ нифига. Вот только начинаю первые шаги пробовать.
Уже понаустанавливал и PSPDEV и PSPSDK и CYGWIN, да ещё Dev-Cpp и теперь мотаюсь между этими папками.

В общем смысл таков... В старом фонте 0.22 не было кириллицы, поэтому там и ничего не отображается по русски.
А теперь есть исходники 0.31, а готового intraFont почему-то нигде нет.

Вот ещё в исходниках такие подозрительные строчки нарыл:

int vlfGuiSystemSetup(int battery, int clock, int notuserwp);

/**
* Gets language used by vlf application
*
* @returns - The language set to be used by current vlf application
* By default is initialized to user language.
*/
int vlfGuiGetLanguage();

/**
* Sets language to be used by blf application
*
* @param lang - The language to be set.
* This only sets the language to be used by current vlf application,
* it doesn't overwrite user preferences in flash.


Message edited by ErikPshat - Monday, 2009-04-13, 2:36 AM
 
Andy_maNDate: Monday, 2009-04-13, 6:31 PM | Message # 4
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Quote (ErikPshat)
Не, всего анбрикера исходников у меня нет, откуда

Жаль, у меня есть только dc6
Quote
... и засунуть куда надо.

+1 biggrin
Quote
Исходники SRC компиляции intraFont v0.22 лежат в папке с Despertar del Cementerio v8

Все ОК понял, видел, уже смотрю

---

По поводу VLF Library
Собственно эта библиотека использует уже реализованные в прошивке средства построения пользовательского интерфейса
...и ничего более

Т.е. если библиотека intraFont содержит весь код в себе и работает непосредственно с файлами шрифтов, сама грузит, обрабатывает и выводит, а VLF Library лишь содержит "ссылки" на функции уже реализованные в самой прошивке (например те которые использует XMB)

---

Quote
.h .c .o

.h HEADER - Заголовок - Файл содержит объявление функций, констант, определений и т.д.
.c (.cpp) - "C" ("C++") - Файл содержащий сам код
.o object - объектный файл - файл получается в результате трансяции файлов .c (.cpp)

Впоследствии из объектных файлов после линковки собирается исполнительный файл (который чаще всего "стрипают" т.е. удаляют из него всю дополнительную информацию(ака debug info))

Quote
Уже понаустанавливал и PSPDEV и PSPSDK и CYGWIN, да ещё Dev-Cpp и теперь мотаюсь между этими папками.

Учиться лучше на консольных приложениях - здесь Dev-Cpp в помощь, как говориться Hello world и поехали
PSPDEV - устарел
CYGWIN - не удобно
PSPSDK - для вин юзеров идеальный выбор

Так что достаточно установить Dev-Cpp и PSPSDK (сейчас есть версия со всеми библиотеками)

Описания функции идёт перед самой функцией(хотя может ты просто неаккуратно скопипастил smile )

/**
* Gets language used by vlf application
*
* @returns - The language set to be used by current vlf application
* By default is initialized to user language.
*/
int vlfGuiGetLanguage();

/**
* Sets language to be used by blf application
*
* @param lang - The language to be set.
* This only sets the language to be used by current vlf application,
* it doesn't overwrite user preferences in flash.
*/
int vlfGuiSetLanguage(int lang);

В этих строчках подозрительного ничего нет, возможно ты замечал что некотрые игры выводят по нажатию на HOME англоязычное Do you want to exit the game?
В данном случае игра установила заранее английский язык для диалогов UI т.е. нечто вроде vlfGuiSetLanguage(ENG_LANG)
(это не совсем точное описание процесса, но, думаю, суть ясна)

 
Andy_maNDate: Monday, 2009-04-13, 6:58 PM | Message # 5
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Скомпилировать то не сложно, но для правильной работы библиотеку intraFont надо исправлять
- определиться с функциями *PrintUCS2Shadow
- установить кодировку по умолчанию 1251

+ (вероятнее всего) Понадобится как то утрясти неприятности с изменением NIDов

Attachments: INTRAFONT_0.31.rar (40.8 Kb)
 
ErikPshatDate: Wednesday, 2009-04-15, 1:18 AM | Message # 6
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Andy_maN, во, спасибо за такой исчерпывающий ответ. По ходу я уже наполовину понял в программировании. Реально.

Подозрительное я заметил, что в исходнике intraFont как раз перед компиляцией выставляют языковые параметры.
А раз есть исходники, значит можно подставить ID русского языка.

Вот как раз при компиляции 0.31 у меня и выползали ошибки именно по этой функции PrintUCS2Shadow

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




Message edited by ErikPshat - Thursday, 2009-04-16, 2:42 AM
 
Andy_maNDate: Saturday, 2009-04-18, 2:32 PM | Message # 7
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Модификация версии 0.21
Незнаю, как насчет последней, но у этой явные проблемы с шириной русских символов

Attachments: intraFont.prx (26.3 Kb)
 
lupusDate: Saturday, 2009-04-18, 6:15 PM | Message # 8
Major
Group: Users
Messages: 87
Reputation: 1
Status: Offline
loading...
если шрифты берутся из флэш0, то это вполне может быть проблема самой консольки. ну не очень в сони русские шрифты сделали sad
уж очень широкие...

 
Andy_maNDate: Saturday, 2009-04-18, 6:46 PM | Message # 9
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
lupus, тут проблема в библиотеке
т.к. в 0.31 все более меннее нормально работает
(вот небольшой примерчик - правда слова наезжают друг на друга, но это из-за того что мне лень было подсчитывать координаты smile - я оставил от англо варианта)
Но суть другая - здесь отступы считаются вполне адекватно

последняя строка "ПРОВЕРКАпроверка" - выведена с помощью intraFontPrintUCS2 - т.е. без изменения кодировки
аналогичный пример с версией 0.22 не сработатывает - выводится пустота

Attachments: EBOOT.pbp (120.5 Kb)
 
ErikPshatDate: Saturday, 2009-04-18, 8:33 PM | Message # 10
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Quote (lupus)
если шрифты берутся из флэш0, то это вполне может быть проблема самой консольки.
Нет, шрифты берутся не из flash0.
Они как раз беруться из intraFont. Вот Пандора устанавливается теперь с меню, похожим на VSH, но ведь когда ты восстанавливаешь брикнутую PSP вообще без файлов в прошивке, то Пандора всё равно с VSH меню устанавливает прошу.

Quote (Andy_maN)
в 0.31 все более меннее нормально работает
И что теперь, какие успехи. Я что-то не догнал. Значит 0.31 ты всё-таки поборол?

Смотрю тут как буквы шевелятся, прикольно. Отлично отображается. Если координаты поправить, то ваще сказка.
Только как это можно применять, например в последней Пандоре 5.00 М33-4???

Кстати, взгляни на мою Пандору 5.00 М33-6 (не путать с М33-4))): http://www.pspx.ru/forum/showthread.php?t=77904
Там сразу устанавливается русское рекавери и VSH вместе с настройками, встроены обновления 6-ого апдейтера.
Вот только сама установка пока на английском.

А это полностью русифицированный апдейтер 5.00 М33-6 вместе с установкой на русском: http://www.pspx.ru/forum/showthread.php?t=75421


Message edited by ErikPshat - Saturday, 2009-04-18, 8:35 PM
 
Andy_maNDate: Sunday, 2009-04-19, 1:21 AM | Message # 11
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Quote (ErikPshat)
Нет, шрифты берутся не из flash0. Они как раз беруться из intraFont.

Дабы разложить все по полочкам, объясню что к чему на самом деле:
intraFont - это библиотека работы с внутренними шрифтами псп (которые используются в всх меню, меню выхода и прочих диалогах)
Шрифты загружаются этой библиотекой из папки flash0:/font/
Сама по себе библиотека intraFont не содержит шрифтов, а является всего лишь удобным интерфейсом для программиста, собирающегося выводить родные шрифты псп

По аналогии libTTF (true type fonts) также не содержит никаких шрифтов, а предназначена для упрощения работы с привычными для нас .ttf шрифтами

Quote (ErikPshat)
но ведь когда ты восстанавливаешь брикнутую PSP вообще без файлов в прошивке, то Пандора всё равно с VSH меню устанавливает прошу.

видимо сначала извлекаются шрифты, т.к. я уже говорил intraFont в себе их не содержит

Quote (ErikPshat)
И что теперь, какие успехи. Я что-то не догнал. Значит 0.31 ты всё-таки поборол?

Да тут видишь какая картина:
В сочетании с новой версией intraFont 0.31 пандора плохо работает
+все координаты сбиваются - текст становится выше чем нужно
+параметры функций изменились и теперь например setstyle работает неправильно
+нехватает функций для вывода одних теней

В старой версии все нормально выводится, но нехватает вывода русских символов.
Ладно я добавил конвертирование на лету, теперь русские буквы выводятся (аттач в посте №61)
Но! отступы слишком большие

Т.е. выход такой:
Либо исправлять 3 пункта и подгонять новую библиотеку 0.31 под dc8
Либо решить проблему с отсупами в 0.22

P.S.: в новой 0.31 версии при выводе в кодировке ютф-8 - такая же проблема с отступами (если я правильно помню)

 
ErikPshatDate: Sunday, 2009-04-19, 4:57 AM | Message # 12
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Quote (Andy_maN)
видимо сначала извлекаются шрифты, т.к. я уже говорил intraFont в себе их не содержит

Пандора по идее предназначена восстанавливать прошивку. Допустим, я умышленно удаляю все файлы из прошивки подчистую.
Перегружаюсь. И что, консоль не врубится, т.к. там ничего нет, даже шрифтов.
Но когда я запускаю Пандору, то тут же появляется меню vsh. И весь процесс установки прошивки проходит с крупным шрифтом и с тенями.
Откуда взяться шрифту PGF от прошивки, которой нету.

Видимо сам же ltn0.pgf содержится где-то в соседнем файле, т.к. шрифт в точности такой, как в прошивке.
Я заметил, что в файле resurrection.prx содержится тоже intraFont. Видимо он используется уже во время анбрика. А тот внешний, просто для инсталляции файлов на карточку.

 
Andy_maNDate: Sunday, 2009-04-19, 3:29 PM | Message # 13
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Обо всём попорядку:

Во-первых: Все получилось - теперь пандора умеет работать с русскими шрифтами
Как оказалось проблема с отступами заключалась в следующем:
Пандора грузит шрифт flash0:/font/jpn0.pgf - и именно в нём я видел проблему с отсупами (вывод ютф-8 строк в 0.31)
банальная замена на flash0:/font/ltn0.pgf - все исправляет

Во-вторых: Откуда берётся шрифт?
Во время создания (т.е. запускаем из ХМБ) шрифт используется из flash0:/font/jpn0.pgf
Во время исполнения используется шрифт извлеченный из прошивки во время инсталяции
во всяком случае это логично предположить, т.к. комплект пандоры создается, исходя из какой либо прошивки, то для м33 было бы глупо таскать с собой еще такой же шрифт.

PS: попозже выложу результат wink

 
Andy_maNDate: Sunday, 2009-04-19, 4:34 PM | Message # 14
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
vlf.prx - смещение - 0x43939 - заменить jpn на ltn
В аттаче модифицированный IntraFont 0.22 - заточенный под CP1251
в отличие от аттача в посте № 61 - не использует библиотеку libccc - алгоритм максимально упрощен

PS: Это только решит проблему с выводом интрафонтовских надписей
Еще останется две:
Диалоги используют 2у байтовую кодировку для русских символов
способы решения:
а) модифицировать библиотеку vlf
б) придумать короткие фразы на русском меньше в ~2 раза чем оригинал
Язык диалогов
а) модифицировать библиотеку vlf
б) модифицировать вызов функции установки английского языка (если она вызывается)

Attachments: 7538336.prx (17.5 Kb)
 
ErikPshatDate: Tuesday, 2009-04-21, 1:48 AM | Message # 15
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Andy_maN, WoW отличная работа!!!!!

Я не заметил правда ограничений, про которые ты говорил. На стандарте после правки vlf, твой интрафонт выводит англ буквы как обычно, но, тень от процента прогресса почему-то центрируется по центру. Т.е. прогресс в процентах отображается слева от прогрессбара, а тень от этих процентов отображается по центру ))). Прикольный эффект.

При подстановке русского текста ничего особо не заметил. По поводу меньше в 2 раза тоже не заметил.
Смотри как это выглядет (не нашел место, где прописано слово O Cancel)

Вообще огромный респект за находки!!! Надежда только на тебя, т.к. больше не на кого надеяться. Копай дальше, если будет время...

Логично предположить, что во время анбрика, шрифт берётся из ms0:/TM/DC8/font/jpn0.pgf ))) Тут значит тоже достаточно поменять путь в resurrection.prx (вероятно).

Ещё идёт обращение к этим пунктам, вот практически все ресурсы, только почему-то на английские диалоги, но ведь там есть и русские диалоги:

flash0:/vsh/resource/system_plugin_fg.rco - идёт вывод батарейки и часов с тенями. Как раз отсюда выводятся значки X, O, [], ^, индикатор загрузки...

  • tex_battery
  • tex_battery_shadow
  • tex_triangle
  • tex_triangle_shadow
  • tex_circle
  • tex_circle_shadow
  • tex_cross
  • tex_cross_shadow
  • tex_busy
  • tex_busy_shadow

flash0:/vsh/resource/topmenu_plugin.rco

flash0:/vsh/resource/topmenu_icon.rco

  • tex_game
  • tex_sdwf_game

flash0:/vsh/resource/system_plugin.rco - Вот отсюда идут подписи к кнопкам: Да, Нет, Ввод, Отмена. И по ходу прогрессбар и какой-то фокус текста.

  • tex_arrow_right
  • tex_arrow_right_shadow
  • tex_arrow_left
  • tex_arrow_left_shadow
  • tex_default_spin_arrow_down
  • tex_default_spin_arrow_down_shadow
  • tex_default_spin_arrow_up
  • tex_default_spin_arrow_up_shadow
  • msgsystem_no - Нет
  • msgshare_opt_edit - Изменить
  • msgsystem_enter - Ввод
  • msgsystem_cancel - Отмена
  • msgsystem_back - Назад
  • msgsystem_yes - Да
  • tex_default_progress_base
  • tex_default_progress_base_shadow
  • tex_default_progress_slider
  • tex_default_text_focus

flash0:/vsh/resource/sysconf_plugin.rco - Text Data


  • msgshare_direction_r - Для продолжения нажмите кнопку ?
  • msgshare_direction_lr - Для возврата нажмите кнопку ?, а для продолжения кнопку ?.
  • msgshare_direction_l - Для возврата нажмите кнопку ?.
  • msgshare_opt_edit

flash0:/vsh/resource/system_plugin_bg.rco - прогрессбар с процентами.


  • mdl_bg

flash0:/vsh/resource/01-12.bmp - бэкграунд FAT.
flash0:/vsh/resource/13-27.bmp - бэкграунд SLIM
flash1:/vsh/theme/wallpaper.bmp
wallpaper_mode

/CONFIG/SYSTEM/XMB/THEME
/CONFIG/DATE


  • color_mode
  • system_color
  • time_format
  • date_format

Короче, выяснив все эти дела, смори что у меня теперь получилось:

То есть, слово "Отмена" стала на русском языке.
Я просто взял декриптованный файл system_plugin.rco и в RCOEditor поменял английское слово Cancel на Отмена, и закинул в прошивку.
В хексе адрес этого слова в английской позиции 0х1ABC и записано в Юникоде, а в русской позиции находится в 0х200С в system_plugin.rco.
Похоже и тени берутся из прошивки, а intraFont.prx только указывает координаты, размер, в общем выполняет служебные функции.

Теперь ясно конкретно, что действительно intraFont.prx только библиотека и обращается она к vlf.prx, которая знает, откуда брать ресурсы. А берёт она их явно из прошивки. В случае с Анбрикером, то обращение идёт из IPL, которая обращается к ms0:/TM/DC8/kd/resurrection.prx, в котором находятся и intraFont.prx и vlf.prx, которые тоже берут ресурсы из прошивки, но только с карточки памяти ms0:/TM/DC8/...

Остаётся вопрос: Как бы подставить, чтобы обращение шло не к английским диалогам, а к русским.

Added (2009-04-21, 1:48 Am)
---------------------------------------------
На сколько я понял, проблема только со словом "Отмена", которая берётся из system_plugin.rco. Ну это допустим решаемо исправлением пути на ms0:/PSP/GAME/DC8/sys_plug.pco
здесь: %d/%d %d:%02d %s....%d/%d %d:%02d.../system.%s/%s.rco

Остальные слова, как X Exit и другие, прописаны явно в Ибуте.

По поводу смещения теней, о которых я выше говорил, то замечено только в процентах под прогрессбаром.
Вот тень центрируется по горизонтали:
Хотя нет, проверил на оригинале, это не тень съезжает, а цифра с процентом съехала влево.
А тень как положено, стоит на месте.

А так, больше с русификацией проблем нет, вот последняя картинка установки.
Всё пучком, правда знак подчёркивания почему-то не отображается:




Message edited by ErikPshat - Tuesday, 2009-04-21, 2:31 AM
 
  • Page 1 of 3
  • 1
  • 2
  • 3
  • »
Search:

Copyright MyCorp © 2024
Create a free website with uCoz