Делаем цветной шрифт в ОЕ прошивках.
Открою небольшой секрет, откуда всё начиналось.
Все действия по расшифровке цветовой схемы шрифтов происходило буквально на днях на новом сайте
ZiNgA BuRgA - известного разработчика программы "
RCO Editor".
Проследить за развитием событий и помочь в деле полной расшифровки цветовой схемы всех шрифтов вы можете в
ЭТОЙ теме.
В стандартных приставках Sony PSP все шрифты меню отображаются только белым цветом. Но оказывается их расцветку тоже можно менять практически на любой другой цвет, что придаёт больше экстравагантности приставке и её обладателю. Вот примитивный пример, как выглядет шрифт после изменения цвета шрифта:
Файл, в котором записаны данные о цветах шрифтов меню называется "
vshmain.prx" и находится он в папке "
flash0:/vsh/nodule". Так же в этом файле можно менять месторасположение иконок батареи, часов, даты и прочее. Название файла "VSHmain.prx" само за себя говорит и расшифровывается как "Важная часть меню XMB".
Но этот файл трогать и изменять нельзя, так как он закриптован и тесно связан с другими файлами. Нужно воспользоватся другим методом, чтоб обойти защиту, а просто сделать перенаправление на другой такой же, только декриптованный файл, с которым можно безопасно производить любые действия.
Я проводил эксперименты только пока на прошивке 3.40 ОЕ-А и люди, которые параллельно этим занимались, тоже пользовались ею, так как цветовой код вначале был обнаружен именно на этой прошивке. Хотя, скорее всего, в прошивках 3.10 ОЕ и 3.30 ОЕ всё должно быть по аналогии, только декриптовать "
vshmain.prx" надо от соответствующей прошивки.
Для того, чтобы менять цвета шрифтов в меню XMB необходимо будет для начала извлечь и декриптовать файл
vsgmain.prx из официальной прошивки и затем можно по своему усмотрению править биты в шестнадцатеричном HEX-редакторе.
1. Скачайте сначала официальную прошивку "EBOOT.PBP", соответствующую вашей ОЕ и того же региона.
2. С помощью "
PBP Unpacker" извлеките из неё файл прошивки "DATA.PSAR".
3. Затем скачайте программку "
PSARdumper330", разархивировав закиньте папку "
PSARdumper330" на MemoryStick в папку ms0:/PSP/Game150, а файл "
DATA.PSAR" положите в корень карточки памяти.
Затем идите в меню "Игра->MemoryStick" и запустите оттуда программу "
PSAR Dumper V3". Нажмите "
Х" (крестик) для запуска процесса извлечения файлов оригинальной прошивки. По окончании программа сама выключится и выйдет в меню XMB.
Обратите внимание, что папок "
kn" и "
vsh/nodule" из ОЕ-прошивок в оригинальной прошивке не существует, но они схожи по названию с папками "
kd" и "
vsh/module" в оригинальной прошивке. А если посмотреть "flash0" в ОЕ-прошивке, то вы эти папки "
kn" и "
nodule" там увидите. Дело в том, что Dark_Aleks сам создал эти папки и большую часть файлов перенёс в них и переписал пути, таким образом обойдя защиту.
Так что ни в коем случае не перепутайте названия этих папок и ни в коем случае никогда не трогайте и не изменяйте файлы в папках оригинальной прошивки "kd" и "vsh/module", которые так же присутствуют в ОЕ-прошивках.
4. Итак, извлекли содержимое файла "DATA.PSAR". Подключаем приставку к компьютеру и видим в корне MemorySticka появившуюся папку "
F0" в которую и распаковались все папки с файлами оригинальной прошивки.
Зайдите в папку "F0/vsh/module", заберите оттуда оригинальный файл "vshmain.prx" и сохраните на компьютере. Папка "
F0" нам больше не понадобится и её можно удалить с карточки памяти.
Но это ещё не всё. Этот файл пока что нельзя использовать, так как он закриптован. Теперь надо его декриптовать.
5. Скачайте программу "
PRX Decrypter v1.3".
Из папки "1.00-style eboot" возьмите папку "
prxdecrypter" и скопируйте её на MemoryStick в папку ms0:/PSP/Game150.
В корне MemoryStick создайте папку "
enc" и скопируйте туда файл "
vshmain.prx" (110Кб).
Запустите программу "
prxdecrypter 1.3" из меню "Игра->MemoryStick", затем начните дешифровку, нажав "
X" (крестик). Процесс будет длится не более 1-ой секунды. По окончании нажмите кнопку "HOME", для закрытия программы и выхода в XMB.
6. Переместите папку "
enc" на компьютер, внутри которой лежит уже готовый расшифрованный файл "
VSHMAIN.PRX" (337Кб) и переименуйте его в "
vsh.prx". Обратите внимание, что закриптованный файл весил 110 Кб, а раскриптованный теперь весит 337 Кб.
7. Этот переименованный файл "
vsh.prx" скопируйте во "
flash0:/vsh/nodule", где так же лежит аналогичный закриптованный "
vshmain.prx", который шел с ОЕ-прошивкой.
Не перепутайте случайно названия папок nodule и module !
8. Перейдите в папку "
kn" в корне "
flash0" и откройте там текстовой файл "
pspbtcnf.txt".
Добавьте строчку "
/vsh/module/vshmain.prx" под строкой "
/kd/vshctrl.prx".
А самую последнюю строчку "
$%%/vsh/module/vshmain.prx" замените этой "
$%%/vsh/module/vsh.prx".
Закройте файл и сохранитесь. Смотрите рисунок ниже:
Ну вот, все приготовления закончены, теперь мы наизусть знаем, что где лежит и когда понадобится поменять цвет шрифта, мы знаем где искать наш родной уже файл "
vsh.prx".
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Теперь, когда надо поменять цвет шрифта, берём наш раскриптованный "
vsh.prx" и открываем его в любом HEX-редакторе.
В нашем случае в
HEX Workshop.
Начало цветового диапазона (vshmain.prx) на разных прошивках начиная с Января красного цвета.
Offsets:
Прошивка
3.40 ОЕ - 0x37780 Красный канал(float), 0x37784 Зелёный канал(float), 0x37788 Синий канал(float) и т.д.
Прошивка
3.30 ОЕ - 0x378B8 Красный канал(float) и т.д.
Прошивка
3.10 ОЕ - 0x376E8 Красный канал(float) и т.д.
Прошивка
3.03 ОЕ - 0x370D0 Красный канал(float) и т.д.
Здесь рассматривается пример для прошивки
3.40 ОЕ.
Для остальных прошивок всё абсолютно аналогично, только "
Start offset" будет начинаться с другой позиции, указанной выше.
Практически вся инструкция находится на этом скрине для 3.40 ОЕ.
Но если вам ни о чём не говорят все эти цифры, то давайте продолжим изучение этого HEX-редактора.
Для начала немного проясню, что означают эти цифры.
Люди в повседневном быту привыкли использовать десятичную систему исчисления. Видимо это связано с тем, что на руках у человека всего 10 пальцев и поэтому нам не составляет труда умножать и делить на 10. Но если бы у нас было 16 пальцев, то наверняка мы бы легче производили действия с 16-тью, чем сейчас с 10-тью. Например в уме могли бы делить и умножать на 16 не задумываясь. Но нас конечно сейчас эти вычисления поставят в тупик, так как мы не привыкли с рождения к такой системе исчисления, и в сантиметре у нас 10 миллиметров, а не 16...
В десятичной системе, как известно, существует десять базовых чисел: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. На их основе мы можем составлять числа до бесконечности и производить с ними любые арифметические действия.
То же самое происходит и в шестнадцатеричной системе, только в ней имеется 16 базовых чисел.
Вот эти числа: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F - итого 16 чисел включая НОЛЬ.
После 9-ти, в сравнении с десятичной системой следует A=10, B=11, C=12, D=13, E=14, F=15.
Это основной ряд однозначных чисел в шестнадцатеричной системе исчисления.
Далее счет продолжается как и положено 10=16, 11=17, ..., 19=25, 1A=26, ..., 1F=31, далее 20=32, ..., 2F=47..........FF=255. Вот мы и пришли к последней точке отсчёта. FF - максимальная двухразрядная величина, которая в десятичной системе равна 255. Ровно столько градаций одного цвета существует в системе RGB, где один определённый цвет состоит из сочетания трёх базовых цветов R-красный, G-зелёный, B-синий.
Ну вот, дальше я расписывать тут диссертацию не буду, а давайте перейдём лучше сразу к делу. Главное мы научились считать в шестнадцатеричной системе.
Цветовой код в файле vsh.prx записан, как нарисовано в верхней части скрина, в следующих пределах...
Start offset: 37780 - начальная точка кода
End offset: 3780F - конечная точка кода включительно
Что означают эти цифры?
Это просто идёт в шестнадцатеричной системе отсчёт по порядку двухразрядных чисел кода - от 00000000 до конца. Считать то мы уже научились.
Этот отсчёт показывается в первом левом столбце и отображает порядковый номер двухразрядного числа находящегося в начале каждой строки. В простонародье передние нули отбрасываются или записываются так: 0х37780, а в таблице мы видим 00037780.
Итак, запустив программу
HEX Workshop и открыв наш декриптованный файл
vsh.prx, мы видим в главном среднем окне коды файла, отображающиеся по умолчанию как 8 колонок попарно соединённых двухразрядных чисел, что составляет 16 двухразрядных чисел, как и положено предоставлять информацию шестнадцатеричному редактору.
Но нам такое представление будет не очень удобно, так как нам надо менять цвет одного месяца, состоящий из совокупности трёх цветов - по две колонки на каждый цвет.
Поэтому нам удобнее будет сузить среднее окно до шести столбцов, как показано на рисунке полупрозрачной изогнутой фиолетовой стрелочкой.
Теперь надо найти начальную точку кода. Возьмите справа полосу прокрутки мышкой и протяните её чуть ниже середины, пока в левом столбце не увидите заветную цифру 0003777С. Вот в этой строчке и находится начало цветового кода. Эта цифра указывает на номер позиции первого двухразрядного числа в этой строке - А4.
Поставьте курсор перед этим числом и стрелкой вправо на клавиатуре перемещайтесь, пока не дойдёте до цифры 00037780.
Это число вы будете отслеживать, наблюдая за позицией в самой нижней части программы. Смотрите как написано на рисунке красными буквами "Начальная точка отсчёта - offset: 00037780". Отсюда начинается информация о красном цвете Января месяца, далее идёт зелёный цвет Января месяца и переходит в первый столбик синего цвета Января месяца на новой строчке. Эти три цвета при перемешивании задают один цвет шрифта Января месяца. Справа на рисунке я нарисовал какому месяцу, какая строчка соответствует, только надо учесть, что синий цвет в первом столбце на одну строчку находится ниже. Ну это сразу понятно из рисунка.
Допустим, решили вы поменять цвет шрифта в Январе месяце на красный цвет.
Чтобы сделать красный цвет, нам надо поменять значения трёх цветов RGB - Красный-Зелёный-Синий. Для этого нужно оставить только красный цвет, а зелёный и синий выкинуть.
Поставьте курсор на первый
Красный цвет
Января месяца -
offset: 00037780.
Затем в нижнем левом окошке найдите значение "
Float", как показано на рисунке пунктирными фиолетовыми стрелочками и щёлкните дважды мышкой на значении напротив этого "Float". По умолчанию там стоит 0.94 (дробная запятая пишется как точка).
Значения цвета могут быть от 0 (нуля) до 1.
Введите цифру 1 и нажмите Enter, вы увидите как значения в коде программы изменятся
Затем переведите курсор на
Зелёный цвет
Января месяца -
offset: 00037784.
Опять щёлкните дважды в нижнем левом окошке на значении "Float" и введите цифру 0, так как зелёный цвет нам надо выкинуть из смешивания, нажмите Enter.
Теперь перейдите к следующему
Синему цвету
Января месяца -
offset: 00037788.
Щёлкните дважды в нижнем левом окошке на значении "Float" и введите цифру 0, так как Синий цвет нам надо выкинуть из смешивания, нажмите Enter.
Так же меняются цвета и во всех остальных месяцах.
Какие именно цифры вводить в поле "
Float" для изменения других сочетаний цветов подробно написано в этой теме -
Делаем цветные - SCE, иконки батареи, даты, времени и пр.