Как обладатель непрошиваемой 3008 версии psp я не мог смириться с тем, что 80% (если не больше) новых игр на ней не запускается.
Я начал изучать декомпилированный код загрузчиков игр на предмет несоответствий.
Сначала я пошел неправильным путем, считая, что в новых играх используются API-функции новой прошивки, при вызове которых psp зависала. Потратив несколько дней на изучение, я понял, что принципиальных отличий между загрузчиками нет. После этого я начал обращать внимание на все детали и увидел, что практически в самом начале вызывается функция SysMemUserForUser_91DE343C. Поискав о ней информацию, я к сожалению, обнаружил, что данная функция ядра недокументирована ни в СДК, ни где либо еще. Продолжив раскопки я увидел это:
Код: 08e2c290:[3c020505]: lui $v0, 0x0505 <=> li $v0, 0x05050000 08e2c294:[afb3000c]: sw $s3, 12($sp) 08e2c298:[00809821]: addu $s3, $a0, $zr <=> move $s3, $a0 08e2c29c:[34440010]: ori $a0, $v0, 16 08e2c2a0:[afb20008]: sw $s2, 8($sp) 08e2c2a4:[00a09021]: addu $s2, $a1, $zr <=> move $s2, $a1 08e2c2a8:[afb10004]: sw $s1, 4($sp) 08e2c2ac:[afb00000]: sw $s0, 0($sp) 08e2c2b0:[3c100000]: lui $s0, 0x0000 <=> li $s0, 0x00000000 08e2c2b4:[afbf0010]: sw $ra, 16($sp) 08e2c2b8:[0e397784]: jal 0x08E5DE10 [SysMemUserForUser_91DE343C]Используя дебаггер эмулятора [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] я увидел, что значение регистра $v0, в который записывается число 505h по адресу 8e2c290 передается функции SysMemUserForUser_91DE343C по 8e2c2b8. На самом деле получается, что вызывается функция ядра SysMemUserForUser_91DE343C(0x0505,...), что наводит на мысль по аналогии с вызовом функции
Код: // @param sdkversion - The sdkversion to set // (e.g.: 0x02070110 in applicationc compiled for firmware 2.71) int sceKernelSetCompiledSdkVersion(int sdkversion);что говорит о том что число 0x0505 может означать версию прошивки 5.50.
Недолго думая, исправив это значение на 0x0500 я успешно запустил данную игру на 5.03 MHU.
Два дня ушло на проверку теории и тестирование на всех играх на прошивках 5.0m33-6 и 5.03MHU (Мой друг Mercyful тестировал на 5.0m33-6, я тестировал на 5.03MHU). Результат оказался впечатляющим - на 5.0 работают 98% игр (2% ушло на несколько игр плюс небольшой запас).
Для не знакомых с ассемблером процессора MIPS предлагаю небольшую инструкцию для быстрого патча и универсальный патчер для любой игры, включая (я надеюсь) еще невышедшие: 1. Извлеките из образа игры загрузчик EBOOT.BIN; 2. Декриптуйте его с помощью [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] либо [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!]; 3. Примените патчер. 4. [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] загрузчик обратно в образ. 5. Перепишите образ на psp и играйте.
Download Patcher: из [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] или с [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!]
P.S. В ссылке на патчер приведен список всех протестированных игр. ВложенияЧтобы загружать вложения у Вас должно быть 0 сообщений или больше. А у Вас 0 сообщений.
Not working at that moment with: - Brainpipe_A_Plunge_to_Unhumanity_PSN_PSP (public rls) - Breakquest_PSN_PSP (public rls) - Evangelion_Jo_JPN_PSP-Caravan - Marvel_Ultimate_Alliance_2_USA_PSP-PSPKiNG - Sorayume_Portable_JPN_PSP-BAHAMUT