Судя по фоткам. Заведены сигналы VA[21:1], VD[15:0], nCAS0, nCE0 и nLWR, адреса A[23:22] не заведены, отсюда выводы:
1. Только 4мб.
2. Записывается прям во FLASH память.
3. Записываться может как в режиме 16bit, так и 8Bit.
4. На эмуле глючит, потому что эмуль не умеет эмулировать (простите за каламбур) FLASH память.
Разбираем ром.
Видим что вначале вычитывается CFI (Common Flash Memory Interface).
Вот с этого адреса вызывается CFI:
0xe0ff001e (тут и далее имеется ввиду M68K PROCESSOR COUNTER, после вызова CFI у нас FLASH "исчезает" из области памяти и везде данные CFI, поэтому подобные операции делаются только из рабочей памяти консоли):
[0x55*2 + 1] = 0x98 (входим в CFI).
0xe0ff0028 - Read From (читает младшими битам данных, а у 68k это нечетный адрес, выписал адреса: 0x21, 0x23, 0x25, 0x27, 0x29, 0x2b, , 0x2d, 2f, 0x31, 0x33, 0x35, 0x37, 0x39, 0x3b, 0x3d, 0x3f, 0x41, 0x43, 0x45, 0x47, 0x49, 0x4b, 0x4d, 0x4f, 0x51, 0x53, 0x55, 0x57, 0x59, 0x5b, 0x5d, 0x5f, 0x61, 0x63, 0x65, 0x67, 0x69, 0x6b, 0x6d, 0x6f, 0x71, 0x73, 0x75, 0x77, 0x79, то есть вычитывается вся область CFI)
0xe0ff0038 - [0x01] = 0xF0 выходим из CFI, после этой команды можно уже выполнять код с FLASH.
Алгоритм проверки ждет от CFI что там будет написано, - “QRY”, и главное FLASH = 64MBit (так что нужна именно S29GL064N, S29GL032N не подойдет как и S29GL128N и так далее). Так же вычитываются данные об алгоритмах стирания и проверяется наличие в самом верху адресов блоков по 8килобайт (можно открыть документашку на S29GL064N и увидеть какие именно байты ждет от нас алгоритм проверки, тут не буду выписывать, портянка до пола получится).
Всё, с защитой закончили.
Как происходит сохранение:При сохранениях, вначале трется сектор стандартной командой JDEC, - Sector Erase.
Причем трет адресом по середине сектора в побайтном режиме, а именно:
0x3ff001 - Erase sector, ага ток сектор весь стирается, начиная с 0x3F0000 (и да, так как нога nWE FLASH'ки соединена напрямую с nLWR, то флешь одинаково хорошо реагирует на правильные команды как размером WORD так и размером BYTE по младшим битам данных, то есть по нечетным адресам, поэтому в CFI на старте вполне норм заходит в побайтном режиме).
Затем по WORD'ам (чё не по байтам то

) пишет сохраненку, тоже начиная с середины сектора, причем проверяет не состояние машины статуса, а прям ворд читает и сравнивает с исходным значением.
В общем оно бы работало нормально, если эмуль на котором вы запускаете мог эмулировать поведение S29GL064N.Чтоб без "вранья", есть эмулятор повторяющий поведение InviteDRIVE v4 MAX.
На нем работает.
Скачиваем, распаковываем, запускаем "run.cmd" (управление только с клавиатуры, но тут цель указать на верность сделанных выводов, да и вообще он в основном для отладки, так что не обессудьте: A = "A", S = "B", D = "C", F = "START", TAB = RESET).
Теперь разрешите откланяться, удачного Вам дня!
P.S.
Судя по документации у S29GL064N (Models 06, 07, V6, V7 only) в корпусе TSOP-48 только 32 мегабита памяти на борту, так как на 13 пин выведен "ACC", в других ревизиях там "A21". Полностью для определенности напишите маркировку чипа пожалуйста.