Просмотр полной версии : Портируем старые плагины, такие, как Music.prx, под прошивку 6.60
ErikPshat
18.03.2014, 02:18
Портируем старый плагин Music.prx под прошивку 6.60/6.61
http://www.pspx.ru/forum/attachment.php?attachmentid=9775
В общем пришла идея телепортации старинного отличного плагина Music.prx (http://www.pspx.ru/forum/showthread.php?t=69063) под прошивку 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 (http://www.pspx.ru/forum/showthread.php?t=85874)0x01562BA3 [0x00001354] - sceAudioOutput2Reserve
0x086E5895 [0x000028A4] - sceAudioInputBlocking
0x136CAF51 [0x00000660] - sceAudioOutputBlocking
0x13F592BC [0x000008F4] - sceAudioOutputPannedBlocking
0x2D53F36E [0x00001374] - sceAudioOutput2OutputBlocking
0x38553111 [0x00001E04] - sceAudioSRCChReserve
0x41EFADE7 [0x00000C4C] - sceAudioOneshotOutput
0x43196845 [0x00001390] - sceAudioOutput2Release
0x5C37C0AE [0x00002070] - sceAudioSRCChRelease
0x5EC81C55 [0x00000AD8] - sceAudioChReserve
0x63F2889C [0x00001254] - sceAudioOutput2ChangeLength
0x647CEF33 [0x000012C4] - sceAudioOutput2GetRestSample
Первая 4-х байтная единица, например 0x01562BA3 - это и есть захешированный номер NID функции.
Следом в скобках указывается позиция, где она записывается.
И через тире уже нам дизассемблер даёт подсказку о самом настоящем названии функции в нехешированном виде. На самом деле этих названий вы не увидите в файле. Это разработчики PRXTool уже внесли в программу названия основных известных функций, которые не меняются.
Но на самом деле, есть ещё множество подфункций, которые SONY умышленно изменяет при выпуске очередного релиза прошивки. Вот так их опознаёт PRXTool: 0x0B61478E [0x000008F4] - sceAudio_driver_0B61478E
0x0B74AAA2 [0x000028F0] - sceAudio_driver_0B74AAA2
0x2047EAD8 [0x00000578] - sceAudio_driver_2047EAD8
0x20856A07 [0x0000105C] - sceAudio_driver_20856A07
0x2533CE02 [0x000015F4] - sceAudio_driver_2533CE02
0x3E087113 [0x00002680] - sceAudio_driver_3E087113
0x3E3C44F1 [0x00000E68] - sceAudio_driver_3E3C44F1
0x4036F0AE [0x00001E04] - sceAudio_driver_4036F0AE
0x4754D283 [0x000012C4] - sceAudio_driver_4754D283
0x6985717B [0x00000AD8] - sceAudio_driver_6985717B
0x6ACDCBB3 [0x00002934] - sceAudio_driver_6ACDCBB3
То есть, дизассемблер определяет по коду программы область подфункций, принадлежащей основному модулю sceAudio_driver и, не зная настоящего названия функции, просто подставляет его цифровой хеш к названию основного модуля - sceAudio_driver_0B74AAA2
Что за 4-х байтный хеш функции?
Как я уже упоминал ранее - это хеш полного названия функции. Хотя я и раньше оперировал с хешированными НИДами и умудрялся отыскивать нужные, но не представлял откуда берётся этот хеш. Этот секрет недавно мне поведал frostegater в соседней теме (http://www.pspx.ru/forum/showthread.php?t=104551), где он выложил свою консольную утилитку по превращению названия функции в её захешированный вид. Затем Yoti облегчил этот процесс, нарисовав GUI интерфейс для быстрого ввода-вывода информации thank you. Вы можете сами потестить программку: N1D G3N3R@T0R.exe (http://www.pspx.ru/forum/attachment.php?attachmentid=9809)
9811
На данном примере, на скриншоте, я взял первую строчку из 1-го блока кода выше, где указаны нерандомизированные НИДы, чтобы наглядно увидеть вывод хеша из названия функции:
0x01562BA3 [0x00001354] - sceAudioOutput2Reserve
Как видно, название функции sceAudioOutput2Reserve превращается в 4-байтный код 0x01562BA3.
А заменив это название в захешированный вид, его можно использовать как-то так: sceAudio_01562BA3.
Хешь извлекается следующим образом... Из названия функции генерируется чек-сумма SHA-1 (160 bit).
В данном случае SHA-1 равна - A32B56014147A25FDE15A7AF4D596DADA06BE3AB
Затем берутся первые 4 байта и инверсируются побайтно. Получаем 01562BA3.
9795Думаю с этим всем всё понятно.
С чего начинать?
Начинать следует с дизассемблирования этих функций самого плагина music.prx и вот что он нам выдаёт (я почистил лишние куски кода, которые нам абсолютно не нужны и оставил только названия функций, которые изменяются от прошивки к прошивке): Name: Music_prx
0xB282F4B2 [0x0000536C] - sceAudio_driver_B282F4B2
0x669D93E4 [0x00005374] - sceAudio_driver_669D93E4
0x138A70F1 [0x0000537C] - sceAudio_driver_138A70F1
0x43645E69 [0x00005384] - sceAudio_driver_43645E69
0xE56B11BA [0x000053A4] - sceDisplay_driver_E56B11BA
0xD6E50D7B [0x000053AC] - scePower_driver_D6E50D7B
0x1688935C [0x000053BC] - scePower_driver_1688935C
0xC4AAD55F [0x000053C4] - sceCtrl_driver_C4AAD55F
Вот это все изменяющиеся функции, используемые плагином для своей работы.
А теперь посмотрим на SilverSpring's PSP PRX Libraries Documentation Project (http://www.pspx.ru/forum/showthread.php?t=104558). Эту тему я специально подготовил, т.к. его сайт постоянно находится в ауте. И он много времени отдал этому проекту, вычисляя NID-ы: имена функций на каждой прошивке.
Итак, открываем libdoc от прошивки 3.7х и смотрим файлы, соответствующие модулям в плагине music.prx, видим следующие цифры: kd/audio.prx sceAudio_Driver
<NAME>sceAudio_driver</NAME>
<FLAGS>0x00010011</FLAGS>
<FUNCTIONS>
<FUNCTION>
<NID>0x138A70F1</NID>
<NAME>sceAudio_driver_138A70F1</NAME>
</FUNCTION>
<FUNCTION>
<NID>0x43645E69</NID>
<NAME>sceAudio_driver_43645E69</NAME>
</FUNCTION>
<FUNCTION>
<NID>0x669D93E4</NID>
<NAME>sceAudio_driver_669D93E4</NAME>
</FUNCTION>
<FUNCTION>
<NID>0xB282F4B2</NID>
<NAME>sceAudio_driver_B282F4B2</NAME>
</FUNCTION>
</FUNCTIONS>
kd/display.prx sceDisplay_Service
<NAME>sceDisplay_driver</NAME>
<FLAGS>0x00010011</FLAGS>
<FUNCTIONS>
<FUNCTION>
<NID>0xE56B11BA</NID>
<NAME>sceDisplay_driver_E56B11BA</NAME>
</FUNCTION>
</FUNCTIONS>
kd/power.prx scePower_Service
<NAME>scePower_driver</NAME>
<FLAGS>0x00010011</FLAGS>
<FUNCTIONS>
<FUNCTION>
<NID>0x1688935C</NID>
<NAME>scePower_driver_1688935C</NAME>
</FUNCTION>
<FUNCTION>
<NID>0xD6E50D7B</NID>
<NAME>scePower_driver_D6E50D7B</NAME>
</FUNCTION>
</FUNCTIONS>
kd/ctrl.prx sceController_Service
<NAME>sceCtrl_driver</NAME>
<FLAGS>0x00010011</FLAGS>
<FUNCTIONS>
<FUNCTION>
<NID>0xC4AAD55F</NID>
<NAME>sceCtrl_driver_C4AAD55F</NAME>
</FUNCTION>
</FUNCTIONS>
Сравнив показания плагина music.prx выше и функций прошивок 3.7х здесь, мы видим, что идёт 100% совпадение!!!
Скажу больше, в прошивке 3.90 нет этих цифр впомине. То есть, там НИДы функций полностью изменены. Поэтому заявление разработчика, что он адаптировал плагин под прошивку 3.90 - явная ложь.
Итог: нам теперь явно ясно, что для портирования плагина под прошивку 6.60, необходимо искать соответствующие НИДы функций в этих файлах:
Название файла Название модуля
kd/audio.prx sceAudio_Driver
kd/display.prx sceDisplay_Service
kd/power.prx scePower_Service
kd/ctrl.prx sceController_Service
Проще говоря, НИДы плагина прошивки 3.7х необходимо сопоставить НИДам тех же функций прошивки 6.60.
Заменить их в исходниках и заново скомпилировать новый адаптированный плагин под 6.60.
Как правило, у каждого модуля существует определённый набор функций и их количество и порядок в файле редко изменяется. Поэтому, думаю, не составит труда сопоставить НИДы этих прошивок, либо ещё промежуточных и вывести параллели между прошивками.
Далее можно выстроить параллели каждого типа НИДа в каждой прошивке и составить таблицу.
Процесс исследования плагина music.prx
Для начала, необходимо вычислить все функции рандомных NID-ов, используемых плагином. Скачиваем дизассемблер PRXTool (http://www.pspx.ru/forum/showthread.php?t=85874) и закидываем туда наш подопытный файл music.prx.
Запускаем батник "16. ImpExp & Alias Print.bat" и получаем на выходе все Импорты и Экспорты функций, используемых плагином в текстовом файле "16_Import_Export.txt".
Удаляем все лишние строки со статическими функциями, т.е. у которых нет в названии функции суффикса с 4-значным НИДом.
Далее, вычисляем по рандомным НИДам версию прошивки, от которой эти НИДы были использованы. Ну тут ясное дело, что НИДы функций принадлежат прошивке 3.71.
Поэтому берём файлы прошивок 3.71, в которых используются эти функции и дизасмим их. Так как я больше разбираюсь в HTML, то я выбрал батник дизасма "24. DISASM2HTML.bat" и сохранил результаты в папке под названием прошивки "371". Затем произвёл то же самое действие с аналогичными файлами от других прошивок, чтобы проследить сдвиги функций от прошивки к прошивке.
Таким образом эти HTML файлы от разных прошивок я просто сравнил в браузере. Разница в НИДах и сходство кода видна невооруженным глазом. На этом примере я произвёл поиск в дизассемблированном файле audio.prx.html по НИДу sceAudio_driver_138A70F1 в прошивке 3.71. Затем, посмотрев на окружение найденного, произвёл поиск по соседнему значимому слову sceAudioOutput2Release в других прошивках, что явно вывело на аналогичный код и выдало изменившиеся НИДы, как на тарелочке с голубой каёмочкой.
http://www.pspx.ru/forum/attachment.php?attachmentid=9853http://www.pspx.ru/forum/attachment.php?attachmentid=9854http://www.pspx.ru/forum/attachment.php?attachmentid=9855http://www.pspx.ru/forum/attachment.php?attachmentid=9856http://www.pspx.ru/forum/attachment.php?attachmentid=9857http://www.pspx.ru/forum/attachment.php?attachmentid=9858http://www.pspx.ru/forum/attachment.php?attachmentid=9859
3.71 sceAudio_driver_138A70F1 (первая строка в таблице ниже)
9853
3.80
9854
3.95
9855
5.00
9856
6.20
9857
6.35
9858
6.60
9859
И в результате получилась вот такая таблица:
NID's_table
M U S I C . P R X P L U G I N f o r P S P -= by AhMan =-Necessary DataFirmwares NID'sCommentsFILEMODULEFUNCTION3.7x3.80/3.903.95/4.015.00/5.506.206.356.60/6.61EDITEDaudio.prxsceAudio_driversceAudio_driver_138A70F1D4828217C3C2C4B43E3FAE 75F462A7B90399579BB7F5A1B2hw.h; sceAudio_driver.Saudio.prxsceAudio_driversceAudio_driver_43645E6994E28BDDCD272A5 D909092ABE26E49E7475F41FEAC81DE4Fhw.h; sceAudio_driver.Saudio.prxsceAudio_driversceAudio_driver_669D93E44036F0AEC15BE9A 3BFC404F6A502088EE9BCD519837701CChw.h; sceAudio_driver.Saudio.prxsceAudio_driversceAudio_driver_B282F4B280BCF50CFCC526B 7322078A577EBE4A2A388ABDB9D77949EsceAudio_driver.Saudio.prxsceAudio_driversceAud io_driver_035C14C62047EAD8F7083625324BA73DA5C0603BD35EFCD9671E97E8init.caudio.pr xsceAudio_driversceAudio_driver_798FB2A3C66BDCA161BBE62DF355A2632FD643D0A906D208 5CDEF9A4init.caudio.prxsceAudio_driversceAudio_driver_D6620E8E9DA39F69BCD3344C1A 7526DD45457EE5686AC4F4E440DF7Dinit.caudio.prxsceAudio_driversceAudio_driver_47D0 6FE6BE6F1721850A552BE8D4EE26548EEFD1C847973E17D856B9init.caudio.prxsceAudio_driv ersceAudio_driver_5140D94F0B61478EC4839793DC34AC2023F19798B29D727FB7CCF1D7init.c display.prxsceDisplay_ServicesceDisplay_driver_E56B11BA3749CDA0C28EFAA7D8D2FD356 4EE9BF208A10838FBB369FDsceDisplay_driver.Sloadcore.prxLoadCoreForKernelLoadCoreF orKernel_CF8A41B1F17DD6DD98D2CF2B0B53340FBEF0A05EEF8A0BEAF6B1BF0FLoadCoreForKern el.Ssysmem.prxSysclibForKernelstrcspn89B79CB189B79CB189B79CB189B79CB1MissingMiss ingMissingconfig.csysmem.prxSysclibForKernelstrspn62AE052F62AE052F62AE052F62AE05 2FMissingMissingMissingconfig.csysmem.prxSysclibForKernelstrtok87F8D2DA87F8D2DA8 7F8D2DA87F8D2DAMissingMissingMissingconfig.cpower.prxscePower_ServicescePower_dr iver_1688935C94C3991E2A12371B78834264BF5BA7FC9F53A71F04711DFBscePower_driver.Spo wer.prxscePower_ServicescePower_driver_D6E50D7B94BC491819387EF4AF23EFA61A41E0ED8 BA12BAF766CD857scePower_driver.Spower.prxscePower_ServicescePower_driver_4431FF2 1114D35609AF4290C775DA4989CDB22B5A2E9E73FE52B4362init.c (3.5x 0xD66EF08D)ctrl.prxsceController_ServicesceCtrl_driver_C4AAD55FD65D4E9A591B3F366 B247CCE3CA6922B18654FC02BA616AFsceCtrl_driver.S↑ ↑ ↑↑ ↑ ↑Music plugin version 055 ported to sony PSP 3.90 firmware.
Cpasjuste @ http://mydedibox.fr/Music plugin v056 for 6.60/6.61 firmware
ported by ErikPshat
Скачать: обновлённый плагин для 6.60/6/61 можно :download: отсюдава (http://www.pspx.ru/forum/showthread.php?p=659150#post659150).
SILENT-Pavel
18.03.2014, 03:33
Хорошая тема, поддержку этого плагина кстати добавили в тн-в на вите
может можно его модифицировать что-нибудь прикрутить типа персонализированных плейлистов для каждой отдельной игры пс1 и всякое такое?
ErikPshat
18.03.2014, 14:16
поддержку этого плагина кстати добавили в тн-в на витеОу, не знал этого. Тогда что нам мучиться, TN по-видимому всю работу уже произвёл. Даёшь плагин TN-V в студию.
Ну собсно тему можно переименовать, как общую для всех плагинов, так как то, что я описал, касается всех плагинов и программ, использующих изменяемые НИДы функций.
Ну плейлисты вроде как поддерживаются, судя по коду в исходниках. Да и модификацию можно произвести, имея исходники. Насчёт персонализации для каждой игры ты уже переборьщил ))
SILENT-Pavel
18.03.2014, 15:06
Насчёт персонализации для каждой игры ты уже переборьщил ))
ну всмысле чтобы плагин определял айдишник игры как это делает взломщик
и заготовленные заранее мп3 файлы играл для этого айдишника (а то осты пс1 приходится на компе хранить и заливать на виту под каждую игру вручную)
в текущей версии которую я качал отсюда такой функции вроде нет:
http://wololo.net/talk/viewtopic.php?f=56&t=17071
там в списке мьюзик.прх - фиг занет кто эту версию под 6.60 делал и когда и как
ErikPshat
18.03.2014, 16:36
там в списке мьюзик.прх - фиг занет кто эту версию под 6.60 делал и когда и какСкачал, проверил, сравнил = совпадение 100%.
Это и есть он, плагин для прошивки 3.71.
Ты попробуй в конфиге ms0:/seplugins/music_conf.txt сменить директорию проигрывания музыки, например на DIR = ms0:/MUSIC/ или ещё что-нибудь поменять - оно не работает, всегда музыка подхватывается только из конфига по-умолчанию, встроенного внутри плагина music.prx, там прописан путь ms0:/PSP/Music/
По поводу поддержки плейлистов, я вижу в коде плагина строчки: ea3.EA3.ID3.id3.TIT2 // это поддержка тегов, встроенных внутри музыкальных композиций
pl_cur:%08X // это наведение курсора на плейлист
Plylst Status:%08X // это информация о плейлисте
PLYLST_MEM..Playlist_Thread // и такие строчки есть
Ещё проверь, действительно ли работают эти функции, а то я сомневаюсь: VOLUP //увеличение громкости
VOLDOWN // уменьшение громкости
START_STOP // остановка и воспроизведение
PREVIOUS // предыдущий трек
NEXT // следующий трек
MODE_TOGGLE // переключение режима воспроизведения
CPU_NEXT // увеличение скорости процессора
CPU_PREV // уменьшение скорости процессора
RELOAD // перезагрузить музыку
ErikPshat
19.03.2014, 05:53
Вообщем тут такое дело...
Я сейчас живу в чужом городе, в чужой квартире, без PSP, без телевизора и радио.
Нужны декриптованные файлы PRX от разных прошивок, желательно полный набор: 3.71, 3.80, 3.95, 5.00, 6.20, 6.35, 6.60.
Это основной ряд прошивок, в которых происходили значительные изменения.
Иначе проследить передвижение NID-ов будет проблематично.
Для этого нужно:
Скачать файлы обновления прошивок отсюда (http://www.pspx.ru/forum/showthread.php?t=64223).
Извлечь все файлы с одновременной декриптовкой по кнопке :square: с помощью PSARDumper'a (http://www.pspx.ru/forum/showthread.php?t=82925)
Разложить извлечённые файлы PRX из папок kd и module по папочкам с названием прошивки, например 6.60_PRX_Decrypted
Залить во вложения в эту тему: [БАЗА] Декриптованные RCO и PRX от всех прошивок (http://www.pspx.ru/forum/showthread.php?t=64180)
Надеюсь остались ещё люди с прошитыми PSP или с хакнутым эмулятором PSP на Вите, чтобы извлечь и декриптовать файлы.
P.S. Немного расширил описание в шапке. Возможно кому-то будет интересно почитать мои сказки...
SILENT-Pavel
19.03.2014, 08:36
ErikPshat, постараюсь выложить указанные декриптованные модули в скором времени.
апд: уже в процессе, больше половины готово, заливаю
На 6.60 я вместе с 3.90 ссылки выкладывал в чате:
6.60 - http://yadi.sk/d/Iukg9RSLKfuFA
3.90 - http://yadi.sk/d/dJKDmkJ2Kftri
Ссылки постоянные.
SILENT-Pavel, если дело застопорится, напиши, я продолжу.
SILENT-Pavel
19.03.2014, 11:09
vash, не вышло извлечь из 6.35 практически ничего (точнее вышло все кроме prx подулей), пробовал два раза. остальные заливаются успешно
готово: http://www.pspx.ru/forum/showthread.php?p=1085356#post1085356
не вышло извлечь из 6.35 практически ничего (точнее вышло все кроме prx подулей)
Сейчас попробую.
П.С.: а для гошки декриптованные прошивки нужны?
ErikPshat
19.03.2014, 13:07
не вышло извлечь из 6.35 практически ничего (точнее вышло все кроме prx подулей), пробовал два разаАга, видел твои пустые папки 6.35 :)
Попробуй мой дампер. Правда я его только что сделал на коленке, по бырому скопипастил все ключи из нашей таблицы и закомпилил. Проверять код было некогда, возможно не туда вставил и не то. Распространению не подлежит!
П.С.: а для гошки декриптованные прошивки нужны?Ну на данный момент может и не нужны.
Однако неплохо было бы пробелы в базе заполнить. А то ведь в нужный момент никогда не найдёшь.
Используя другой дампер PSARDumper_660_neur0n (http://www.pspx.ru/forum/attachment.php?attachmentid=7859&d=1350455575) 6.35 извлеклась. http://www.pspx.ru/forum/showthread.php?p=1085363#post1085363
ErikPshat
19.03.2014, 14:28
vash, помню Нейроновский дампер тоже не всё извлекал, а Проксимовский отрабатывал, поэтому я в инструкции поменял их местами, хотя там раньше стоял от Нейрона. Получается один там косячит, другой здесь.
А мой дампер над головой в посту что? Там забиты все мыслимые и немыслимые ключи от всех прошивок и даже от Виты )))
Правда я на скорую руку скачал дампер Проксимы, запилил туда все наши ключи и скомпилировал. Не знаю, заработает ли вообще.
А мой дампер над головой в посту что?
Работает, но 6.35 так же полностью не дамперит.
ErikPshat, не спеши. Я твоим дампером не смог сдампить 6.35, за то смог им сдампить 6.60 от Гошки, а тем не смог (пустые и неполные папки). Так что, косяки в обоих версиях дамперов.
ErikPshat
19.03.2014, 15:44
vash, во какая засада ))) а я уже поменял местами в инструкции. Ну пусть будет, всё равно лежат во вложении, потом надо будет с ними отдельно разбираться.
А тем временем я скомпилил дампер с исходников Нейрона с нашим пакетом ключей. Если не трудно, можешь проверить на 6.35 и на Гошке, а вдруг всё подхватит...
Кстати, оказывается там, во вложении у дамперов (http://www.pspx.ru/forum/showthread.php?t=82925), лежит же моя давняя сборка, не помню какая, когда и зачем, под названием PSARDUMPER_PSPxMOD.7z, а я сразу не заметил, но помню собирал тщательно и с любовью :). Можешь ещё её потестить, если есть время. Тоже интересно узнать о костылях.
ErikPshat, из вложения 6.35 сдампила, 6.60 от гошки - нет.
PSARDUMPER_PSPxMOD 6.35 не сдампила, 6.60 от гошки - да.
Раньше, та что ты переделал ( http://www.pspx.ru/forum/showpost.php?p=1085361&postcount=11 ), работала наоборот.
был изготовлен для консоли "neogeoCD 0.91"
Для эмулятора, может?
Вы можете сами потестить программку: N1D G3N3R@TOR.exe
Через ноль пишется, через ноль!
HUD для 6.35 в своё время собирался добавлением "sceNids_driver_635.o" к строке OBJS в makefile и созданием файла "sceNids_driver_635.S" вида
// ------------------ //
// codestation's nids //
// ------------------ //
.set noreorder
#include "pspstub.s"
STUB_START "sceCtrl_driver",0x00010000,0x00050005
STUB_FUNC 0x18654FC0,sceCtrlPeekBufferPositive
STUB_FUNC 0x02DD57CF,sceCtrlPeekBufferNegative
STUB_FUNC 0x9F3038AC,sceCtrlReadBufferPositive
STUB_FUNC 0xEB5F1D7A,sceCtrlReadBufferNegative
STUB_FUNC 0x33AB5BDB,sceCtrl_driver_5E77BC8A
STUB_END
STUB_START "scePower_driver",0x00010000,0x00010005
STUB_FUNC 0x6C4F9920,scePowerTick
STUB_END
STUB_START "sceDisplay_driver",0x00010000,0x00060005
// STUB_FUNC 0x00000000,sceDisplayEnable
// STUB_FUNC 0x00000000,sceDisplayDisable
STUB_FUNC 0xCCEEA6BB,sceDisplay_driver_5B5AEFAD
STUB_FUNC 0x89FD2128,sceDisplaySetBrightness
STUB_FUNC 0x3A5621E0,sceDisplayGetBrightness
STUB_FUNC 0x21F912F4,sceDisplayGetVcount
STUB_END
STUB_START "LoadCoreForKernel",0x00010000,0x00010005
STUB_FUNC 0xEF8A0BEA,sceKernelFindModuleByName
STUB_END
STUB_START "SysMemForKernel",0x00010011,0x00020005
STUB_FUNC 0x00E9A04A,sceKernelSetDdrMemoryProtection
// STUB_FUNC 0x00000000,sceKernelGetModel
STUB_END
ErikPshat
20.03.2014, 10:49
ErikPshat, из вложения 6.35 сдампила, 6.60 от гошки - нет.
PSARDUMPER_PSPxMOD 6.35 не сдампила, 6.60 от гошки - да.
Ну понятно. Теперь ясен пень, что:
Дампер Нейрона дампит 6.35, а для Гошки не хватает кода.
Дампер Прксима дампит Гошку, но спотыкается на 6.35.
Вроде бы так. Соответственно я все свои сборки попутал и использовал исходники и того и другого )))
Главное, что баг установлен, осталось дело за малым, исследовать коды обоих и найти недостающее звено.
Рассортированные декриптованные (PSARDumper на Vita tn-v 8) PRX из папок kd и module от 3.71, 3.80, 3.95, 5.00, 6.20, 6.35, 6.60 ofws.
Проанализировал через PRXTool файлы audio.prx от всех выложенных прошивок. НИДы у всех прошивок одинаковые, как на 3.71 :D.
Этого быть не может. Ты по видимому распихал по всем папкам одну и ту же прошивку 3.71. Короче что-то дофига понапутал.
У COOLERbyPSP и vash я скачивал 3.90, 6.35 и 6.60, так там явно все НИДы меняются в каждой нововй прошивке. И исследовал готовые libdoc.xml 3.7х-5.00 с сайта SilverSpring (http://silverspring.lan.st/), там аналогичная история, у каждой новой прошивки рандомизированные ниды сменяются в обязательном порядке.
1 Для эмулятора, может?
2 Через ноль пишется, через ноль!
3 HUD для 6.35 в своё время собирался добавлением "sceNids_driver_635.o" к строке OBJS в makefile и созданием файла "sceNids_driver_635.S" вида
1. Ну читал редми в исходниках на английском, про эмулятор не понял наверное.
2. Ох, ё.п.р.с.т., опять ноль пропустил, как фрост )))
3. Ну насчёт S я как бы в курсе. Именно так и собираюсь через стубы внедрядь НИДы. Ну так многие и поступают.
ErikPshat
20.03.2014, 10:58
А, да, если кто собирается тоже исследовать НИДы, и не понял, каким образом их дебажить, то через PRXTool (http://www.pspx.ru/forum/attachment.php?attachmentid=8062) нужно пользоваться следующими батниками:
12. PRXstubs.bat - выдаёт компактный чистый список НИД-ов
Плюс в помощь:
14. Depends.bat - чтобы узнать, какому файлу принадлежит модуль функции.
16. ImpExp & Alias Print.bat - выдаёт хорошую расширенную информацию по НИД-ам и их смещениям.
P.S. Файлы от других прошивок ещё требуются...
План действий таков:
После декрипта файлов PSARDumer-ом, в корне создаётся папка F0.
Переименовываете папку под номер прошивки с ясным пояснением, например "371_PRX_Decrypted"
Внутри папки оставляете только папки, содержащие файлы PRX - это следующие папки:
kd - содержит системные файлы PRX
kd/resource - содержит файлы PRX, нормальный дампер их должен тоже декриптовать с заголовком ELF в хедере.
vsh/module - содержит ресурсные файлы PRX
vsh/etc - содержит файлы версии прошивки version.txt и index_0X.dat - это тоже файлы PRX, тот же version.txt, только в зашифрованном виде, нормальный дампер их должен тоже декриптовать и на выходе в текстовом редакторе должны увидеть то же содержимое, как в version.txt.
SILENT-Pavel
20.03.2014, 14:26
Проанализировал через PRXTool файлы audio.prx от всех выложенных прошивок. НИДы у всех прошивок одинаковые, как на 3.71 :D.
Этого быть не может. Ты по видимому распихал по всем папкам одну и ту же прошивку 3.71. Короче что-то дофига понапутал.
У них же разный размер у папок по прошивкам, если это была одна - то размер был бы одинаковый, каждый раз после декриптации удалял все остатки файлов от другой прошивки и делал с нуля новую. возможно вита с тн-в для этого не предназначена или фтп клиент виты затупил, нужна реальная псп наверное. прошивки качал из базы пспх.ру
кроме 6.35 все делал по инструкции, проверял несколько раз внимательно
реальная псп щас далеко от меня к сожалению
ErikPshat
20.03.2014, 14:47
SILENT-Pavel, поставь Araxis Merge (http://www.pspx.ru/forum/showthread.php?t=93387) и сравни папки разных прошивок. Получишь результат. В проге есть возможность сравнения не по одному файлу, а сразу по 2-3 папки. Увидишь, какие файлы содержат различия, а какие идентичны. Мне долго качать эту прогу, весит аж 40 Мб. Хотя щас скачаю за часок.
Скорее всего декриптовалось всё нормально, просто когда ты всё раскладывал по папкам, наверняка копирнул в буфер прошивку 3.71 и таким образом её файлы раскидал по разным прошивкам. Поэтому размер папок разный, но обновлённые файлы от 3.71. А может это у меня что-то глюкнуло, т.к. название файла одно было audio.prx, я прогонял через PRXTool и каждый раз закидывал файл от другой прошивки. В результате все тесты оказались 100% идентичными при сравнении.
Про какие именно nid'ы хоть речь? Они могут быть изменяемые (обычно это те, что используются внутри ядра) и неизменяемые (после изменения которых отвалились бы старые игры, так что преимущественно юзермоды); могут быть быть прямые (которые sha1 от функции) и непрямые (которые "солёные" и резолвятся прошивкой в прямые).
ErikPshat
20.03.2014, 19:40
У них же разный размер у папок по прошивкам, если это была одна - то размер был бы одинаковый, каждый раз после декриптации удалял все остатки файлов от другой прошивки и делал с нуля новую.
Ну так ты сравнивал свои папки? Я кстати не поленился и скачал посвежее версию (http://forum.ru-board.com/topic.cgi?forum=35&topic=0933&start=680#4). Ну и сравнил сразу 3 папки. Для сравнения выбрал 2 крайние и одну посередине: 3.71-5.00-6.60
Ну и вот отчёт твоей проделанной работы :)
Там персиковым цветом выделены несвязанные файлы, т.е. которые есть в одной папке, но отсутствуют в другой.
А бирюзовым цветом выделены вставленные файлы, т.е. которых не было в других папках, но были добавлены в новых.
Собсно программа сверяет файлы не по размеру, а по внутреннему содержимому побайтно и в столбике "Различия" показывает количество различающихся блоков. Ну и как видно, ни один файл не имеет ни одного отличия :xDD:
9812Так что с тебя щтрафной: декриптовать всё по новой и по правилам, написанным в той теме в шапке.
Про какие именно nid'ы хоть речь? Они могут быть изменяемыеДа, в шапке я именно про это упоминал, поэтому не выводил в список неизменяемые ниды. Но это нужно ещё проверять и отсекать солёные. Хотя фрост уверял, что можно использовать и так и эдак, т.е. под своим прямым названием, либо с хешем в суффиксе. Делать-то мы будем под одну прошивку 6.60, под все другие нам не надо.
Ну если что накосячим, надеюсь ты направишь в нужное русло ;)
Хотя фрост уверял, что можно использовать и так и эдак, т.е. под своим прямым названием, либо с хешем в суффиксе. Делать-то мы будем под одну прошивку 6.60, под все другие нам не надо.
Ну да, можно. Я много читал про nid'ы, но это было на английском и я уже не помню где. Возможно, на lan.st (вечная память).
SILENT-Pavel
20.03.2014, 22:23
сделаем пробник по новой с чистого листа. может и правда спешил и что-то перебил горячими клавишами. Старое вложение удалил.
взял 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: видимо не понимаю что именно нужно и в каком виде. уступаю более понимающим, сам сливаюсь
Вот вам архивчик, который я использую для первичного реверса модулей. Кинуть в папку bin/elf/prx, запустить батник. Есть моменты, которые я всё хочу доработать, но они не такие критичные.
ErikPshat
21.03.2014, 02:27
SILENT-Pavel, эх-эх, опять косяки, косяки да пяточки :) Ты бы хоть сам бы проверил, я же тебе уже и прогу подогнал.
Позже допишу, что почём.
Короче сравнил сначала в пределах одной прошивки, как отрабатывают дамперы.
Ну то есть сравнивал так:
!3.71- !3.71-neuron !3.71-proxima === все 3 папки оказались идентичными. Вроде всё как надо.
Потом сравнил следующие прошивки:
!5.00- !5.00-neuron !5.00-proxima === прошивки Unknown и neuron полностью совпадают, за исключением того, что у нейрона извлёкся ещё один лишний секретный файл: vsh\module\npsignup_plugin.prx. Видимо 2 других дампера не знают про него ничего. Нужно бы посмотреть на заголовок его в недекриптованном виде. Просьба извлечь его без декриптовки.
А вот с proxima у них огромные различия. Откуда Проксима достал эти файлы - непонятно. Ну не могут они так декриптоваться из одного и того же EBOOT.PBP 5.00, чтобы на выходе у Проксимовского декриптора получились другие файлы.
9817Короче, сравнил я файлы !5.00-proxima и 3.71-proxima - они одинаковы :) Получается вместо 5.00 прошивки, дампер Проксимы декриптовал ещё раз прошивку 3.71.
Потом сравнил следующие прошивки:
!6.35- !6.35-neuron !6.35-proxima === только дампер Нейрона извлёк все файлы PRX. Unknown и proxima их не смогли вытащить, папки kd и module пустые. И так же, прошивки Unknown и neuron полностью совпадают, в тех оставшихся файлах RCO, которые в папке resource.
А вот с proxima у RCO опять же отличия. Проксимовский дампер туда положил файлы от прошивки 5.00 :D
Потом стал сравнивать разные прошивки одного дампера !3.71- !5.00- !6.35- === различия есть, но их очень мало. Короче дальше не буду рассказывать, потому что ещё дальше полнейший бред. Да что говорить, если даже IPL у прошивок 3.71, 5.00 и 6.35 одинаковый )))
В общем такое ощущение, что PS VITA имеет крутой кэш и по видимому кэширует предыдущие действия. Если в следующий раз попадаются файлы с теми же именами, она их достаёт из кэша, чтобы не тратить лишнее время на декриптовку того же по названию файла, который недавно декриптовали :D Вот такое складывается впечатление.
Значит, нужно декриптовкой заниматься на ПСП и дампером от Нейрона? Могу сейчас заняться этим. Выложу в теме [БАЗА] Декриптованные RCO и PRX от всех прошивок (http://www.pspx.ru/forum/showthread.php?p=1085363#post1085363) без RCO-файлов.
П.С.: ErikPshat, просьба, уточни, от каких прошивок нужны на данное время эти файлы, смысла делать ото всех нет.
ErikPshat
21.03.2014, 14:34
ErikPshat, просьба, уточни, от каких прошивок нужны на данное время эти файлы, смысла делать ото всех нет.Желательно полный набор: 3.71, 3.80, 3.90, 3.95, 5.00, 5.50, 6.20, 6.35, 6.60.
[БАЗА] Декриптованные RCO и PRX от всех прошивок без RCO-файлов.
vash, лучше делай сразу по инструкции в той теме, которую я написал там в шапке, чтобы потом лишний раз не переделывать работу.
Например папки "codepage", "data", "dic", "font" совершенно не нужны во всех архивах, т.к. они во всех прошивках одинаковы и никакой полезной нагрузки не несут.
они во всех прошивках
Не во всех, но в последних.
ErikPshat
21.03.2014, 19:15
Значит, нужно декриптовкой заниматься на ПСП и дампером от Нейрона?Не факт. Просто дампер от Проксимы повёл себя так из-за кэша Виты. Скорее всего точняк Вита подсовывала файлы от предыдущих действий, поэтому в папке оказывались файлы именно от предыдущих декриптовок. В папке 5.00 оказывались файлы от 3.71, а в папке 6.35 оказывались файлы от 5.00. Соответственно, если при декриптовке 6.35 не получилось дамперу извлечь файлы PRX, то и Вита из кэша ничего не доставала.
Думаю было бы то же самое с дампером Нейрона, если бы его запускали в последнюю очередь. То есть, опять бы складывались файлы из кэша Виты от предыдущих декриптовок.
Единственное отличие дампера Нейрона, что у него заложен механизм декриптовки 6.35, а другие его не учли. Я даже предполагаю где это надо копать. Дампер Unknown повёл себя так на прошивке 6.35, потому что сделан был на осове дампера Проксимы, по видимому
SILENT-Pavel, использовал одну из моих версий, ведь там одна версия была основана на Проксиме, а другая на Нейроне. Но моя версия в теме ПСАРдампера, помнится, должна была извлекать и декриптовать файлы rebootex в корне и файлы *.img + ещё какие-то файлы, потому что я там добавлял код и ключи.
И ещё у меня есть мысля, что на Вите должна быть функция в настройках "Отключения КЭШа" ??? :scratch_one-s_head:
Не во всех, но в последних.Ну там какой-то файл переехал из одной папки etc в папку codepage вроде и ещё может какие изменения. Лень просто щас копаться и уточнять эти несущественные вещи.
ErikPshat
29.03.2014, 05:00
Итак, портирование плагина music.prx for 6.60 (http://www.pspx.ru/forum/attachment.php?attachmentid=9861) произведено.
Результаты исследования с таблицей и наводящая инструкция в шапке.
Просьба потестить во всех режимах на прошивке 6.60 и доложить о багах...
SILENT-Pavel
30.03.2014, 15:27
ErikPshat, работает на вите.
Главное отличие визуальное от не портированного - больше информации при нажатии SELECT + квадрат
апд: походу дебаг стоит единичка в конфиге. он эту инфу и показывает
апд2: работает функция "IN_GAME_MUTE = SELECT|HOME" с эмуляцией хоум на Л + Р
на не портированном плагине эта функция не работает но показывает что типа включается и выключается
апд3: на обоих версиях плагина не получается сменить частоту цпу
ErikPshat
31.03.2014, 00:02
SILENT-Pavel, о, спасибо за тесты. Нашёлся хоть один человек на форуме ЗЫЗч. Я уж подумал - совсем плагин теперь не робит.
больше информации при нажатии SELECT + квадрат
Хорошо бы посмотреть визуально на скриншоты. Я даже не в курсе, что он ещё что-то выдаёт на экран. Ага, вижу 10-ую строчку:
Управление из конфига VOLUP = SELECT|UP
VOLDOWN = SELECT|DOWN
START_STOP = SELECT|LTRIGGER
PREVIOUS = SELECT|LEFT
NEXT = SELECT|RIGHT
MODE_TOGGLE = SELECT|RTRIGGER #SEQ/RAND
CPU_NEXT = SELECT|TRIANGLE
CPU_PREV = SELECT|CROSS
RELOAD = SELECT|CIRCLE
DISPLAY = SELECT|SQUARE #on screen display
IN_GAME_MUTE = SELECT|HOME #press this combo once to disable game sounds, and again to enable them
LOOP = SELECT|START
:
:select: + :up: = Повысить громкость.
:select: + :down: = Понизить громкость.
:select: + :l_trigger: = Старт/Стоп воспроизведения.
:select: + :left: = Предыдущий трек.
:select: + :right: = Следующий трек.
:select: + :r_trigger: = Режимы (по порядку (SEQ), случайно (RAND)).
:select: + :triangle: = Повысить частоту процессора.
:select: + :cross: = Понизить частоту процессора.
:select: + :circle: = Перезапустить плагин.
:select: + :square: = Вызов на экран меню с информацией.
:select: + :home: = Отключение звука в игре.
:select: + :start: = Повторить.
Управление по умолчанию - основная кнопка НОТА char ControlOptions[MAX_CONTROL_OPTIONS][30] = {
"VOLUP",
"VOLDOWN",
"START_STOP",
"PREVIOUS",
"NEXT",
"MODE_TOGGLE",
"CPU_NEXT",
"CPU_PREV",
"RELOAD",
"DISPLAY",
"IN_GAME_MUTE",
"LOOP",
};
u32 DefaultControl[MAX_CONTROL_OPTIONS] = {
PSP_CTRL_NOTE|PSP_CTRL_UP,//VOLUP
PSP_CTRL_NOTE|PSP_CTRL_DOWN,//VOLDOWN
PSP_CTRL_NOTE|PSP_CTRL_LTRIGGER,//START_STOP
PSP_CTRL_NOTE|PSP_CTRL_LEFT,//PREVIOUS
PSP_CTRL_NOTE|PSP_CTRL_RIGHT,//NEXT
PSP_CTRL_NOTE|PSP_CTRL_RTRIGGER,//MODE_TOGGLE
PSP_CTRL_NOTE|PSP_CTRL_TRIANGLE,//CPU_NEXT
PSP_CTRL_NOTE|PSP_CTRL_CROSS,//CPU_PREV
PSP_CTRL_NOTE|PSP_CTRL_CIRCLE,//RELOAD
PSP_CTRL_NOTE|PSP_CTRL_SQUARE,//DISPLAY
PSP_CTRL_NOTE|PSP_CTRL_SELECT,//In Game Mute
PSP_CTRL_NOTE|PSP_CTRL_START,//LOOP
};
Можешь доложить по этим 12-ти пунктам, что работает, а что нет?
походу дебаг стоит единичка в конфиге. он эту инфу и показываетТак значит он стал настройки из конфига подхватывать? Говорили, что пофигу, что написано было в конфиге. Даже если сменить путь до музыки с ms0:/PSP/Music/ на ms0:/Music/, то он всё равно проигрывал только из папки по умолчанию ms0:/PSP/Music/
апд2: работает функция "IN_GAME_MUTE = SELECT|HOME" с эмуляцией хоум на Л + Р
на не портированном плагине эта функция не работает но показывает что типа включается и выключается:select: + :home: = Отключение звука в игре.
Ну просто замечательно! Слышал про такой баг, когда в играх не отключался звук музыки.
апд3: на обоих версиях плагина не получается сменить частоту цпу
ОК, буду разбираться... Кстати, на Вите возможно изменить частоту эмулятора PSP? И эти настройки правильно в конфиге стоят?
ENABLE_VSH_CLOCK = 1 #set to 0 to disable the VSH from changing the cpu's speed, normally this is 1
#the vsh normally changes the clock speed when playing music with the screen off (to 133mHz cpu/44mHz bus)
#when stoping the browser
#up to 333mHz when playing certain video files (possibly, I haven't been able to confirm this)
#and back to 222mHz when the above things are stopped
#this also allows overclocking in the vsh browser
CPU_SPEED = 222 # SELECT: in 3.40OE (and possbily other fws) setting the clock above 222 (bus > 111) causes the XMB (VSH) to crash
# This seems fixed in 3.52-M33 2, if you have problems, you might want to update
# 1-333, cpu speed to start with
BUS_SPEED = 111 # SELECT: if you have problems, try changing this to 222/111 , some things don't like you changing the cpu speed
# 1-167, must be less than half the cpu speed
SILENT-Pavel
31.03.2014, 17:53
:select: + :up: = Повысить громкость.
:select: + :down: = Понизить громкость.
:select: + :l_trigger: = Старт/Стоп воспроизведения.
:select: + :left: = Предыдущий трек.
:select: + :right: = Следующий трек.
:select: + :r_trigger: = Режимы (по порядку (SEQ), случайно (RAND)).
:select: + :triangle: = Повысить частоту процессора.
:select: + :cross: = Понизить частоту процессора.
:select: + :circle: = Перезапустить плагин.
:select: + :square: = Вызов на экран меню с информацией.
:select: + :home: = Отключение звука в игре.
:select: + :start: = Повторить.
6.60 твой порт плагина:
1. да
2. да
3. да
4. да
5. да
6. да
7. нет
8. нет
9. ?
10. да
11. да
12. да
старый оригинальный плагин с вололо:
1. да
2. да
3. да
4. да
5. да
6. да
7. нет
8. нет
9. ?
10. да
11. нет
12. да
---
- наверное в обоих случаях перезапуск плагина работает, но визуально ничего не происходит.
Кстати, на Вите возможно изменить частоту эмулятора PSP?
внутри xmb tn-v изменять можно
кстати насчет кэша псп ты спрашивал выше - нет такой настройки
так что все мои тесты считать адекватными только для другой виты, а не для псп сцены в целом
например потому, что виты тн-в может включать старые плагины иначе чем псп 2000 например, на псп мб не работает то что поддерживается тн-в для старых плагинов
ErikPshat
31.03.2014, 22:23
Кстати, говорили, что ранее настройки из конфига совсем не подхватывались...
В частности, элементарно подхватывания музыки из директории, прописанной в конфиге:
ms0:/PSP/MUSIC/
ms0:/MUSIC/
Жалоба пошла отсюда: http://www.pspx.ru/forum/showthread.php?t=104547
SILENT-Pavel
01.04.2014, 15:36
Кстати, говорили, что ранее настройки из конфига совсем не подхватывались...
В частности, элементарно подхватывания музыки из директории, прописанной в конфиге:
ms0:/PSP/MUSIC/
ms0:/MUSIC/
Жалоба пошла отсюда: http://www.pspx.ru/forum/showthread.php?t=104547
ну тут такое дело, что мьюзик в вите читается из памяти виты РЕЛИНКОМ из псп/мьюзик вроде
другие правила, изменять эти настройки не стоит и только усложнит весь процесс, т.к. музыку удобно скидывать в память виты и быстрее
нужен чувак с реальной псп опять же. но дебаг энейблер опция в txt идущем с плагином работает вкл/выкл, т.е. файл читается плагином, но толку то
всмысле персонализированных плейлистов для айди игры вроде же не появилось от порта на 6.60
оффтоп:
а вот насчет картинок типа скринов с игр в плагине. эти картинки дублируются в памяти виты независимо от памяти псп. интересная система и удобнее чем на обычной псп. точнее почти как на ГО версии. можно остановить игру и в памяти виты просматривать скрины
ErikPshat
01.04.2014, 16:17
SILENT-Pavel, я имею в виду, что на PSP музыку можно ложить в папки ms0:/PSP/MUSIC/ или ms0:/MUSIC/
Но плагин, по идее, должен брать музыку исключительно только из той папки, которая прописана в конфиге, у которой нет комментирующего знака # спереди. Это 12 и 13 строчки в конфиге, идущим в комплекте с плагином music_conf.txt:DIR = ms0:/MUSIC/ #must end with a slash
#DIR = ms0:/PSP/MUSIC/Вот я и прошу проверить этот факт.
но толку то в смысле персонализированных плейлистов для айди игры вроде же не появилось от порта на 6.60А есть пример с исходниками, где такая функция присутствует?
Вообще странно... столько НИДов (14 штук) обновил в плагине, а так мало изменений )))
ErikPshat
01.04.2014, 17:05
Опана... Себе на заметку...
NID функции LoadCoreForKernel_CF8A41B1 присутствует на прошивках 1.00 - 3.7х, а в следующих прошивках изменился.
Нужно ловить и править.
LoadCoreForKernel (loadcore.prx)
0xCF8A41B1 [0x0000540C] - LoadCoreForKernel_CF8A41B1
UPD: ещё ниды функций до 5.00 присутствуют, но изменились в 6.60 SysclibForKernel (sysmem.prx)
0x89B79CB1 [0x000054B4] - strcspn
0x62AE052F [0x000054BC] - strspn
0x87F8D2DA [0x000054CC] - strtok
UPD: по непонятным причинам в исходниках присутствует нид, который ни в одной прошивке найти не удалось. Возможно старинная функция 1.х SystemCtrlForKernel
0xCC9ADCF8 [0x0000553C] - SystemCtrlForKernel_CC9ADCF8
UPD: по непонятным причинам в исходниках присутствует нид, который ни в одной прошивке найти не удалось. Возможно старинная функция 1.х
Легко Гуглится (http://code.google.com/p/hen/source/browse/trunk/6.20/rebootex/systemctrl/systemctrl.h?r=233), это sctrlHENSetSpeed.
ErikPshat
01.04.2014, 19:14
Yoti, то есть, это кастомный systemctrl.prx ? Значит зря я искал эту функцию в официальных прошивках :)
это sctrlHENSetSpeedА вот оно и скорость процессора.
void sctrlHENSetSpeed(int cpuspd, int busspd)
{
int (*_scePowerSetClockFrequency)(int, int, int);
g_scePowerSetClockFrequency_orig = find_power_function(0x545A7F3C); /* scePowerSetClockFrequency */
_scePowerSetClockFrequency = (void *) g_scePowerSetClockFrequency_orig;
_scePowerSetClockFrequency(cpuspd, cpuspd, busspd);
}
Нашел здесь: http://code.google.com/p/procfw/source/browse/SystemControl/cpuclock.c
http://i60.fastpic.ru/big/2014/0402/e1/23f86b90dfa9e286787b687c94ef2fe1.png
ErikPshat
02.04.2014, 06:11
http://i60.fastpic.ru/big/2014/0402/2f/77c0e1f42309907b8daf15ab6267f02f.png
LoadCoreForKernel_CF8A41B1 нашёл и пофиксил. Она выполняет функцию: sceKernelFindModuleByName
SystemCtrlForKernel_CC9ADCF8 осталась неизменной.
UPD: ещё ниды функций до 5.00 присутствуют, но изменились в 6.60 SysclibForKernel (sysmem.prx)
0x89B79CB1 [0x000054B4] - strcspn
0x62AE052F [0x000054BC] - strspn
0x87F8D2DA [0x000054CC] - strtok
В ообщем тут такие дела, что эти функции в прошивках 6.xx исчезли бесследно.
В sysmem.prx в основном все остальные подобные функции стоят на месте неизменно, а вот именно эти просто убрали.
Нашёл кое-что по этим функциям в исходниках PRO: https://code.google.com/p/procfw/source/browse/SystemControl/nid_data_missing.h MissingNIDEntry missing_SysclibForKernel_entries[] = {
{ 0x89B79CB1, (u32)ownstrcspn, },
{ 0x62AE052F, (u32)ownstrspn, },
{ 0x87F8D2DA, (u32)ownstrtok, },
{ 0x1AB53A58, (u32)ownstrtok_r, },
{ 0xD3D1A3B9, (u32)strncat, },
{ 0x909C228B, (u32)&ownsetjmp, }, // setjmp
{ 0x18FE80DB, (u32)&ownlongjmp, }, // longjmp
};
Возможно в ПРО-шивке они это дело пофиксили и добавили функционал старых прошивок.
Иначе config.c совсем не работал бы.
Итак, портирование плагина music.prx for 6.60 (http://www.pspx.ru/forum/attachment.php?attachmentid=9873) завершено (mediafire.com (https://www.mediafire.com/?30cf3yu5povon2d)). Это финальный релиз!
Результаты портирования с окончательной таблицей в шапке. Всё, что было возможно - было портировано под 6.60.
Тему по плагину music.prx можно закрывать.
Просьба потестить во всех режимах на прошивке 6.60 и доложить о багах...
SILENT-Pavel
02.04.2014, 18:58
Это финальный релиз!
Результаты портирования с окончательной таблицей в шапке. Всё, что было возможно - было портировано под 6.60.
Тему по плагину music.prx можно закрывать.
Просьба потестить во всех режимах на прошивке 6.60 и доложить о багах...
внутри пакета в music_conf.txt - все равно стоит дебаг вкл, зачем?
перезалью тогда с выключенным дебагом
на вите ничего не изменилось. переключение цпу не стало работать
все что работало, продолжило работать так же как в предыдущем релизе
ErikPshat
02.04.2014, 19:17
внутри пакета в music_conf.txt - все равно стоит дебаг вкл, зачем?music_conf.txt просто лежит оригинал из исходников. Там автор оставил его включённым и написал типа это для меня. Так что наверное нужно его отключить, обычным пользователям он не нужен наверное, чтобы глаза не мозолил.
переключение цпу не стало работатьОК, я его не стал трогать. Там код вроде бы рабочий, раз работал на 3.7х, ниды функций полностью под 6.60, 100 раз проверял.
Ну не работает и фиг с ним. Вон смотрю PLUM делал свой MP3Player на основе этого и просто тупо удалил поддержку скорости процессора.
Думаю в инструкции по кнопкам управления нужно совсем убрать эти кнопки. Хотя на PSP видать никто не проверял, видимо PSP ни у кого не осталось.
Хотя на PSP видать никто не проверял, видимо PSP ни у кого не осталось.
Тут один человек на пда отписался, что не работает у него чего-то. Завтра попробую на трёшке. Никогда музыку не слушал с помощью ПСП, поэтому напряжно.
SILENT-Pavel
03.04.2014, 04:21
В общем изучаю все возможности плагина
правда все еще на вите
в общем изменил директорию в конфиге с мьюзик на ат3 фолдер в руте
положил в ат3 фолдер ат3 музыку из тёмного зеркала суфон фильтра
плагин работает, но ат3 не играет. всмысле он их нашел и понимает, но PLAYING идет. а звука от них нет
на обоих плагина. древний и 6.60 оба не играют его на вите
ну мб это норма. не так важно, ат3 кодируется другими средствами в мп3. это не косяк. просто изучаю плагин и его работу на всем чем можно
а вот тема на вололо: http://wololo.net/talk/viewtopic.php?f=56&t=37806
ErikPshat
03.04.2014, 05:08
SILENT-Pavel, есть 2 формата, у обоих расширение *.at3
ATRAC3PLUS - это зашифрованный формат и он не будет проигрываться просто так, только на специальном хардварном чипе Sony. Плагин скорее не может им управлять.
ATRAC3 - это свободный формат (в хедере найдёшь RIFF....WAVEfmt) По сути это обычный WAVE контейнер с расширением *.wav и кодеком ATRAC3, просто расширение поменяли на *.at3 по названию кодека. Тема для ознакомления и кодека для PC (http://www.pspx.ru/forum/showthread.php?t=77406).
В образе Сифон Фильтра скорее всего шифрованная музыка. Её нужно сначала декодировать средствами PSP, возможно Виты. В редми от Ахмана к плагину в описании затрагивается вскользь этот момент, по поводу *.at3, и его составляющих сырцов *.oma, *.omg. Раньше была прога SonicStage бесплатная, которая декодировала AT3PLUS и скидывала автоматом на PSP в папку ms0:/OMGAUDIO/. Поэтому плагин и берёт эти файлы из этой папки по-умолчанию. Потом Sony эту прогу совсем ликвидировала и удалила.
Эту прогу SonicStage можно взять в этой теме (http://www.pspx.ru/forum/showthread.php?t=101184).
Там же есть прога для декодирования ATRAC3PLUS на PSP: AT3_DecodeTest_kernel150_&_3xx
SILENT-Pavel, классная темка получилась! :good:
vash,
SILENT-Pavel,
Если будет время, протестите плиз PSARDumper на декриптовку 6.35 и GO(6.10,6.20,...6.60 - вроде для гошки эти прошки).
Проверил плагин Music.prx для 6.60 (http://www.pspx.ru/forum/attachment.php?attachmentid=9873) на ПСП3000 с прошивкой 6.60LME-1.8. Залил в папку ms0:/MUSIC/ три файла .mp3. Тестил и в игре, и в хоумбрю (Соул Калибур и Эверест). Все пункты меню, которые указаны - работают как надо по-определению. Не разобрался только с пунктом 12. :select: + :start: = Повторить. Чего он там повторяет? При нажатии этой комбинации ничего не происходит: как играла выбранная мелодия, так и играет.
П.С.: хотел заскринить работу музыкального плагина при выведении меню с информацией (пунктом 10), не срабатывает скриншотер. (http://www.pspx.ru/forum/showthread.php?t=76577)
...протестите плиз PSARDumper на декриптовку 6.35 и GO(6.10,6.20,...6.60 - вроде для гошки эти прошки).
Проверил этот дампер. Проша 6.20 от гошки декриптовалась нормально, остальные прошивки не декриптовались, в т.ч. и 6.35 для ПСП. Причём, 6.60 для гошки вообще отказалась обрабатываться, хоть дампер и увидел её как 6.60 (сразу написал, что для выхода нажмите :cross:).
ErikPshat
03.04.2014, 13:54
vash, круто, а частоту процессора повышает и понижает?
Про PSARDumper забыл добавить, что нужна информация, какой table_mode показывает на прошивках, которые не декриптуются.
Он эту инфу должен выводить после старта, когда начинает грузить прошивку.
vash, а частоту процессора повышает и понижает?
Да, как положено. Изменения частоты индицируются на экране, а также, при включённом меню плагина. В общем, с мп3-файлами, кроме последнего (пункта 12 в описании управления) непонятного повторения, всё работает.
Щас мод гляну и тут напишу.
Результаты:
mode 4 включается при прошивках 6.35, 6.39, 6.35 го, 6.39 го и не декриптует их, а также 6.60, но её декриптует.
mode 5 включается при прошивках 6.20 го (декриптует) и 6.60 го (не декриптует, см скрин) http://www.pspx.ru/forum/picture.php?albumid=18&pictureid=293
ErikPshat
03.04.2014, 14:55
последнего (пункта 12 в описании управления) непонятного повторенияПо идее это функция loop - зацикливание воспроизведения. То есть, при нажатии клавиш, вроде бы ничего не должно происходить, но песня по окончании должна повториться снова.
И попробуй уменьшать частоту процессора до минимума, как дойдёт до 29/14, то PSP должна неадекватно себя вести, мерцать экран, особенно в играх.
Да, были жалобы по поводу воспроизвения из других папок. Вообще говорили, что проигрывает всегда только из ms0:/PSP/MUSIC/, но не подхватывает ms0:/MUSIC/
По поводу дампера вроде бы ситуация проясняется, ещё бы информации со скринами и не вперемешку c Go.
Не хватает информации по ошибке - ? -> Cannot decrypt Xg table FFFFFFFF.
Ещё просьба проверить 6.10 от Go (там в коде как раз они идут в паре для 6.10 и 6.20.)
Вот я тебя загрузил :)
ErikPshat
03.04.2014, 15:36
И ещё, в исходниках я смотрю, что музыка должна проигрываться из поддиректорий, т.е. например в папке ms0:/MUSIC/ можно создать подпапки и из них так же должна подхватываться музыка.
И ещё, каким-то образом должен подхватываться плейлист, может попробовать подкинуть файл PLS или M3U http://mp3-converter.narod.ru/sozdanie-pleilista.html
На экране должен высвечиваться Plylst Status: блаблабла
По идее это функция loop - зацикливание воспроизведения. То есть, при нажатии клавиш, вроде бы ничего не должно происходить, но песня по окончании должна повториться снова.
Да, точно. При включении этой функции, воспроизводимая мелодия зацикливается. Если эта функция не включена, то воспроизводятся музфайлы подряд, а по окончании списка, стартует заново.
И попробуй уменьшать частоту процессора до минимума, как дойдёт до 29/14, то PSP должна неадекватно себя вести, мерцать экран, особенно в играх.
Да, именно. При минимуме (индицируются цифры 028:046) игра становится слайдшоу, при максимуме (333:166) - всё нормально. И я ошибся, во включаемом меню информации я не нашёл цифр частоты проца.
Да, были жалобы по поводу воспроизвения из других папок. Вообще говорили, что проигрывает всегда только из ms0:/PSP/MUSIC/, но не подхватывает ms0:/MUSIC/
Я воспроизводил именно из папки ms0:/MUSIC/.
П.С.: сейчас на прошивку 6.10 поищу и проверю.
И ещё, в исходниках я смотрю, что музыка должна проигрываться из поддиректорий, т.е. например в папке ms0:/MUSIC/ можно создать подпапки и из них так же должна подхватываться музыка.
Создал в папке ms0:/MUSIC/ папку ms0:/MUSIC/1/, положил и в неё музыку, воспроизводит и из ms0:/MUSIC/, и из ms0:/MUSIC/1/, как-будто рядом лежат. В меню плагина путь правильно отображается. Только к чему так извращаться?
ErikPshat
03.04.2014, 15:56
Ну ваще просто замечательно!
Я воспроизводил именно из папки ms0:/MUSIC/.
В конфиге есть строчки: DIR = ms0:/MUSIC/ #must end with a slash
#DIR = ms0:/PSP/MUSIC/
Если убрать спереди знак #, то эта строчка будет активирована. Можно поменять решётки на другую папку и должна музыка подхватываться из другой папки, либо совсем убрать решётки с путей, тогда должна подхватываться с обеих папок.
Да, поставь звук в конфиге на 50, иначе звук при включении музыки по умолчанию будет сразу на 100% VOLUME = 100 # 0-100, default volume
Создал в папке ms0:/MUSIC/ папку ms0:/MUSIC/1/, положил и в неё музыку, воспроизводит и из ms0:/MUSIC/, и из ms0:/MUSIC/1/, как-будто рядом лежат. В меню плагина путь правильно отображается. Только к чему так извращаться?Оу, ну это совсем отлично!!!
Ну можно в папке музыки разложить песни по своим подпапкам, например по альбому или по жанру. Чисто для себя, чтобы было, как в библиотеке, всё по своим полочкам. И потом, возможно можно выбирать музыку в порядке воспроизведения подпапок.
И ещё, каким-то образом должен подхватываться плейлист, может попробовать подкинуть файл PLS или M3U http://mp3-converter.narod.ru/sozdanie-pleilista.html
На экране должен высвечиваться Plylst Status: блаблабла
Ага, высвечивается в меню плагина Plylst Status:00000004.
Ещё, для особо извращённых, проверил запуск файла с таким названием: _яю____C_1_=_0_O_ __C_7_K___0_ =_0_ A_0_9_B_5_ - _яюFake_Do_Am.mp3
Запустился, только вместо кириллических букв крякозяблы.
ErikPshat
03.04.2014, 16:20
vash, отлично:
LOOP - зацикливание, работает. При включении функции, по окончании песни, она начинает каждый раз воспроизводится повторно.
Смена скорости процессора - работает, но не выводится инфа об изменении на экран. Нужно попробовать добавить вывод инфо.
Музыка из подпапок - работает.
Названия на кириллице - воспроизводит. Нужно добавить кириллицу в шрифты, возможно будет и русские названия показывать.
Плейлист - получается не берётся из специального файла PLS/M3U, а генерируется плагином внутри программы на основе имеющихся треков.
Так получается всё работает. Нужно только пофиксить зелёные примечания )))
Не хватает информации по ошибке - ? -> Cannot decrypt Xg table FFFFFFFF.
Такая ошибка возникла только при попытке обработки прошивки 6.60 от гошки. На других прошивках, которые не декриптуются, картинка несколько другая, например 6.35 для ПСП:
начало запуска - http://www.pspx.ru/forum/picture.php?albumid=18&pictureid=294, продолжение - http://www.pspx.ru/forum/picture.php?albumid=18&pictureid=295 http://www.pspx.ru/forum/picture.php?albumid=18&pictureid=296, и окончание процесса - http://www.pspx.ru/forum/picture.php?albumid=18&pictureid=297.
Ещё просьба проверить 6.10 от Go
Эээ? 6.10?
Смена скорости процессора - работает, но не выводится инфа об изменении на экран. Нужно попробовать добавить вывод инфо.
Да нет, во-время изменения показывает внизу слева экрана, на пару секунд, я же писал, типа 028:046 на минимуме.
Плейлист - получается не берётся из специального файла PLS/M3U, а генерируется плагином внутри программы на основе имеющихся треков.
Я файлы PLS/M3U не делал, поэтому такой вывод не правилен. А название файла берётся прям из названия, хотя на компе и название альбома, и артист, и фирма-производитель файла виден. Винда из самого мп3 файла данные берёт.
ErikPshat
03.04.2014, 17:01
Да нет, во-время изменения показывает внизу слева экрана, на пару секунд, я же писал, типа 028:046 на минимуме.
Да я об этом. Я так понял, что инфа о скорости не выводится по :select: + :square: = Вызов на экран меню с информацией.И я ошибся, во включаемом меню информации я не нашёл цифр частоты проца.
Я файлы PLS/M3U не делал, поэтому такой вывод не правилен.
Ну я уже понял, что это именно так, потому что в исходниках не нашёл данных именно по формату плейлистов PLS/M3U, поэтому из воздуха они не могут читаться. Просто автор в программе назвал так плейлисты. А на самом деле, плагин сканирует директории, находит все песни и запоминает их количество и названия. Потом использует эту инфу в памяти для переключения между треками, зацикливания, последовательного и рандомного воспроизведения.
По поводу PSARDumper-а, огромное спасибо за скрины! Хоть теперь ясно в какую сторону копать.
Я так понял, что инфа о скорости не выводится по :select: + :square: = Вызов на экран меню с информацией.
Эх, не бейте меня тапочками, облажался. Вот на сотик снял меню плагина, есть там скорость проца. :blush:
http://www.pspx.ru/forum/picture.php?albumid=18&pictureid=298
Качество картинки паршивое, но разглядеть можно.
ErikPshat
03.04.2014, 17:33
vash, ууу, как всё запущено :) Поменяй местами строчки в текстовиках скриншотера и плагина музыки.
Либо поменяй скриншотер, думаю CWCapture 0.5 должен работать.
SILENT-Pavel, тебе нужно описание с инструкцией менять, что работает, а что нет. Например проигрывание из подпапок и кириллические названия. Я щас попробую кириллический шрифт добавить...
Поменяй местами строчки в текстовиках скриншотера и плагина музыки.
Ты знал и молчал!
http://www.pspx.ru/forum/picture.php?albumid=18&pictureid=304
Никогда не пользовался плагинами, вот и туплю.
Хотелось-бы добавить, что при изменении уровня громкости, циферки в vol. не меняются, так 100 и остаются. А в самом низу название того самого музыкального файла с трудным именем.
ErikPshat
03.04.2014, 18:28
vash, добавил кириллицу в шрифты, проверь плиз на песнях с нормальным русским названием...
ErikPshat, нет, крякозяблы. Песня со скрина называется ДМБ-2007. Звук максимальный вдвое уменьшил, теперь на максимуме тихо играет.
http://www.pspx.ru/forum/picture.php?albumid=18&pictureid=305
На всякий случай, менял язык системы на инглиш, тоже самое.
Не знаю, где вы могли найти настолько древние версии дампера, но мой мод (чисто косметический) pro'шного всё спокойно разбирает.
ErikPshat
03.04.2014, 23:56
Yoti, а вот PROшный я давно не вспоминал )))
А вот у тебя вообще нет table_mode = 5, значит получится байда с гошками 6.10/6.20
Помню в последний раз я его собирал и кидал в тему, вроде там он и есть мой старый космический )
У нас на руках последние под 6.60 только от Проксимы и Нейрона.
ErikPshat, насчёт плагина - без изменений
Лана - Ты ведь знаешь это.mp3
http://www.pspx.ru/forum/picture.php?albumid=18&pictureid=306
ErikPshat
04.04.2014, 18:02
vash, ладно, надоело заниматься русификацией плагина. Пусть так и останется, раз всё работает. Я смотрю, символы в названиях как раз берутся из всей матрицы шрифтов, т.е. без ограничений. Просто название песни каким-то образом записывается на карту памяти и считывается средствами PSP уже в другом формате. Видно, что каждая русская буква выводится не одним символом, а двумя, причём в другой кодировке и с другим смещением.
Так что мне пока не под силу разобраться с кодом вывода этой фигни, у кого есть опыт работы с этими кодировками, тот возможно и асилит, например frostegater или Yoti. Тем более, что автор в исходниках вставил такое примечание:
this allows us to parse latin-encoded unicode strings, though it could be better
http://puu.sh/7VyzB.png
Давай доканаем лучше PSARDumper... А что, Йотин дампер ты не проверял?
насчёт плагина - без изменений
Обычный UTF-8 (2 байта на символ кириллицы) выводимый по байту на символ.
Для не-гиков (т.е. не таких, как я ХД) есть
http://habrastorage.org/storage2/61b/e7a/455/61be7a4552a6650bd19b526db63d4779.png
Источник (http://habrahabr.ru/post/147843/)
ErikPshat
06.04.2014, 01:57
Обычный UTF-8 (2 байта на символ кириллицы) выводимый по байту на символ.Это я прекрасно знаю, что это русские буквы в UTF-8. На скриншоте всё видно наяву:
http://www.pspx.ru/forum/picture.php?albumid=18&pictureid=306
Лана - Ты ведь знаешь это.mp3
Там даже отображаются мои символы в матрице шрифтов: символ Наруто, кирпичная кладка для рекавери меню, человечек с поднятой правой рукой, на белом фоне куски букв из строчки PSPx.Ru, которую я растянул на несколько символов длиннее.
9895
То есть, я вижу, что сиволы беруться не в ограниченной области 0x7F(127), а далеко дальше. А значит залочки нет.
Yoti, а что дальше..., что от того, что ты нам открыл великую тайну Буратино: "Что спрятано за холстом"? :D
Мы знаем, что там находится дверь. А вот что за дверью?
Вопрос в том, как это дело пофиксить. За вывод шрифта отвечает файл в исходниках blit.c.
Но как бы я не менял параметры, всё равно он выводит английские символы по одному байту, а русские названия песен 2-мя байтами, причём с невероятными смещениями.
Например первую букву "Л" в названии песни Лана - Ты ведь знаешь это.mp3 он показывает символами из матрицы 0x509B, вторая буква "а" - 0x50B0
ErikPshat,
очевидно же, добавить поддержку юникода или грязный хак по конверту символов.
frostegater
06.04.2014, 18:07
есть исходники, есть поддержка. пара минут делов
ErikPshat
10.05.2014, 07:55
http://www.pspx.ru/forum/attachment.php?attachmentid=9895
То есть, я вижу, что сиволы беруться не в ограниченной области 0x7F(127), а далеко дальше. А значит залочки нет...
Например первую букву "Л" в названии песни Лана - Ты ведь знаешь это.mp3 он показывает символами из матрицы 0x509B, вторая буква "а" - 0x50B0
Хе-хе, нужно просто матрицу кириллицы переместить на 2 строчки выше :) тогда всё встаёт на свои места.
А да, ещё первый байт мешает, как бы от него избавиться?
vBulletin® v3.8.7, Copyright ©2000-2025, vBulletin Solutions, Inc. Перевод: zCarot