INES Mapper 164: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (iNES category sorting)
No edit summary
Line 7: Line 7:
   ========================
   ========================
    
    
   Example Game:
   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]
  $5000: [.... LLLL]
$5100: [.... HHHH]
  $5100: [.... HHHH]
$5300: 8-bit latch
  $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]
  $5000: [.ABC DLLL]
$5100: [.... ...H]
  $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.
  C=0: Switch 16kB at $8000, address specified by HBDLLL; 16kB at $C000 switched to H11111.
A=0 C=1: undefined (noop)
  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)
 
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.