Пара 74HC374 одновременно хранит три регистра: банк prg игры и два банка chr. Поэтому при смене банка prg надо звать значения банков chr и при смене одно из банков chr надо знать значение prg.
Именно поэтому нужны три ячейки в памяти игры, в которые игра ничего не пишет.
Для выяснения я запускал игру с lua скриптом unused-zp.lua в терминале. И прогонял tas запись. Скрипт запоминает сколько раз игра записывает в zero page ($00-$ff) и при клику по экрану пишет данные в терминал. Как правило игры при старте очищают память и пишут нули во всю память, поэтому значений 1 пугаться не надо.
Потом запускаю питоновский скрипт и передаю адреса свободных ячеек.
./mmc2bmc.py --bank 0 --chr0 xc0 --chr1 xc1 --prg xc2 P.O.W.\ -\ Prisoners\ of\ War\ \(U\)\ \[\!\].rus.nes
Создается несколько файлов
P.O.W. - Prisoners of War (U) [!].rus.prg
P.O.W. - Prisoners of War (U) [!].rus.chr
P.O.W. - Prisoners of War (U) [!].rus.unf
prg и chr для записи в пзу, а unf для эмулятора.
Вновь записанный код содержит столько же байтов и исполняется за такое же количество такстов как и старый.
А это значит что для проверки успешности операции можно запустить tas.
74hc161 используется для хранения банков игр и мирроринга. Если собирать многоигровки, то параметр --bank также надо указывать, в зависимости от того какой по счету идет игра.
Для первой можно не указывать, у нее и так этот параметр равен нулю.
На форуме выкладывали уже разводку этой платы
https://www.emu-land.net/forum/index.php/topic,53818.msg971942.html#msg971942 . Я приложил измененную разводку под флешки и адаптированную под лут.