INES Mapper 164: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
m (braino) |
m (two brainos in a row!) |
||
Line 45: | Line 45: | ||
Writing to either immediately switches banks. The interpretation of the address depends on ABC: | 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. | C=0: Switch 16kB at $8000, address specified by HBDLLL; 16kB at $C000 switched to H11111. | ||
A= | A=0 C=1: undefined (noop) | ||
ABC=5: Switch 32kB at $8000, address specified by HDLLL | 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) | ABC=7: Switch 16kB at $8000, address specified by HDDLLL; 16kB at $C000 switched to H11111. (Yes, D appears twice) |
Revision as of 21:01, 19 April 2012
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=0 C=1: 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.