INES Mapper 164

From NESdev Wiki
Revision as of 18:08, 14 March 2015 by PGCX864 (talk | contribs)
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 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.