INES Mapper 164
From NESdev Wiki
Jump to navigationJump to search
These notes are not very good. There is more information to be got. Check some emulator sources and please elaborate here.
Here are Disch's original notes: ======================== = Mapper 164 = ======================== Example Game: -------------------------- Final Fantasy V Registers: --------------------------- Range,Mask: $5000-FFFF, $F300 $5000, $D000: PRG reg (32k @ $8000) $6000-7FFF may have SRAM (not sure) On Reset --------------------------- Reg seems to contain $FF on powerup/reset Notes: --------------------------- Swapping is really simple -- the thing that is funky is the register range/mask. $5000 and $D000 will access the register, however $5100, $5200, etc will not.
FCEUX implements mapper 164 as:
$5000: [.... LLLL] $5100: [.... HHHH] $5300: 8-bit latch
Writing to either $5000 or $5100 immediately switches a 32kB or 512kB chunk. Reading from $5100 or $5900 returns the value of the latch, but not $5500 or $5D00
Nestopia implements mapper 164 as:
$5000: [.ABC DLLL] $5100: [.... ...H]
Writing to either immediately switches banks. The interpretation of the address depends on ABC:
C=0: Switch 16kB at $8000, address specified by HBDLLL; 16kB at $C000 switched to H11111. A=1 C=0: undefined (noop) ABC=5: Switch 32kB at $8000, address specified by HDLLL ABC=7: Switch 16kB at $8000, address specified by HDDLLL; 16kB at $C000 switched to H11111. (Yes, D appears twice)
Note that the copy of Final Fantasy V in GoodNES does not work correctly in Nestopia. This should not be taken as an indication that Nestopia's implementation is necessarily wrong.