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

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

Оффлайн Online

  • Пользователь
  • Сообщений: 111
    • Просмотр профиля
[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

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

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5733
    • Просмотр профиля
[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

  • Пользователь
  • Сообщений: 111
    • Просмотр профиля
[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_

  • Пользователь
  • Сообщений: 3281
  • Пол: Мужской
    • ВКонтакте
    • 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

  • Пользователь
  • Сообщений: 111
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #5 : 09 Июля 2026, 07:58:01 »
Да, сам в этомк сожалению не шарю :( Но обе части мало кому известного платформера хорошие, вторая часть переведена на английский тоже,чем-то Blaster master напоминает,когда заходишь в дом. Надеюсь, у уважаемых ромхакеров появится интерес перенести эти игры на MMC3.

Используемый lua прикрепляю, может кому пригодится (насколько он правильный не знаю) :)
« Последнее редактирование: 19 Июля 2026, 02:27:02 от Беларус »

Оффлайн vitsum

  • Пользователь
  • Сообщений: 59
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #6 : 13 Июля 2026, 17:43:08 »
Kotix,
Online, лучше побалуйся как Tennis на NES сделать на двоих и два на два, я пытался с клодом :cry:
с нуля игру? Если это как игра pong, то это ж элементарно для ии

Добавлено позже:
А понял, изменение существующей игры. это поинтереснее) может через пару дней попробую если не забуду
« Последнее редактирование: 13 Июля 2026, 17:51:26 от vitsum »

Оффлайн Online

  • Пользователь
  • Сообщений: 111
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #7 : 18 Июля 2026, 15:32:26 »
Надеюсь, у вас получится, ещё есть вторая часть на этом же маппере
« Последнее редактирование: 19 Июля 2026, 02:26:48 от Беларус »

Оффлайн pipiman

  • Пользователь
  • Сообщений: 48
    • Просмотр профиля
Re: [NES] Смена маппера с помощью ИИ
« Ответ #8 : 19 Июля 2026, 19:35:39 »
Я как раз пару месяцев назад возился с этой игрой, менял маппер на MMC3, и в принципе почти доделал, но полностью не протестировал - не прошел игру до конца, так что это, так сказать, альфа версия пока :shifty: Первые два уровня идут без ошибок, и с помощью выбора уровня (есть чит) проглядел все остальные уровни, они тоже выглядят нормально, но последний босс не проверен.

Как и сказал Sharpnull пришлось увеличить CHR ROM с 128КиБ до 256КиБ, чтобы графика не поломалась. Для правильной компоновки дополнительного CHR ROM я разбирал исходники оригинала, это оказалось самое долгое и сложное (но интересное)... Еще в хаке используется WRAM, так как свободного пространства под код в последних PRG банках мало, и код при старте грузится из PRG банка 0x03 во WRAM. Исходники в ужасном состоянии, так что их не выкладываю, только сам ром :)


Оффлайн Online

  • Пользователь
  • Сообщений: 111
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #9 : 20 Июля 2026, 23:51:29 »
pipiman, в вашей версии попробуйте по адресу
03BB поставить значение 50 (можно и больше), на уровень касаний хватит
03A2 - жизни на боссах (50 ставил, тоже хватает)
может эта информация вам будет полезна для правильного теста, до 5 уровня прошёл, глюков не заметил, однако при подъёме в комнате с лифтами загрузил load state, вместо того, чтобы быстро сохраниться, в итоге оказался на втором уровне :wall:
На английский и вторую часть перевели, прикрепляю ром, её по аналогии сможете сделать?

Оффлайн pipiman

  • Пользователь
  • Сообщений: 48
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #10 : 23 Июля 2026, 03:05:46 »
Online, спасибо за инфу, но я не из-за сложности игры не могу её полностью затестить, а просто хотел на реальном железе её пройти без читов, как в старые добрые, но она у меня попала в глубокой бэклог  :wacko:
Кстати, поглядел вторую часть, выглядит реально интересно - вид сбоку/сверху, 4 героя на выбор, можно летать как настоящий Супермен. И хак на MMC3 будет, похоже, намного легче сделать, так как все возможности 32 маппера не используются (так сделано, что в игре по сути PPU окна: 4 * 1КиБ + 2 * 2КиБ, а в MMC3 как раз есть такой режим), так что думаю займусь на досуге  :)

Добавлено позже:
Сделал хак-конвертацию Perman 2 с маппера 32 на маппер 4 MMC3. Действительно, оказалось намного проще, чем с первой частью, плюс WRAM не нужен, и размер CHR не увеличен. Опять таки до конца хак не протестирован, игру полностью не проходил, но так как смен PRG/CHR банков тут немного, высока вероятность того, что всё будет работать без сбоев :thumbup: Исходник хака тоже выкладываю
« Последнее редактирование: 30 Июля 2026, 23:10:02 от pipiman »

Оффлайн Online

  • Пользователь
  • Сообщений: 111
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #11 : 30 Июля 2026, 00:51:18 »
pipiman
Здорово! Я попробую на следующей неделе пройти и первую часть тоже, но если вам раньше потребуется, то по адресу 009C находятся жизни, поставил 50, тоже можно играть, касаний много, глючит правда лайвбар :)

Оффлайн COHOL

  • Пользователь
  • Сообщений: 8
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #12 : 21 Августа 2026, 02:02:39 »
Если вы пытаетесь добиться от бесплатных нейронок вразумительного анализа и написания кода не на python или для сложной платформы - сразу говорю, бессмысленная затея.

А вот платные - это другое дело.
Мне платный ГПТ сделал патч для Grandia 3 на PS2, который делает из двух DVD один, и патчит исполняющий файл для отучения игры от проверки сейва относительно диска.
И сейчас мы с ГПТ допиливаем патч для King's Field 4 на нормальное аналоговое управление и большее количество предметов в слотах для быстрого использования.

Бесплатные нейронки просто галюцинируют. А вот платная способна делать реальную работу, особенно если точно знаешь, что нужно попросить.

Можете заценить, я создал пост об этом

Оффлайн Online

  • Пользователь
  • Сообщений: 111
    • Просмотр профиля
[NES] Смена маппера с помощью ИИ
« Ответ #13 : 21 Августа 2026, 09:25:26 »
COHOL, впечатляет, да, соглашусь, платные и бесплатные имеют разницу, наслышан,но я не знаю (рассуждаю с точки зрения человека, который мало в этом разбирается) что сложнее -ромхакинг ps2 или NES.