圣者
精华
|
战斗力 鹅
|
回帖 0
注册时间 2002-1-26
|
Запуск новых игр на 5.00m33-6/5.03MHU/5.03GEN-A
--------------------------------------------------------------------------------
Как обладатель непрошиваемой 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 сообщений.
--------------------------------------------------------------------------------
Последний раз редактировалось ErikPshat; Сегодня в 03:28.
这啥? |
|