на самом деле перезагрузка игры не должна беспокоить, если это быстро происходит (1-2 сек) на сд карту сохраняю путь к последней выбраной игре, а потом без перевыбора её можно загружать - со стороны юзра выглядит точно та как на обычном флеш картридже.
так выглядит на верилоге:
rom_read = !oe & (!ce_lo | !ce_hi | dtak);
dtak <= as | addr_in[22] == 0 ? 0 : addr_in[21:20] == 2'b00;
если се_lo или ce_hi 0, значит это нижние 8 метров. если as 0, единица на а22 и a20-21 - ноли, то ставим dtak 1 и считаем что это доступ в обдась 0x800000 - 0x9fffff
без as, или ce_lo/hi, как на твоей схеме, наверно не получится декодировать адреса. если делать только 8 метров, то тут вообще просто ce_hi как чип селект использовать, и все. но думаю, ты и сам об этом знаешь.
а стрит файтер точно с мапером, и он переключает банки с помощью !time . 8 страниц по 512кило и в каждую из них (кроме нулевой) можно вставить и из десяти банков