INES Mapper 072
From NESdev Wiki
Jump to navigationJump to search
Some speculation on what may be going on here: Images of the PCB show 3 chips with 4 bits of registers each (a counter and two latches) as well as some OR gates. That isn't enough memory for the CHR+PRG regs, as well as a latched value, as well as a latched command. So, here is another theory whose behaviour could be verified, if anyone cared.
When the top 2 bits of value are 0, then the low 4 bits are written to the register specified by the latch (%10 for PRG and %01 for CHR) When the top 2 bits of value aren't 0, they are written to the latch
This explains why the games tend to keep the requested bank in the bottom nybble in the second write, instead of just sending the command. It doesn't explain why the games go to any effort to put the bank's nybble in the first byte.
Note that Pinball Quest will require bus conflicts to be emulated if this mapper is emulated this way.
Here are Disch's original notes: ======================== = Mapper 072 = ======================== Example Games: -------------------------- Pinball Quest (J) Moero!! Pro Tennis Moero!! Juudou Warriors Registers (**BUS CONFLICTS**): --------------------------- $8000-FFFF: [MM.. PPPP] P = Page number M = Command Notes: --------------------------- Page numbers seem to pass through a latch. Rather than writing to the regs directly, you write the desired page number and command to the latch, then send another command that copies the latch to the appropriate internal register. Commands: %00 = Copy latch to appropriate reg %01 = Set CHR Page %10 = Set PRG page %11 = Nothing/invalid Example: If a game wanted to select CHR page 3, it would first write $43, then $03. Presumably, the $43 fills the latch, then the $03 looks at the latch, sees that it wants to set the CHR page, then copies the page number to the CHR reg (actually performing the swap). No idea if that's really how it works or not, but emulating it that way seems to work. CHR Setup: --------------------------- $0000 $0400 $0800 $0C00 $1000 $1400 $1800 $1C00 +---------------------------------------------------------------+ | CHR Reg | +---------------------------------------------------------------+ PRG Setup: --------------------------- $8000 $A000 $C000 $E000 +---------------+---------------+ | PRG Reg | { -1} | +---------------+---------------+