Портируем старые плагины, такие, как 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 - это следующие папки:
|
Цитата:
кроме 6.35 все делал по инструкции, проверял несколько раз внимательно реальная псп щас далеко от меня к сожалению |
SILENT-Pavel, поставь Araxis Merge и сравни папки разных прошивок. Получишь результат. В проге есть возможность сравнения не по одному файлу, а сразу по 2-3 папки. Увидишь, какие файлы содержат различия, а какие идентичны. Мне долго качать эту прогу, весит аж 40 Мб. Хотя щас скачаю за часок.
Скорее всего декриптовалось всё нормально, просто когда ты всё раскладывал по папкам, наверняка копирнул в буфер прошивку 3.71 и таким образом её файлы раскидал по разным прошивкам. Поэтому размер папок разный, но обновлённые файлы от 3.71. А может это у меня что-то глюкнуло, т.к. название файла одно было audio.prx, я прогонял через PRXTool и каждый раз закидывал файл от другой прошивки. В результате все тесты оказались 100% идентичными при сравнении. |
Про какие именно nid'ы хоть речь? Они могут быть изменяемые (обычно это те, что используются внутри ядра) и неизменяемые (после изменения которых отвалились бы старые игры, так что преимущественно юзермоды); могут быть быть прямые (которые sha1 от функции) и непрямые (которые "солёные" и резолвятся прошивкой в прямые).
|
Вложений: 1
Цитата:
Ну и вот отчёт твоей проделанной работы :) Там персиковым цветом выделены несвязанные файлы, т.е. которые есть в одной папке, но отсутствуют в другой. А бирюзовым цветом выделены вставленные файлы, т.е. которых не было в других папках, но были добавлены в новых. Собсно программа сверяет файлы не по размеру, а по внутреннему содержимому побайтно и в столбике "Различия" показывает количество различающихся блоков. Ну и как видно, ни один файл не имеет ни одного отличия :xDD: Сравнительный анализ Цитата:
Ну если что накосячим, надеюсь ты направишь в нужное русло ;) |
Цитата:
|
сделаем пробник по новой с чистого листа. может и правда спешил и что-то перебил горячими клавишами. Старое вложение удалил.
взял 3.71, 5.00 и 6.35 взял три дампера под 6.60 из сборника "PSARDumper's Pack 2.60-6.60" а именно: PSARDumper_660 PSARDumper_660_neur0n PSARDumper_660_proxima папку F0 целиком заливаю вообще ничего не сортируя самостоятельно из неё все пожато LZMA и для каждой прошивки 3 версии папки F0 от разных дамперов (подписаны) если все внутри будет правильно, доделаю остальные прошивки и залью в базу вложением, либо может кто поможет побыстрее с реальной псп https://www.mediafire.com/?wih7ne2v27w0o1q 21/276 mb upd: видимо не понимаю что именно нужно и в каком виде. уступаю более понимающим, сам сливаюсь |
Вложений: 1
Вот вам архивчик, который я использую для первичного реверса модулей. Кинуть в папку bin/elf/prx, запустить батник. Есть моменты, которые я всё хочу доработать, но они не такие критичные.
|
Вложений: 1
SILENT-Pavel, эх-эх, опять косяки, косяки да пяточки :) Ты бы хоть сам бы проверил, я же тебе уже и прогу подогнал.
Позже допишу, что почём. Короче сравнил сначала в пределах одной прошивки, как отрабатывают дамперы. Ну то есть сравнивал так:
В общем такое ощущение, что PS VITA имеет крутой кэш и по видимому кэширует предыдущие действия. Если в следующий раз попадаются файлы с теми же именами, она их достаёт из кэша, чтобы не тратить лишнее время на декриптовку того же по названию файла, который недавно декриптовали :D Вот такое складывается впечатление. |
Значит, нужно декриптовкой заниматься на ПСП и дампером от Нейрона? Могу сейчас заняться этим. Выложу в теме [БАЗА] Декриптованные RCO и PRX от всех прошивок без RCO-файлов.
П.С.: ErikPshat, просьба, уточни, от каких прошивок нужны на данное время эти файлы, смысла делать ото всех нет. |
Цитата:
Цитата:
Например папки "codepage", "data", "dic", "font" совершенно не нужны во всех архивах, т.к. они во всех прошивках одинаковы и никакой полезной нагрузки не несут. |
Цитата:
|
Цитата:
Думаю было бы то же самое с дампером Нейрона, если бы его запускали в последнюю очередь. То есть, опять бы складывались файлы из кэша Виты от предыдущих декриптовок. Единственное отличие дампера Нейрона, что у него заложен механизм декриптовки 6.35, а другие его не учли. Я даже предполагаю где это надо копать. Дампер Unknown повёл себя так на прошивке 6.35, потому что сделан был на осове дампера Проксимы, по видимому SILENT-Pavel, использовал одну из моих версий, ведь там одна версия была основана на Проксиме, а другая на Нейроне. Но моя версия в теме ПСАРдампера, помнится, должна была извлекать и декриптовать файлы rebootex в корне и файлы *.img + ещё какие-то файлы, потому что я там добавлял код и ключи. И ещё у меня есть мысля, что на Вите должна быть функция в настройках "Отключения КЭШа" ??? :scratch_one-s_head: Цитата:
|
Итак, портирование плагина music.prx for 6.60 произведено.
Результаты исследования с таблицей и наводящая инструкция в шапке. Просьба потестить во всех режимах на прошивке 6.60 и доложить о багах... |
ErikPshat, работает на вите.
Главное отличие визуальное от не портированного - больше информации при нажатии SELECT + квадрат апд: походу дебаг стоит единичка в конфиге. он эту инфу и показывает апд2: работает функция "IN_GAME_MUTE = SELECT|HOME" с эмуляцией хоум на Л + Р на не портированном плагине эта функция не работает но показывает что типа включается и выключается апд3: на обоих версиях плагина не получается сменить частоту цпу |
Цитата:
1. да 2. да 3. да 4. да 5. да 6. да 7. нет 8. нет 9. ? 10. да 11. да 12. да старый оригинальный плагин с вололо: 1. да 2. да 3. да 4. да 5. да 6. да 7. нет 8. нет 9. ? 10. да 11. нет 12. да --- - наверное в обоих случаях перезапуск плагина работает, но визуально ничего не происходит. Цитата:
кстати насчет кэша псп ты спрашивал выше - нет такой настройки так что все мои тесты считать адекватными только для другой виты, а не для псп сцены в целом например потому, что виты тн-в может включать старые плагины иначе чем псп 2000 например, на псп мб не работает то что поддерживается тн-в для старых плагинов |
Кстати, говорили, что ранее настройки из конфига совсем не подхватывались...
В частности, элементарно подхватывания музыки из директории, прописанной в конфиге:
|
Цитата:
другие правила, изменять эти настройки не стоит и только усложнит весь процесс, т.к. музыку удобно скидывать в память виты и быстрее нужен чувак с реальной псп опять же. но дебаг энейблер опция в txt идущем с плагином работает вкл/выкл, т.е. файл читается плагином, но толку то всмысле персонализированных плейлистов для айди игры вроде же не появилось от порта на 6.60 оффтоп: а вот насчет картинок типа скринов с игр в плагине. эти картинки дублируются в памяти виты независимо от памяти псп. интересная система и удобнее чем на обычной псп. точнее почти как на ГО версии. можно остановить игру и в памяти виты просматривать скрины |
SILENT-Pavel, я имею в виду, что на PSP музыку можно ложить в папки ms0:/PSP/MUSIC/ или ms0:/MUSIC/
Но плагин, по идее, должен брать музыку исключительно только из той папки, которая прописана в конфиге, у которой нет комментирующего знака # спереди. Это 12 и 13 строчки в конфиге, идущим в комплекте с плагином music_conf.txt: Код:
DIR = ms0:/MUSIC/ #must end with a slash Цитата:
Вообще странно... столько НИДов (14 штук) обновил в плагине, а так мало изменений ))) |
Опана... Себе на заметку...
NID функции LoadCoreForKernel_CF8A41B1 присутствует на прошивках 1.00 - 3.7х, а в следующих прошивках изменился. Нужно ловить и править. Код:
LoadCoreForKernel (loadcore.prx) Код:
SysclibForKernel (sysmem.prx) Код:
SystemCtrlForKernel |
Текущее время: 18:24. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.