oh my god. MMC1 (the NES mapper used in games like Metroid, Kid Icarus, and Zelda 1/2) uses a serial bank-switching interface.
To bankswitch, you write a byte with value with bit 7 set to any address in 8000-FFFF, then write 5 times with bit 7 not set, but varying bit 0. After 5 writes, it bankswitches for you.
For the last write, bits 13 and 14 of the address select which register you're pointing at.
@foone This was all because of the pin count. It had to handle PRG and CHR address lines, and the NVRAM, and nametable mirroring, and it had to do it with 24 pins but it doesn’t really need to see the full data bus. So what do you do? Well, when /ROMSEL & /W, D7/D0 clears/loads a shift register.