INES Mapper 065: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
(https://forums.nesdev.com/viewtopic.php?p=259459#p259459) |
No edit summary |
||
Line 21: | Line 21: | ||
%0 = bank at $8000 set by writes to $8000, bank at $C000 always $3E | %0 = bank at $8000 set by writes to $8000, bank at $C000 always $3E | ||
%1 = bank at $C000 set by writes to $8000, bank at $8000 always $3E | %1 = bank at $C000 set by writes to $8000, bank at $8000 always $3E | ||
bank at $E000 always $3F | bank at $E000 always $3F | ||
$9001: [MM.. ....] Mirroring | $9001: [MM.. ....] Mirroring | ||
%00 = Vert | %00 = Vert |
Revision as of 21:36, 5 November 2020
iNES Mapper 065 refers to games that use Irem's H3001 mapper.
Example Games: -------------------------- Daiku no Gen San 2 Kaiketsu Yanchamaru 3 Spartan X 2 Registers: -------------------------- $8000: PRG Reg 0 (8k @ $8000 -or- 8k @ $C000) $A000: PRG Reg 1 (8k @ $A000) $B000-$B007: CHR regs $9000: [X... ....] PRG bank layout Very similar to VRC4 or MMC3 %0 = bank at $8000 set by writes to $8000, bank at $C000 always $3E %1 = bank at $C000 set by writes to $8000, bank at $8000 always $3E bank at $E000 always $3F $9001: [MM.. ....] Mirroring %00 = Vert %10 = Horz %01,%11 = 1scA $9003: [E... ....] IRQ Enable (0=disabled, 1=enabled) $9004: [.... ....] Reload IRQ counter $9005: [IIII IIII] High 8 bits of IRQ Reload value $9006: [IIII IIII] Low 8 bits of IRQ Reload value On Powerup: --------------------------- On powerup, it appears as though PRG regs are inited to specific values: $8000 = $00 $A000 = $01 Games do rely on this and will crash otherwise. CHR Setup: --------------------------- $0000 $0400 $0800 $0C00 $1000 $1400 $1800 $1C00 +-------+-------+-------+-------+-------+-------+-------+-------+ | $B000 | $B001 | $B002 | $B003 | $B004 | $B005 | $B006 | $B007 | +-------+-------+-------+-------+-------+-------+-------+-------+ IRQs: --------------------------- This mapper's IRQ system is very simple. There's a 16-bit internal down counter which (when enabled), decrements by 1 every CPU cycle. When the counter reaches 0, an IRQ is fired. The counter stops at 0 -- it does not wrap and isn't automatically reloaded. Any write to $9003 or $9004 will acknowledge the pending IRQ. Any write to $9004 will copy the 16-bit reload value into the counter. $9006 and $9005 set the reload value, but do not have any effect on the actual counter. Note that $9005 is the HIGH bits, not the low bits.
See also
- NES Mapper List by Disch
- Comprehensive NES Mapper Document by \Firebug\, information about mapper's initial state is inaccurate.