VT02+ MMC3 Compatibility Registers: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
NewRisingSun (talk | contribs) (Created page with "In OneBus mode, VT02+ consoles combine the Famicom cartridge connector's CPU and PPU address lines into one 32 MiB address space, with separate CPU and PPU bankswitch register...") |
m (Changed "PPU" to "CPU" for the $A000 PRG Bank) |
||
(One intermediate revision by one other user not shown) | |||
Line 12: | Line 12: | ||
4 $2014 1 KiB CHR Bank Number at PPU $1800-$1BFF | 4 $2014 1 KiB CHR Bank Number at PPU $1800-$1BFF | ||
5 $2015 1 KiB CHR Bank Number at PPU $1C00-$1FFF | 5 $2015 1 KiB CHR Bank Number at PPU $1C00-$1FFF | ||
6 $4107 8 KiB | 6 $4107 8 KiB PRG Bank Number at CPU $8000-$9FFF | ||
7 $4108 8 KiB | 7 $4108 8 KiB PRG Bank Number at CPU $A000-$BFFF | ||
$A000 $4106, only bit 0 Mirroring select | $A000 $4106, only bit 0 Mirroring select | ||
$A001 not forwarded WRAM Enable/Write Protect | $A001 not forwarded WRAM Enable/Write Protect |
Latest revision as of 06:57, 2 October 2024
In OneBus mode, VT02+ consoles combine the Famicom cartridge connector's CPU and PPU address lines into one 32 MiB address space, with separate CPU and PPU bankswitch registers pointing to appropriately-placed code and picture data. The bankswitching scheme is based on, and indeed backwards-compatible to, the Nintendo MMC3's. Backwards compatibility is realized by way of forwarding CPU writes to $8000-$FFFF to the appropriate VT02+ register. V.R. Technology's data sheets call this the "old compatible mode". Forwarding can be disabled by setting register $401B bit 3 (FWEN).
When $410B bit 3 (FWEN) is cleared, the MMC3's registers are forwarded to VT02+ registers as follows:
MMC3 register VT02+ register Meaning ------------- -------------- ------- $8000 $4105, except bit 5 MMC3 Index Register ("Pointer"), PRG A14 inversion, CHR A12 inversion $8001 reg 0 $2016 1 KiB CHR Bank Number at PPU $0000-$03FF (AND $FE) and PPU $0400-$07FF (OR $01) 1 $2017 1 KiB CHR Bank Number at PPU $0400-$07FF (AND $FE) and PPU $0800-$0FFF (OR $01) 2 $2012 1 KiB CHR Bank Number at PPU $1000-$13FF 3 $2013 1 KiB CHR Bank Number at PPU $1400-$17FF 4 $2014 1 KiB CHR Bank Number at PPU $1800-$1BFF 5 $2015 1 KiB CHR Bank Number at PPU $1C00-$1FFF 6 $4107 8 KiB PRG Bank Number at CPU $8000-$9FFF 7 $4108 8 KiB PRG Bank Number at CPU $A000-$BFFF $A000 $4106, only bit 0 Mirroring select $A001 not forwarded WRAM Enable/Write Protect $C000 $4101 IRQ Latch $C001 $4102 Reload IRQ Counter $E000 $4103 Disable/Acknowledge IRQ $E001 $4104 Enable IRQ
Notes:
- The table disregards mirrored MMC3 addresses.
- Writing a register number to the lower three bits of $4105 also decides which register is affected when writing data to $8001, as $4105 is indeed a mirror of $8000 (excluding bit 5) and vice-versa. EmuVT does not take this into account, resulting in glitches when running games such as Mighty Bomb Jack on the 100-in-1 (D-CAT8) multicart.
- The JungleTac game Bolt Fighter on the Classic Max Lite 120-in-1 multicart writes garbage data to the $8000-$FFFF range during gameplay. This would lead to inadvertent CHR bank changes, were it not for the fact that the multicart menu sets FWEN to 1 to disable forwarding.
- As the VT02+ consoles themselves have no WRAM at $6000-$7FFF, there is no register to which a $A001 write could be forwarded.