PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   Тюнинг интерфейса PSP (https://www.pspx.ru/forum/forumdisplay.php?f=109)
-   -   [Делаем] Цветной шрифт в меню XMB на М33-прошивках (https://www.pspx.ru/forum/showthread.php?t=59657)

ErikPshat 03.12.2007 07:20

[Делаем] Цветной шрифт в меню XMB на М33-прошивках
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Делаем цветной шрифт в прошивках 3.52 М33

Как известно, за цвет шрифов в меню XMB отвечает файл VSHMAIN.PRX, с которым нам и предстоит работать в данной статье.

Наша работа будет производится в 3 этапа:

I) Декриптовка
II) Кастомизация
III) Запаковка с новой криптовкой.

Предисловие (основные понятия)

Как известно, корпорация Sony в файлах прошивок до 2.6 вообще не применяла никакого компрессионного механизма.
Затем, начиная с прошивки 2.7, стал применяться механизм сжатия ZLIB, который с лёгкостью распаковывался и запаковывался.
Но, начиная с версии прошивки 3.10, Sony изменила механизм компрессии и назвала его - RLZ.
С этого момента в процессе кастомизации появились некоторые затруднения. Если распаковывать такие файлы прошивки удавалось, то обратно запаковать никак не получалось, поэтому приходилось назад запаковывать в старый формат ZLIB или вообще не запаковывать, что приводило к значительному увеличению объёма файла.

Что же за такой хитрый формат RLZ ?

Оказалось всё достаточно просто.
Файлы этого формата состоят из двух частей - Заголовка - ~PSP и собственно самого Исполняемого Кода.

1. Заголовoк - ~PSP - это та часть кода, которая содержит технические данные о файле и метод защиты (проверка целостности данных).
Находится в начале файла от 0х0 до 0х14F включительно в 16-ричной системе исчисления и содержит ровно 150 Байт

2. Исполняемый Код - ELF - это самый секрет фирмы.
Находится после Заголовка, начиная от 0х150 включительно и до конца файла.
Как оказалось - это попросту самодостаточный архив GZIP, главная особенность которого - возможность работать с непрерывным потоком данных, упаковывая/распаковывая их «на лету». Такой архив легко можно распаковать и запаковать любым современным архиватором WinRar, 7Zip, ZIP и пр.
Архивный файл GZIP должен иметь расширение .gz на конце после точки.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I. Декриптовка

Декриптовка - это самый лёгкий и быстрый этап.

Для примера я взял файл VSHMAIN.PRX из своей прошивки 3.52 M33-4, который лежит в папке: flash0:\vsh\nodule\vshmain.prx

После установки HEX Workshop, у вас появиться в контекстном меню при клике правой кнопкой мыши на файле - пункт "Hex Edit with Hex Workshop".

Нажмите правой кнопкой на файле VSHMAIN.PRX, предварительно скопированном из прошивки на компьютер, и выберите в открывшемся контекстном меню этот пункт.
Этот файл откроется в Хекс-редакторе.

По умолчанию в редакторе стоит способ отображения кода в двухбитном режиме, то есть по четыре знака в каждом столбце (по 2 бита). Нам же в данном случае, для удобства лучше будет созерцать код файла в однобитном представлении, так как в дальнейшем нам придётся оперировать 3-хбайтными и 4-хбайтными числами.

Для представления в однобайтном формате, сделайте следующее:
зайдите в меню "Options->Preferences" и на первой вкладке "Layout" в графе "Columns", выберите Group by: 1 (byte) и нажмите кнопку "Применить" и "ОК", как показано на рисунке ниже.

Теперь мы видим числа побитово, то есть попарно по два числа. Один байт - это двухзначное число в 16-ричной системе исчисления от 00 до FF.

Возьмите мышкой вертикальную полосу прокрутки справа и покрутите файл вниз и вверх. Обратите внимание на заголовок в начале файла ~PSP в правой части окна программы, о котором я говорил в Предисловии в пункте 1. Так же вы увидите в правом вертикальном столбце, на всём протяжении файла - Абракадабру. Основные приготовления мы сделали, а теперь поехали.

1) Выделите, протянув мышкой, весь небольшой код Заголовка от 0х0 до 0х14F включительно, или до 0х150 не включительно.

Числа 0х0 и 0х150 - это не что иное, как 00000000 и 00000150 в левом вертикальном столбце отсчёта, просто записываются для удобства без лишних нулей спереди. Эти числа так же отображаются в нижней строке окна программы под названием "Offset: XXXXXXXX" при установленном курсоре на определённой позиции.

Теперь нам нужно только удалить выделенный Заголовoк - ~PSP - от 0х0 до 0х14F включительно, чтоб у нас остался только Исполняемый Код - ELF, который начинается сразу после Заголовка - от 0х150 включительно и до конца файла. Как я говорил ранее в Предисловии - это и есть архив GZIP, который впоследствии нам останется распаковать (декриптовать, так сказать :)).

Обратите внимание на области, выделенные красными прямоугольниками:

а) Область EF - это 0х14F. Её мы тоже захватываем.
б) Область 00000150 - её мы уже не трогаем, это начало заархивированного GZIP-файла и это число указывает на порядковый номер первого Байта в этой строке - 1F.
Следующий байт 8B будет иметь порядковый номер (offset) - 00000151 и так далее. Короче расклад понятен?
в) Область Sel: 0x150 bytes - указывает на количество выделенных Байт. Sel от слова Select - Выбор.

2) После того, как мы выделили нужную область - Заголовoк - ~PSP, нужно от неё избавиться, чтоб у нас остался только архивный GZIP-файл.

Нажмите на клавиатуре кнопку "DELETE" (Del), чтобы удалить выделенную область.
Ну вот, от Заголовка мы избавились. У нас остался чистый Исполняемый Код - ELF, упакованный в формат GZIP.

3) Теперь нужно его сохранить.
Выбираем в меню "File->Save As..." и в открывшемся окне сохранения, дописываем в конец названия файла расширение .gz
Cохраняем его с получившимся названием vshmain.prx.gz

4) Теперь откройте получившийся архивный файл vshmain.prx.gz любым архиватором, лучше воспользуйтесь его ближайший родствеником - 7Zip.
Извлеките, находящийся в архиве файл vshmain.prx, только желательно под другим названием, чтобы не перепутать потом с оригиналом или не перезаписать случайно оригинальный файл вашей прошивки.
Назовите его лучше так: vshmain_elf.prx. Почему именно ELF, о котором я упоминал так же в самом начале, вы узнаете, если посмотрите на рисунок ниже.
Откройте ваш разархивированный (декриптованный) файл vshmain_elf.prx в Хекс-редакторе и посмотрите на начало кода в правом вертикальном столбце и вы увидите, что заголовок декриптованного файла начинается со слова ELF. Прокрутите файл вниз и понаблюдайте за правым столбцом и вы увидите, что там теперь вместо прежней Абракадабры появились вполне внятные и читабельные слова и всякие пути и расширения. Это говорит нам о том, что мы всё сделали правильно.

На этом процедура декриптовки у нас закончилась. Мы получили декриптованный файл, который теперь можно редактировать.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

II. Кастомизация - Изменяем цвет шрифта по месяцам

Продолжение следует...https://www.pspx.ru/forum/showthread.php?t=76183

DJ RINAT 28.12.2007 13:11

а дальше как?

Trip_Evgen_3 01.01.2008 21:48

Эрик, продолжи фак пожалуйста! ;-)

ErikPshat 02.01.2008 03:36

Я уже 2 месяца, как не могу закончить этот фак )))
Просто здесь нужно ещё скрины делать и туда-сюда, и всё откладывается на потом каждый раз. На 3.71 М33 уже давно пора было бы написать, да всё лень, другие дела отвлекают.

Можно было конечно 3-мя строчками накатать, типа:

1. Возьмите такую-то программу, декриптуйте файл.
2. Затем возьмите вторую программу, измените цвета.
3. Потом возьмите третью программу, запакуйте обратно.

Тем более, что такие GUI существуют во множественном числе и от разных авторов.

Но, я не сторонник таких факов, когда юзер тупо таким образом производит махинации с файлом и при этом сам не осознаёт, что делает и что происходит внутри самого файла при нажатии такой-то кнопочки в GUI.

Все мои факи написаны именно с уклоном на то, чтобы юзер сам своими ручками всё научился делать и конкретно осознавал бы, как всё устроено.
Короче, постараюсь как можно быстрее закончить с этим, а затем с 3.71 М33, а там 3.80 М33...

добавлено через 4 минуты
P.S. Ну а 1-ый параграф вы научились делать - распаковывать в ELF?

Trip_Evgen_3 02.01.2008 10:06

Неа, я даже не начинал, жду продолжения ФАКка, вот когда будет все готово, так там и сделаю все сразу! =)

P.S. Эрик, спасибо за такую заботу о юзерах, удачи тебе в написании ФАКа! ;-)

Alex!!! 09.03.2008 16:08

ErikPshat! У меня такая просьба! Мне ещё нету 13 =( и отец мне не разрешает мутить всякую фигню с зызой! Я бы хотел чтоб в январе шёл обычный синий цвет шрифта(не голубой), а все остальные как попало! Проша 3.52 М33. Пожалста! Буду очень благодарен:give_rose:

FAR 04.08.2008 23:49

Не получается..

ErikPshat 20.08.2008 00:12

Цитата:

Сообщение от FAR (Сообщение 696809)
Не получается..

Всё должно получиться. Напиши на каком этапе не получается. Это для прошивки 3.52 М33.

Продолжение наконец готово здесь: https://www.pspx.ru/forum/showthread.php?t=76183


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

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