INES Mapper 164

From NESdev Wiki
Revision as of 21:01, 19 April 2012 by Lidnariq (talk | contribs) (two brainos in a row!)
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=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.