INES Mapper 022

From NESdev Wiki
Revision as of 20:22, 7 December 2012 by Lidnariq (talk | contribs) (explicitly point out mapper 25 too)
Jump to navigationJump to search


iNES Mapper 022 is used to represent the VRC2a variant of the Konami VRC2 mapper (PCB 351618).

 Here are Disch's original notes:  
 ========================
 =  Mapper 022          =
 =       + 023          =
 =       + 025          =
 ========================
 
 aka
 --------------------------
 VRC2
 
 
 
 Example Games:
 --------------------------
 Ganbare Pennant Race     (022)
 TwinBee 3                (022)
 Wai Wai World            (023)
 Ganbare Goemon Gaiden    (025)
 
 
 
 
 Multiple numbers, just one mapper:
 --------------------------
 These mapper numbers (022, 023) represent 2 wiring variations of the same mapper:  VRC2.  Each variation
 operates the same, only the registers used are different because their lines are reversed from each other:
 
    variant   lines     registers                       Mapper Number
    =================================================================
    VRC2a:    A1, A0    $x000, $x002, $x001, $x003      022   * divides CHR bank select by two
    VRC2b:    A0, A1    $x000, $x001, $x002, $x003      023
    VRC2c:    A1, A0    $x000, $x002, $x001, $x003      025   * does NOT divide CHR bank select by two
 
 This doc will use the 'VRC2b' registers (0,1,2,3) in all following register descriptions.  For 'VRC2a',
 simply reverse $x001 and $x002 registers.
 
 
 VRC2a CHR:
 ---------------------------
 Important note!  On VRC2a (mapper 022) only the high 7 bits of the CHR regs are used -- the low bit is
 ignored.  Therefore, you effectively have to right-shift the CHR page by 1 to get the actual page number.
 
 For example... both $06 and $07 would both indicate page $03
 
 This applies to VRC2a only.  VRC2b (mapper 023) behaves normally.
 
 
 
 VRC2 vs. VRC4:
 --------------------------
 VRC2 is strikingly similar to VRC4 (see mapper 021).  The differences are:
 
  1)  VRC4 has IRQs, VRC2 does not
  2)  VRC4 has 5 bits for PRG regs, VRC2 only has 4 bits
  3)  VRC4 has 2 PRG modes, VRC2 does not.
 
 
 Those differences aside -- they act exactly the same.
 
 
 
 Registers:
 --------------------------
 Some registers are mirrored across several addresses.  For example, writing to $8003 has the same effect as
 writing to $8000.
 
 
 $8000-$8003:  [.... PPPP]   PRG Reg 0 (select 8k @ $8000)
 $9000-$9003:  [.... ..MM]   Mirroring:
    %00 = Vert
    %01 = Horz
    %10 = 1ScA
    %11 = 1ScB
 
 $A000-$A003:  [.... PPPP]   PRG Reg 1 (select 8k @ $A000)
 $B000-$E003:  [.... CCCC]   CHR Regs (see CHR Setup)
 
 
 PRG Setup:
 --------------------------
 
       $8000   $A000   $C000   $E000  
     +-------+-------+-------+-------+
     | $8000 | $A000 | { -2} | { -1} |
     +-------+-------+-------+-------+
 
 
 
 CHR Setup:
 --------------------------
 The VRC2 only has 4 data pins for CHR Regs.  To compensate, two CHR regs are combined to form a single page
 number.  One reg contains the high 4 bits and the other reg contains the low 4 bits (allowing for 8-bit page
 numbers)
 
 Example:  $B000+$B001  select 1k CHR page @ $0000
     if   $B000=$03
     and  $B001=$01
     then use page $13 (VRC2b)
           or page $09 (VRC2a -- see notes above)
 
 
       $0000   $0400   $0800   $0C00   $1000   $1400   $1800   $1C00 
     +-------+-------+-------+-------+-------+-------+-------+-------+
     |$B000+1|$B002+3|$C000+1|$C002+3|$D000+1|$D002+3|$E000+1|$E002+3|
     +-------+-------+-------+-------+-------+-------+-------+-------+