INES Mapper 009: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (1 revision: iNes mappers temporary list)
No edit summary
Line 1: Line 1:
[[Category:iNES Mappers]]
'''iNES Mapper 009''' represents the [[PxROM]] boards, which use the [[Nintendo MMC2]] chip.
'''iNES Mapper 009''' represents the [[PxROM]] boards, which use the [[Nintendo MMC2]] chip.
[[Category:iNES Mappers]]
 
  Here are Disch's original notes:
  ========================
  =  Mapper 009          =
  ========================
 
  aka
  --------------------------
  MMC2
  PxROM
 
 
  Example Game:
  --------------------------
  Mike Tyson's Punch Out!!
 
 
  Registers:
  ---------------------------
 
  Range,Mask:  $A000-FFFF, $F000
 
 
    $A000:      PRG Reg
    $B000:      CHR Reg 0A
    $C000:      CHR Reg 0B
    $D000:      CHR Reg 1A
    $E000:      CHR Reg 1B
    $F000:  [.... ...M]  Mirroring:
      0 = Vert
      1 = Horz
 
 
 
  PRG Setup:
  ---------------------------
        $8000  $A000  $C000  $E000 
      +-------+-------+-------+-------+
      | $A000 | { -3} | { -2} | { -1} |
      +-------+-------+-------+-------+
 
 
 
  CHR Setup:
  ---------------------------
        $0000  $0400  $0800  $0C00  $1000  $1400  $1800  $1C00
      +-------------------------------+-------------------------------+
      |        $B000 or $C000        |        $D000 or $E000        |
      +-------------------------------+-------------------------------+
 
 
  Which reg is used depends on the state of the respective latch.  See below.
 
 
  Latch:
  ---------------------------
  There are two latches on the MMC2.  One associated with the left pattern table ($0xxx) and another associated
  with right ($1xxx).  Each latch operates independently.
 
  Whenever tile $FD is fetched, the appropriate latch is cleared, and whenever tile $FE is fetched, the
  appropriate latch is set.  This allows games to do mid-scanline swapping automatically by having $FD and $FE
  be special marker tiles.
 
  When the $0xxx latch is clear, $B000 is used.  When set, $C000 is used.
  When the $1xxx latch is clear, $D000 is used.  When set, $E000 is used.
 
  The swap occurs after the tile is fetched, not before.  So if the latch is clear, and tile $FE is loaded,
  tile $FE from the first reg will be drawn to the screen, but the next tile drawn will be from the second reg.
 
  Latches can be manipulated by hand by reading from the appropriate PPU address ($0FDx, $0FEx, $1FDx, $1FEx)
  via $2007.

Revision as of 23:03, 13 November 2011


iNES Mapper 009 represents the PxROM boards, which use the Nintendo MMC2 chip.

 Here are Disch's original notes:
 ========================
 =  Mapper 009          =
 ========================
 
 aka
 --------------------------
 MMC2
 PxROM
 
 
 Example Game:
 --------------------------
 Mike Tyson's Punch Out!!
 
 
 Registers:
 ---------------------------
 
 Range,Mask:   $A000-FFFF, $F000
 
 
   $A000:      PRG Reg
   $B000:      CHR Reg 0A
   $C000:      CHR Reg 0B
   $D000:      CHR Reg 1A
   $E000:      CHR Reg 1B
   $F000:  [.... ...M]   Mirroring:
     0 = Vert
     1 = Horz
 
 
 
 PRG Setup:
 ---------------------------
        $8000   $A000   $C000   $E000  
      +-------+-------+-------+-------+
      | $A000 | { -3} | { -2} | { -1} |
      +-------+-------+-------+-------+
 
 
 
 CHR Setup:
 ---------------------------
       $0000   $0400   $0800   $0C00   $1000   $1400   $1800   $1C00 
     +-------------------------------+-------------------------------+
     |        $B000 or $C000         |        $D000 or $E000         |
     +-------------------------------+-------------------------------+
 
 
 Which reg is used depends on the state of the respective latch.  See below.
 
 
 Latch:
 ---------------------------
 There are two latches on the MMC2.  One associated with the left pattern table ($0xxx) and another associated
 with right ($1xxx).  Each latch operates independently.
 
 Whenever tile $FD is fetched, the appropriate latch is cleared, and whenever tile $FE is fetched, the
 appropriate latch is set.  This allows games to do mid-scanline swapping automatically by having $FD and $FE
 be special marker tiles.
 
 When the $0xxx latch is clear, $B000 is used.  When set, $C000 is used.
 When the $1xxx latch is clear, $D000 is used.  When set, $E000 is used.
 
 The swap occurs after the tile is fetched, not before.  So if the latch is clear, and tile $FE is loaded,
 tile $FE from the first reg will be drawn to the screen, but the next tile drawn will be from the second reg.
 
 Latches can be manipulated by hand by reading from the appropriate PPU address ($0FDx, $0FEx, $1FDx, $1FEx)
 via $2007.