INES Mapper 022: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (these aren't his original notes any more)
(#REDIRECT VRC2 and VRC4)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
#REDIRECT [[VRC2 and VRC4]]
[[Category:iNES Mappers|022]][[Category:in NesCartDB|022]]
[[Category:iNES Mappers|022]][[Category:in NesCartDB|022]]
[[iNES Mapper 022]] is used to represent the VRC2a variant of the Konami [[VRC2]] mapper (PCB '''351618''').
  ========================
  =  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|
      +-------+-------+-------+-------+-------+-------+-------+-------+

Latest revision as of 20:35, 28 April 2017

Redirect to: