(WIP) Портирование decap патча на Prince of Persia: Rival Swords 
		
		
			Вложений: 3 
		
		Порт decap патча RhymeKidder'a для PSP версии Rival Swords (ULUS-10240), включает разрубание монстров в игре. Залил во вложения пропатченный boot.bin и написанную на скорую руку простенькую утилитку, которая патчит boot.bin или iso образ.  
	Большое спасибо riku.kh3 и Yoti за помощь! :good:  Скриншоты  Архив  | 
		
 Исходники это, конечно, хорошо, но лучше бы ссылку на источник. В каком виде он сделан? Если это dll, то в случае с psp по аналогии писать плагин. Либо писать вставки кода в свободные места исполняшки с возвратом обратно. Мануал к архитектуре вот, например. 
	 | 
		
 Вложений: 1 
		
		Yoti, источник был здесь, залил во вложения, т.к. ссылка там уже мертва. Да, сделано в виде dll-инжекта. 
	 | 
		
 Лучший пример модуля-патчера с загрузчиком оригинального eboot для внедрения в образ вот тут: https://github.com/RaienryuuNoNatsu/ZeroAoVoice-PSP 
	 | 
		
 На PSP хуки вам не нужны, продолжайте делать все так же, как и до этого делали - вносить правки непосредственно в сами функции. Если что-то где-то не влезает - заменяете одну из инструкций бранчем, по новому адресу возвращаете замененную инструкцию, свой код и ставите бранч назад (или используете связку jal-jr). Место для своего кода можно взять там, где обрабатываются строки с различными ошибками (0x47D2D4-0x47D30C например). 
	"decap_archer" вызывает пустую "fix_archer", которая вообще ничего не делает, после чего вызывает саму "decap". То есть ее сразу на "decap" можно заменить. Остается только "decap_brute" (вернее "fix_brute"): она смотрит одно из значений в стэке. Если оно равно 0x82830304, то это значение заменяется на 0x82830403. Это надо в отладчике уже смотреть где оно на PSP в стэке. Должно быть что-то вроде того: Код: 
	0x47D2D4: | 
		
 Выглядит нормально. 
	Эмулятор, да, он вместо связки lui и addiu будет отображать псевдоинструкцию 'li v0, 0x82830304'. Вот так тогда попробуйте: Код: 
	0x47D2D4:И у вас там в гидре криво некоторые инструкции добавились. В самом эмуляторе попробуйте их скомпилировать (правый клик по инструкции --> Assemble Opcode) и из вкладки 'Memory' переписать hex-значения (одна инструкция = 4 байта).  | 
		
 Вложений: 1 
		
		Попробовал сгенерить hex-код, заменить. В эмуляторе половину инструкций по непонятным причинам выводит битыми:crazy: 
	Код: 
	        0047d2d4 ef ff 00 10     b          LAB_0047d294Edit2: всёравно ломает инструкции, вот скопированные из дизасма PPSSPP + прикрепил ELF Код: 
	1000FFEF | 
		
 А, нет, стоп, это не Гидра виновата. Тут таблица релокаций ELF вносит изменения в код при загрузке, в ней занулить надо несколько мест. Замените в эмуляторе инструкции на правильные, если все нормально будет работать я посмотрю где там таблица. 
	 | 
		
 riku.kh3, я тоже начал подозревать, что что-то переписывает код :D 
	BlackDaemon добавил 30.04.2020 в 13:40 Потестил чуть код через замену в эмуляторе, вроде всё норм работает :good: https://streamable.com/kywdld  | 
		
 Вложений: 1 
		
		Проверяйте. 
	 | 
		
 riku.kh3, потестил чуть, вроде бы всё нормально. Большое спасибо! :good: Добавил только переход для 0x4096c на 0x47D2D8, и основной decap функции 0x3132b4 заменил код на return 1. Ночью сделаю ещё тест-драйв по сюжетке, если всё будет стабильно то будет релиз :) 
	 | 
		
 Тогда еще лучше вот так, понадежнее должно быть: 
	Код: 
	0x47D2D4: | 
		
 riku.kh3, прошёл сюжетку, проблем на эмуляторе не возникло :good: Обновил шапку, прикрепил пропатченный бутник и простенькую утилитку :) 
	 | 
		
 Небольшое обновление - убрана цензура крови, теперь она как и положено красная :D 
	 | 
		
 BlackDaemon, вы можете дать ссылку на уже пропатченый образ игры? 
	 | 
		
 Вложений: 1 
		
		
	 | 
		
 Upd: прошёл сюжетку, PPSSPP крашнулся один раз, но скорее всего из-за того, что savestate'ами баловался. Обновил шапку, добавил последнюю версию патча. Есть ранние наработки по пересадке эффектов крови песочным монстрам, но из-за того, что ресурсы игры плохо изучены результат пока не совсем удовлетворителен. 
	 | 
		
 
Здравствуй. А как убрать цензуру вначале игры и добавить кровь для версии ПК в патче RhymeKidder? 
	 | 
		
 YuriiM, наверное установить патч, не? Для этого его и создавали 
	 | 
| Текущее время: 17:31. Часовой пояс GMT +3. | 
	Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
	
	PSPx Forum - Сообщество фанатов игровых консолей.