INES Mapper 022: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
m (these aren't his original notes any more) |
(expand differences list) |
||
Line 58: | Line 58: | ||
2) VRC4 has 5 bits for PRG regs, VRC2 only has 4 bits | 2) VRC4 has 5 bits for PRG regs, VRC2 only has 4 bits | ||
3) VRC4 has 2 PRG modes, VRC2 does not. | 3) VRC4 has 2 PRG modes, VRC2 does not. | ||
4) VRC4 has 9 bit CHR banks, VRC2 only has 8 | |||
5) VRC4 internally supports external RAM, VRC2 does not | |||
Revision as of 18:23, 18 April 2013
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. 4) VRC4 has 9 bit CHR banks, VRC2 only has 8 5) VRC4 internally supports external RAM, 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| +-------+-------+-------+-------+-------+-------+-------+-------+