EBOOT.BIN Patcher v1.1 - запуск новых игр на 5.00M33|5.03GEN/MHU
EBOOT.BIN Patcher v1.1
Как обладатель непрошиваемой 3008 версии psp я не мог смириться с тем, что 80% (если не больше) новых игр на ней не запускается.
Я начал изучать декомпилированный код загрузчиков игр на предмет несоответствий.
Сначала я пошел неправильным путем, считая, что в новых играх используются API-функции новой прошивки, при вызове которых psp зависала. Потратив несколько дней на изучение, я понял, что принципиальных отличий между загрузчиками нет.
После этого я начал обращать внимание на все детали и увидел, что практически в самом начале вызывается функция SysMemUserForUser_91DE343C. Поискав о ней информацию, я к сожалению, обнаружил, что данная функция ядра недокументирована ни в СДК, ни где либо еще. Продолжив раскопки я увидел это:
Используя дебаггер эмулятора jpcsp 0.3.1105 я увидел, что значение регистра $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. Извлеките с помощью UMDGen из образа игры загрузчик EBOOT.BIN и экспортируйте File list (меню File>File list>Export);
2. Декриптуйте загрузчик EBOOT.BIN с помощью EDecrypt v1.3.1 либо PRXDecryptor 2.3;
3. Примените патчер из вложения к декриптованному загрузчику EBOOT.BIN (проверьте, что это именно декриптованный - у него хедэр ELF).
4. Упакуйте загрузчик обратно в образ (с помощью UMDGen замените загрузчик EBOOT.BIN в образе на декриптованный).
5. Импортируйте File list обратно, согласившись с вопросом о желании зафорсить положение файлов в образе! (этот пункт обязателен для многих игр, в частности DiRT2 без этой процедуры валится в черный экран)
6. Сохраните новый образ из UMDGen (cохраните оригинал)
7. Перепишите образ на psp и играйте.
P.S. В ссылке на патчер приведен список всех протестированных игр.
UPDATE: Для тех, кто будет править файл вручную, обратите внимание, что есть игры в которых таких проверок не одна. Точно знаю что не одна проверка в DIRT2, Bloons Minis и Undead Knigts. Именно поэтому патчер патчит так долго, ищет дополнительные проверки.
Последний раз редактировалось ErikPshat; 25.03.2010 в 16:51.
Причина: Update to version 1.1
mc707, привет! Хочу сказать, что я очень благодарен тебе за данную прогу, потому что у меня зыза 2004 непрошивайкам и я уже хотел покупать себе *старую* прошиваемую зызу... почти все игры не запускались. У меня есть из новых игр только GT USA, образ iso, я файл пропатчил в Game Decryptor by Yoshihiro v2, зашел в твою программу, тоже файл пропатчил, всунул в образ и сохранил в исо. Захожу в игру - черный экран. Что не так? У меня 5.03 мху. Еще раз спасибо за прогу
Последний раз редактировалось makci-n82; 23.11.2009 в 14:46.
не забываем что после декриптинга ебут.бин (который надо патчить) будет в папке DECRYPTOR!!! от туда его забираем, патчим, заливаем обратно в исо и играем.....ещё раз спасибо автору за титанический труд на благо всех!!!!
Кстати, если поменять версию не на 5.00, а на 1.0, то игра будет запускаться на всех прошивках? )))
То есть нужно искать в EBOOT.BIN версию прошивки 0505023C и заменить на 0005023C.
Да, и ещё ко многим играм требуется дополнительно Крэк. Почему же тогда на 5.50GEN крэка не требуется и все игры работают так?
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Последний раз редактировалось ErikPshat; 07.10.2009 в 05:59.
ErikPshat, ок, бывает, я уж думал что опять что-то не учел
Единственное мне не понятно то, что некоторые игры, которые напрочь отказываются работать на 5.00m33 (естественно без твоего патча), спокойно идут на 4.01m33...
мне тоже это интересно... больше всего вероятно то, что функция SysMemUserForUser_91DE343C в 4.01m33 реализована как-то иначе.
Из более-менее стоящих релизов на 5.0 не идет пока только Marvel Ultimate Alliance 2 (остальные японки). Сейчас только скачал ее... буду копать ее. Хотя к ней патчер не применяется, так как он так же как и моторшторм должен запуститься и без него.
mc707, огромное спасибо за патчер! оправдались мои подозрения - любая игра (не хоумбрю) может идти на любой прошивке, главное скинуть проверку. оставалось как-то декомпилировать декриптованный загрузчик, чтобы посмотреть код. чем декомпилил?
ErikPshat, пробовал. Там именно 00 05 02 3С стоит. Т.е. требуется 5.00. Сейчас копаю дизассемблерный код, нашел несколько unknown syscall'ов, возможно проблема в них.
08d90838:[0008998c]: syscall 0x02266 [sceMpegGetAvcAu]
08d9083c:[03e00008]: jr $ra
08d90840:[03ffffcc]: syscall 0xFFFFF [unknown]
08d90844:[03e00008]: jr $ra
08d90848:[03ffffcc]: syscall 0xFFFFF [unknown]
08d9084c:[03e00008]: jr $ra
08d90850:[03ffffcc]: syscall 0xFFFFF [unknown]
08d90854:[03e00008]: jr $ra
08d90858:[03ffffcc]: syscall 0xFFFFF [unknown]
08d9085c:[03e00008]: jr $ra
08d90860:[03ffffcc]: syscall 0xFFFFF [unknown]
08d90864:[03e00008]: jr $ra
08d90868:[03ffffcc]: syscall 0xFFFFF [unknown]
08d9086c:[03e00008]: jr $ra
08d90870:[0008628c]: syscall 0x0218A [PowerRegisterCallback]
unsupported, в шапке написано. Использовал и prxtool (он удобен тем, что показывает reference ссылки) и jpcsp 0.3 (удобен тем что есть дебаг(!) и весь импорт резолвит)
Последний раз редактировалось mc707; 07.10.2009 в 10:31.