4-in-1 multicart: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
mNo edit summary
(spellcheck, reformat)
Line 7: Line 7:
*PokeBlock
*PokeBlock


==CPU banks==
==Banks==
$8000-$ffff: 32 kB ROM bank (swapppable)
* CPU $8000-$ffff: 32 KiB switchable PRG ROM bank
 
* PPU $0000-$1fff: 8 KiB switchable CHR ROM bank
==PPU banks==
$0000-$1fff: 8 kB ROM bank (swappable)


==Mirroring==
==Mirroring==
Line 20: Line 18:


==Registers==
==Registers==
$8000-$ffff: PRG/CHR bank selection register
Mask: $8000


  7      0
  $8000: [..pP CCCC]
--------
          || ||||
xxPPCCCC
          || ++++- select 8kB CHR-ROM bank at $0000-$1fff
  ||||||
          ++------ select 32 kB PRG-ROM bank at $8000-$ffff
  ||++++- select 8kB CHR-ROM bank at $0000-$1fff
          +------- select mirroring (0=H, 1=V)
  ++----- select 32 kB PRG-ROM bank at $8000-$ffff
  +------ select mirroring (0=H, 1=V)


==Quirks==
==Quirks==
* Multicart register overlaps CNROM register and multicart register is not protected from writes after game is selected, so all games CHR-bank switching rougines had to be patched.
* Multicart register overlaps CNROM register and multicart register is not protected from writes after game is selected, so all games' bankswitching routines had to be patched
* The register is not initialized on startup so reset vector of all games had to be patched
* The register is not initialized on powerup or reset, so all games' reset vector had to be patched
* DIP28 1 MB mask roms are used both for PRG and CHR (pin 22, which is normally used as !OE in DIP28 EEPROMS is utilized as A16)
* DIP28 1 Mibit mask roms are used both for PRG and CHR (pin 22, which is normally used as !OE in DIP28 EEPROMS is utilized as A16)
* This is basically identical to [[GxROM]] but one bit also determines nametable mirroring as well as PRG bank

Revision as of 17:36, 13 August 2017

4-in-1 multicart

4-in-1 menu
4-in-1 top
4-in-1 bottom
4-in-1 schematic

This cartridge contains 4 CNROM games:

  • Puzzle
  • F-15 City War
  • Volley Ball
  • PokeBlock

Banks

  • CPU $8000-$ffff: 32 KiB switchable PRG ROM bank
  • PPU $0000-$1fff: 8 KiB switchable CHR ROM bank

Mirroring

H/V (selected by software)

Subject to bus conflicts

Yes

Registers

Mask: $8000

$8000: [..pP CCCC]
          || ||||
          || ++++- select 8kB CHR-ROM bank at $0000-$1fff
          ++------ select 32 kB PRG-ROM bank at $8000-$ffff
          +------- select mirroring (0=H, 1=V)

Quirks

  • Multicart register overlaps CNROM register and multicart register is not protected from writes after game is selected, so all games' bankswitching routines had to be patched
  • The register is not initialized on powerup or reset, so all games' reset vector had to be patched
  • DIP28 1 Mibit mask roms are used both for PRG and CHR (pin 22, which is normally used as !OE in DIP28 EEPROMS is utilized as A16)
  • This is basically identical to GxROM but one bit also determines nametable mirroring as well as PRG bank