Привет всем. Побаловался ИИ, чтобы сменить мапперы у игр
1) Puteshestvie_po_Europe_NO_CRC_by_Guyver_MMC3.zip, не знаю зачем, но может кому пригодится, тут по идее помогла простая смена заголовка.
2) Пытался сделать редкий платформер Perman - Return the Space Saucer! (на англ, 32й маппер) - но на ММС3 никак не получается допилить, просто серый экран или зелёный в mesen, но ошибку CPU crashed в Mesen больше не выдаёт.
--------------------------------------------------------
Нужно положить в корень диска D 3 файла:
generate_ips.bat
patch_perman_final.ps1
Perman.nes - на 32 маппере, в архиве
1) Запустить generate_ips.bat
2) Создатся Perman_MMC3.ips
3) Применить IPS к Perman.nes
для удобства, всё сделано и сложено в архив (Perman_MMC3.nes - патченный ром)
--------------------------------------------------------
Что делает патч:
Заголовок: Mapper 32 → Mapper 4 (MMC3)
Thunk'и: 12 штук по адресам $FD00-$FDB0
Замены: STA/STY $8000/$A000/$B000-$B007 → JSR $FDxx
--------------------------------------------------------
Код Thunk'а
; IREM: STA $B001 (CHR банк 1, 1KB по адресу $1400-$17FF)
; MMC3: регистр 1 = CHR $1400-$17FF (1KB)
PHA
LDA #$01 ; MMC3 регистр 1 и т.д. по остальным регистрам, меняя 01 на номер нужного и второй байт из hex с 01 на 0х
STA $8000
PLA
STA $8001
RTS
Hex: 48 A9 01 8D 00 80 68 8D 01 80 60
--------------------------------------------------------
Может у кого получится запустить или подсказать, где кроется ошибка?
Снимал лог игры через FCEUX - trace Logger, разбивая по уровням, файлы остались, если для анализа нужны, могу предоставить, игра вся пройдена. Может снимать дисассемблированный код как-то по-другому надо? Через Breakpoint в Mesen на чтение CPU Memory, через Запись в PRG-ROM, через чтение в CHR-ROM по адресам 8000-FFFF кидал на обработку ведь код ИИ, потом вообще по всем адресам

На железе не проверял. Так-то вроде логика с подменой вызова регистров и вызовом микропрограммы для нормальной работы с регистрами MMC3 должно дать результат, но что-то пошло не так.
Основной код лежит в patch_perman_final.ps1