Автор Тема: [NES] Смена маппера с помощью ИИ  (Прочитано 103 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Online

  • Пользователь
  • Сообщений: 104
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« : 07 Июля 2026, 10:50:38 »
Привет всем. Побаловался ИИ, чтобы сменить мапперы у игр
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 кидал на обработку ведь код ИИ, потом вообще по всем адресам :D
На железе не проверял. Так-то вроде логика с подменой вызова регистров и вызовом микропрограммы для нормальной работы с регистрами MMC3 должно дать результат, но что-то пошло не так.
Основной код лежит в patch_perman_final.ps1

Онлайн Kotix

  • Пользователь
  • Сообщений: 196
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #1 : 07 Июля 2026, 13:56:45 »
Online, лучше побалуйся как Tennis на NES сделать на двоих и два на два, я пытался с клодом :cry:

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5699
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #2 : 07 Июля 2026, 15:11:20 »
Пытался сделать редкий платформер Perman - Return the Space Saucer! (на англ, 32й маппер) - но на ММС3 никак не получается допилить
Из-за ограничения на размер CHR банков у MMC3 (PPU окно: 2 * 2КиБ + 4 * 1КиБ, у 32-го маппера: 8 * 1КиБ), чтобы портировать на MMC3 нужно поменять порядок CHR банков. Увеличение CHR ROM с 128КиБ до 256КиБ возможно позволит обойтись без урезания графики.
UPD: Чтобы правильно расположить CHR без разбора кода, можно пройти всю игру, используя Lua-скрипт, собирающий индексы всех пар 1КиБ CHR банков. Для нейросетки это означает умение пройти всю игру или осмысленно разобрать весь код.
« Последнее редактирование: 07 Июля 2026, 15:21:25 от Sharpnull »

Оффлайн Online

  • Пользователь
  • Сообщений: 104
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #3 : 07 Июля 2026, 17:14:50 »
Половил через Lua CHR, но серый экран

Сопоставление регистров
PRG-ROM маппинг:
IREM регистр $8000 (16KB PRG в $C000-$DFFF) эмулируется через два MMC3 регистра:
MMC3 reg 6 (8KB @ $C000-$DFFF) = банк X
MMC3 reg 7 (8KB @ $E000-$FFFF) = банк X+1
IREM регистр $A000 (16KB PRG в $8000-$BFFF) эмулируется через:
MMC3 reg 4 (8KB @ $8000-$9FFF) = банк X
MMC3 reg 5 (8KB @ $A000-$BFFF) = банк X+1
------------------------------------------------------------------------------------------------------
CHR-ROM маппинг:
IREM $B000 (1KB @ $1000) → MMC3 reg 0 (1KB @ $1000)
IREM $B001 (1KB @ $1400) → MMC3 reg 1 (1KB @ $1400)
IREM $B002 (1KB @ $1800) → MMC3 reg 2 (1KB @ $1800)
IREM $B003 (1KB @ $1C00) → MMC3 reg 3 (1KB @ $1C00)
IREM $B004 (1KB @ $0000) → MMC3 reg 4 (2KB @ $0000, значение делится на 2 через LSR)
IREM $B005 (1KB @ $0400) → MMC3 reg 5 (2KB @ $0800, значение делится на 2 через LSR)
IREM $B006 (1KB @ $0800) → MMC3 reg 0 (приближённо, переиспользование)
IREM $B007 (1KB @ $0C00) → MMC3 reg 1 (приближённо, переиспользование)
Пытался через потерю анимации, но тоже серый экран.

Исходный доработанный код с патчем и пропатченным ромом прикрепляю

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3280
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #4 : 08 Июля 2026, 12:09:49 »
Сопоставление регистров
PRG-ROM маппинг:
У тебя и ИИ нет понимания принципа работы. В самих твоих цитатах уже содержатся противоречия типа MMC3 reg 4 и 5 одновременно в PRG-ROM и CHR-ROM маппинг.
Во-вторых неправильные данные - MMC3 $C000-$FFFF не переключает, этот банк в нём фиксирован. Он переключает только $8000-$9FFF (то, что ты называешь MMC3 reg 6), и $A000-$BFFF (MMC3 reg 7).

Оффлайн Online

  • Пользователь
  • Сообщений: 104
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #5 : 09 Июля 2026, 07:58:01 »
У тебя и ИИ нет понимания принципа работы. В самих твоих цитатах уже содержатся противоречия типа MMC3 reg 4 и 5 одновременно в PRG-ROM и CHR-ROM маппинг.
Во-вторых неправильные данные - MMC3 $C000-$FFFF не переключает, этот банк в нём фиксирован. Он переключает только $8000-$9FFF (то, что ты называешь MMC3 reg 6), и $A000-$BFFF (MMC3 reg 7).
Да, сам в этомк сожалению не шарю :( Но обе части мало кому известного платформера хорошие, вторая часть переведена на английский тоже,чем-то Blaster master напоминает,когда заходишь в дом. Надеюсь, у уважаемых ромхакеров появится интерес перенести эти игры на MMC3.

Используемый lua прикрепляю, может кому пригодится (насколько он правильный не знаю) :)
« Последнее редактирование: 09 Июля 2026, 14:18:49 от Online »