Портируем старые плагины, такие, как Music.prx, под прошивку 6.60
Вложений: 10
Портируем старый плагин Music.prx под прошивку 6.60/6.61 https://www.pspx.ru/forum/attachment....achmentid=9775 В общем пришла идея телепортации старинного отличного плагина Music.prx под прошивку 6.60. Изначально этот плагин был изготовлен для консоли "neogeoCD 0.91" разработчиками Yoyofr & ZeLurker. Затем AhMan портировал его под PSP, во времена прошивок 3.02 ОЕ и совершенствовал его до прошивки 3.52 M33-2, добавляя кодеки и функционал. Позже за работу взялся Cpasjuste и выпустил релиз, якобы адаптировав плагин под прошивку 3.90. С тех пор эта версия так и летает по всем просторам интернета и хорошо зарекомендовала себя в работе даже на новых прошивках. Собственно суть проблемы такова, что на прошивке 6.60 плагин всё же неплохо работает, однако присутствуют свои костыли - это игнорирование настроек в файле конфигурации music_conf.txt, не работающие некоторые функции, по сочетаниям кнопок. В чём состоит проблема? Я просмотрел код плагина, он поставляется с исходниками. Несмотря на заявление Cpasjuste о портировании плагина под прошивку 3.90, я прекрасно вижу функции NID-ов от прошивок 3.7x. То есть, в прошивке 3.90 все NID-ы функций поменялись и меняются эти NID-ы постоянно от прошивки к прошивке. Что такое NID-ы? Это названия функций, которые вызываются именно по названию и выполняют присущие им действия. Но начиная где-то с прошивок 3.7x, Sony перестала напрямую вызывать функции в файлах своими именами, а стала скрывать их, хешируя названия в 4-байтный код, то есть к названию модуля прикрепляет закодированный номер функции. Вот как это выглядет на небольшом примере, после вывода дизассемблером PRXTool v1.1 Код:
0x01562BA3 [0x00001354] - sceAudioOutput2Reserve
Код:
0x0B61478E [0x000008F4] - sceAudio_driver_0B61478E Что за 4-х байтный хеш функции? Как я уже упоминал ранее - это хеш полного названия функции. Хотя я и раньше оперировал с хешированными НИДами и умудрялся отыскивать нужные, но не представлял откуда берётся этот хеш. Этот секрет недавно мне поведал frostegater в соседней теме, где он выложил свою консольную утилитку по превращению названия функции в её захешированный вид. Затем Yoti облегчил этот процесс, нарисовав GUI интерфейс для быстрого ввода-вывода информации thank you. Вы можете сами потестить программку: N1D G3N3R@T0R.exe На данном примере, на скриншоте, я взял первую строчку из 1-го блока кода выше, где указаны нерандомизированные НИДы, чтобы наглядно увидеть вывод хеша из названия функции:
А заменив это название в захешированный вид, его можно использовать как-то так: sceAudio_01562BA3. Хешь извлекается следующим образом... Из названия функции генерируется чек-сумма SHA-1 (160 bit). В данном случае SHA-1 равна - A32B56014147A25FDE15A7AF4D596DADA06BE3AB Затем берутся первые 4 байта и инверсируются побайтно. Получаем 01562BA3. Скрин генерации SHA-1 С чего начинать? Начинать следует с дизассемблирования этих функций самого плагина music.prx и вот что он нам выдаёт (я почистил лишние куски кода, которые нам абсолютно не нужны и оставил только названия функций, которые изменяются от прошивки к прошивке): Код:
Name: Music_prx А теперь посмотрим на SilverSpring's PSP PRX Libraries Documentation Project. Эту тему я специально подготовил, т.к. его сайт постоянно находится в ауте. И он много времени отдал этому проекту, вычисляя NID-ы: имена функций на каждой прошивке. Итак, открываем libdoc от прошивки 3.7х и смотрим файлы, соответствующие модулям в плагине music.prx, видим следующие цифры: Код:
kd/audio.prx sceAudio_Driver Скажу больше, в прошивке 3.90 нет этих цифр впомине. То есть, там НИДы функций полностью изменены. Поэтому заявление разработчика, что он адаптировал плагин под прошивку 3.90 - явная ложь. Итог: нам теперь явно ясно, что для портирования плагина под прошивку 6.60, необходимо искать соответствующие НИДы функций в этих файлах: Код:
Название файла Название модуля Заменить их в исходниках и заново скомпилировать новый адаптированный плагин под 6.60. Как правило, у каждого модуля существует определённый набор функций и их количество и порядок в файле редко изменяется. Поэтому, думаю, не составит труда сопоставить НИДы этих прошивок, либо ещё промежуточных и вывести параллели между прошивками. Далее можно выстроить параллели каждого типа НИДа в каждой прошивке и составить таблицу. Процесс исследования плагина music.prx
скрины отдельно И в результате получилась вот такая таблица:
Скачать: обновлённый плагин для 6.60/6/61 можно :download: отсюдава. |
Хорошая тема, поддержку этого плагина кстати добавили в тн-в на вите
может можно его модифицировать что-нибудь прикрутить типа персонализированных плейлистов для каждой отдельной игры пс1 и всякое такое? |
Цитата:
Ну собсно тему можно переименовать, как общую для всех плагинов, так как то, что я описал, касается всех плагинов и программ, использующих изменяемые НИДы функций. Ну плейлисты вроде как поддерживаются, судя по коду в исходниках. Да и модификацию можно произвести, имея исходники. Насчёт персонализации для каждой игры ты уже переборьщил )) |
Цитата:
и заготовленные заранее мп3 файлы играл для этого айдишника (а то осты пс1 приходится на компе хранить и заливать на виту под каждую игру вручную) в текущей версии которую я качал отсюда такой функции вроде нет: http://wololo.net/talk/viewtopic.php?f=56&t=17071 там в списке мьюзик.прх - фиг занет кто эту версию под 6.60 делал и когда и как |
Цитата:
Это и есть он, плагин для прошивки 3.71. Ты попробуй в конфиге ms0:/seplugins/music_conf.txt сменить директорию проигрывания музыки, например на DIR = ms0:/MUSIC/ или ещё что-нибудь поменять - оно не работает, всегда музыка подхватывается только из конфига по-умолчанию, встроенного внутри плагина music.prx, там прописан путь ms0:/PSP/Music/ По поводу поддержки плейлистов, я вижу в коде плагина строчки: Код:
ea3.EA3.ID3.id3.TIT2 // это поддержка тегов, встроенных внутри музыкальных композиций Код:
VOLUP //увеличение громкости |
Вообщем тут такое дело...
Я сейчас живу в чужом городе, в чужой квартире, без PSP, без телевизора и радио. Нужны декриптованные файлы PRX от разных прошивок, желательно полный набор: 3.71, 3.80, 3.95, 5.00, 6.20, 6.35, 6.60. Это основной ряд прошивок, в которых происходили значительные изменения. Иначе проследить передвижение NID-ов будет проблематично. Для этого нужно:
P.S. Немного расширил описание в шапке. Возможно кому-то будет интересно почитать мои сказки... |
ErikPshat, постараюсь выложить указанные декриптованные модули в скором времени.
апд: уже в процессе, больше половины готово, заливаю |
На 6.60 я вместе с 3.90 ссылки выкладывал в чате:
6.60 - http://yadi.sk/d/Iukg9RSLKfuFA 3.90 - http://yadi.sk/d/dJKDmkJ2Kftri Ссылки постоянные. SILENT-Pavel, если дело застопорится, напиши, я продолжу. |
vash, не вышло извлечь из 6.35 практически ничего (точнее вышло все кроме prx подулей), пробовал два раза. остальные заливаются успешно
готово: https://www.pspx.ru/forum/showthread....56#post1085356 |
Цитата:
П.С.: а для гошки декриптованные прошивки нужны? |
Цитата:
Попробуй мой дампер. Правда я его только что сделал на коленке, по бырому скопипастил все ключи из нашей таблицы и закомпилил. Проверять код было некогда, возможно не туда вставил и не то. Распространению не подлежит! Цитата:
Однако неплохо было бы пробелы в базе заполнить. А то ведь в нужный момент никогда не найдёшь. |
Используя другой дампер PSARDumper_660_neur0n 6.35 извлеклась. https://www.pspx.ru/forum/showthread....63#post1085363
|
vash, помню Нейроновский дампер тоже не всё извлекал, а Проксимовский отрабатывал, поэтому я в инструкции поменял их местами, хотя там раньше стоял от Нейрона. Получается один там косячит, другой здесь.
А мой дампер над головой в посту что? Там забиты все мыслимые и немыслимые ключи от всех прошивок и даже от Виты ))) Правда я на скорую руку скачал дампер Проксимы, запилил туда все наши ключи и скомпилировал. Не знаю, заработает ли вообще. |
Цитата:
|
ErikPshat, не спеши. Я твоим дампером не смог сдампить 6.35, за то смог им сдампить 6.60 от Гошки, а тем не смог (пустые и неполные папки). Так что, косяки в обоих версиях дамперов.
|
vash, во какая засада ))) а я уже поменял местами в инструкции. Ну пусть будет, всё равно лежат во вложении, потом надо будет с ними отдельно разбираться.
А тем временем я скомпилил дампер с исходников Нейрона с нашим пакетом ключей. Если не трудно, можешь проверить на 6.35 и на Гошке, а вдруг всё подхватит... Кстати, оказывается там, во вложении у дамперов, лежит же моя давняя сборка, не помню какая, когда и зачем, под названием PSARDUMPER_PSPxMOD.7z, а я сразу не заметил, но помню собирал тщательно и с любовью :). Можешь ещё её потестить, если есть время. Тоже интересно узнать о костылях. |
ErikPshat, из вложения 6.35 сдампила, 6.60 от гошки - нет.
PSARDUMPER_PSPxMOD 6.35 не сдампила, 6.60 от гошки - да. Раньше, та что ты переделал ( https://www.pspx.ru/forum/showpost.ph...1&postcount=11 ), работала наоборот. |
|
Цитата:
Главное, что баг установлен, осталось дело за малым, исследовать коды обоих и найти недостающее звено. Цитата:
Этого быть не может. Ты по видимому распихал по всем папкам одну и ту же прошивку 3.71. Короче что-то дофига понапутал. У COOLERbyPSP и vash я скачивал 3.90, 6.35 и 6.60, так там явно все НИДы меняются в каждой нововй прошивке. И исследовал готовые libdoc.xml 3.7х-5.00 с сайта SilverSpring, там аналогичная история, у каждой новой прошивки рандомизированные ниды сменяются в обязательном порядке. Цитата:
2. Ох, ё.п.р.с.т., опять ноль пропустил, как фрост ))) 3. Ну насчёт S я как бы в курсе. Именно так и собираюсь через стубы внедрядь НИДы. Ну так многие и поступают. |
А, да, если кто собирается тоже исследовать НИДы, и не понял, каким образом их дебажить, то через PRXTool нужно пользоваться следующими батниками:
P.S. Файлы от других прошивок ещё требуются... План действий таков: После декрипта файлов PSARDumer-ом, в корне создаётся папка F0. Переименовываете папку под номер прошивки с ясным пояснением, например "371_PRX_Decrypted" Внутри папки оставляете только папки, содержащие файлы PRX - это следующие папки:
|
Текущее время: 14:37. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.