INES Mapper 164: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
Rainwarrior (talk | contribs) m (iNES category sorting) |
No edit summary |
||
Line 7: | Line 7: | ||
======================== | ======================== | ||
Example | Example Games: | ||
-------------------------- | -------------------------- | ||
Final Fantasy V | Final Fantasy V | ||
Pokémon Red [宠物红](Waixing) | |||
Line 33: | Line 33: | ||
Swapping is really simple -- the thing that is funky is the register range/mask. $5000 and $D000 will access | 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. | the register, however $5100, $5200, etc will not. | ||
FCEUX implements mapper 164 as: | 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. | 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 | Reading from $5100 or $5900 returns the value of the latch, but not $5500 or $5D00 | ||
Nestopia implements mapper 164 as: | Nestopia implements mapper 164 as: | ||
$5000: [.ABC DLLL] | |||
$5100: [.... ...H] | |||
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. | |||
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. | 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. |
Revision as of 18:08, 14 March 2015
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 Games: -------------------------- Final Fantasy V Pokémon Red [宠物红](Waixing) 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.