I'm considering making a game using an MMC3-class mapper, but I need its PRG ROM to be bigger than 524288 bytes. Is there an advantage of the Namco 175/340 over a Konami VRC7 without audio?
In this topic, watcher and lidnariq posted bolt-on circuits that extend MMC3 PRG banking from 64 banks to 256. I proposed adopting this as the oversize interpretation of MMC3. But lidnariq is trying to talk me out of it, instead recommending "something shaped like Namco's 340 plus MMC3 IRQs". Then I got to thinking. A full MMC3 needs two 72-cell Xilinx CPLDs. (A cell roughly represents one bit of state or one multiplexed output.) Posts by Paul of Infinite NES Lives here and on his website hint that Xilinx has discontinued 5.0 V CPLDs, but with level shifters to run the board at 3.3 V, 256-cell Lattice CPLDs become practical, as do larger memories.
I found another similarly shaped mapper: the VRC7. What are its pros and cons compared to Namco 129, 163, 175, and 340? They both have the advantage over Sunsoft FME-7 that separate addresses for the bank registers are more interrupt-safe than an address/data pair, at the cost of two more input pins to select a mapper port (A12 and either A11, A4, or A3).
These are the biggest problems I can see with VRC7 compared to its alternatives:
Yes, I'd be changing the VRC7, but I imagine that the changes are small enough to allow a build-time option for VRC7 or the homebrew variant, at least for testing a subset of a game's functionality in any emulator or flash cart that can run Tiny Toon Adventures 2.
Or should I go with MMC3/AX5202P and a second circuit to switch the outer bank?
EDIT: Corrected credits for extended MMC3
In this topic, watcher and lidnariq posted bolt-on circuits that extend MMC3 PRG banking from 64 banks to 256. I proposed adopting this as the oversize interpretation of MMC3. But lidnariq is trying to talk me out of it, instead recommending "something shaped like Namco's 340 plus MMC3 IRQs". Then I got to thinking. A full MMC3 needs two 72-cell Xilinx CPLDs. (A cell roughly represents one bit of state or one multiplexed output.) Posts by Paul of Infinite NES Lives here and on his website hint that Xilinx has discontinued 5.0 V CPLDs, but with level shifters to run the board at 3.3 V, 256-cell Lattice CPLDs become practical, as do larger memories.
I found another similarly shaped mapper: the VRC7. What are its pros and cons compared to Namco 129, 163, 175, and 340? They both have the advantage over Sunsoft FME-7 that separate addresses for the bank registers are more interrupt-safe than an address/data pair, at the cost of two more input pins to select a mapper port (A12 and either A11, A4, or A3).
These are the biggest problems I can see with VRC7 compared to its alternatives:
- Programmable interval timer
Like MMC3's timer, VRC7's is a scanline-scaled timer with a reload value. This is more convenient for multiple splits than the M2-clocked up counter of the 129/163 and FME-7. The way it detects scanlines (dividing M2 by 341/3) isn't friendly to an authentic PAL NES or overclocked Hi-Def NES, but that's easy to fix by creating a mapper variant whose timer is instead clocked by a third consecutive PPU /RD fall with PA13 low. - WRAM control
Some games need more than the 2 KiB of work RAM inside the NES, and the design precludes either blanking the screen or delaying both game logic and video memory updates by a frame in order to read or write oversize CHR RAM. And with SRAMs smaller than 32 KiB hard to find nowadays, it's a waste not to make $6000-$7FFF bankable. FME-7 can bankswitch WRAM at $6000-$7FFF. VRC7 can't, but that's easy to fix by replacing the audio address register, which is already near the other PRG bank registers, with a WRAM bank register.
Yes, I'd be changing the VRC7, but I imagine that the changes are small enough to allow a build-time option for VRC7 or the homebrew variant, at least for testing a subset of a game's functionality in any emulator or flash cart that can run Tiny Toon Adventures 2.
Or should I go with MMC3/AX5202P and a second circuit to switch the outer bank?
EDIT: Corrected credits for extended MMC3