SUROM

From NESdev Wiki
Revision as of 10:00, 16 October 2010 by Bregalad (talk | contribs) (→‎Registers: refernce to MMC3's scanline counter)
Jump to navigationJump to search

SUROM (NES-SUROM and HVC-SUROM) is one of the less common boards within the SxROM subset. Like other SxROM boards, SUROM uses the Nintendo MMC1 ASIC, but because it always uses CHR RAM, it uses a spare CHR address line to control a PRG address bit, letting the program switch entire 256 KB banks (including the normally "fixed" bank). The normal PRG and control bits control only switching within a 256 KB bank.

Overview

  • PRG ROM size: 512 KB (DIP-32 Nintendo pinout)
  • PRG ROM bank size: 16 KB or 32 KB (inner); 256 KB (outer)
  • PRG RAM: 8 KB + battery
  • CHR capacity: 8 KB RAM
  • CHR bank size: 8 KB or 4 KB
  • Nametable mirroring: Controlled by mapper
  • Subject to bus conflicts: No

Banks

Some modes of the MMC1 use a fixed PRG bank. However, in SUROM, the fixed bank is the first or last 16 KB of the currently selected 256 KB outer bank.

Solder pad config

  • PRG RAM retaining data : 'SL' disconnected, Battery, D1, D2 and R2 present.
  • PRG RAM not retaining data : 'SL' connected, leave slots for Battery, D1, D2 and R2 free.

Registers

The behavior of this board differs from that of a typical MMC1 board in the use of the upper CHR address line:

CHR bank 0 (internal, $A000-$BFFF)

4bit0
-----
PxxxC
|   |
|   +- Select 4 KB CHR RAM bank at PPU $0000 (ignored in 8 KB mode)
+----- Select 256 KB PRG bank

CHR bank 1 (internal, $C000-$DFFF)

4bit0
-----
PxxxC
|   |
|   +- Select 4 KB CHR RAM bank at PPU $1000 (ignored in 8 KB mode)
+----- Select 256 KB PRG bank (ignored in 8 KB mode)

Note: In 4KB CHR bank mode, the P bits in both CHR bank registers must be set to the same value, or the PRG ROM will be bankswitched as the PPU renders, in a similar fashion as MMC3's scanline counter. As there is not much of a reason to use 4 KB bankswitching with CHR RAM, it is wise for programs to just set 8 KB bankswitching mode in the Control register.

Variants

In theory, wiring up more CHR bank bits to PRG address lines would allow a cart to use up to 4096 KB of PRG ROM, or possibly 1024 to 2048 KB of PRG ROM with a larger CHR RAM. But because of mask ROM prices during the NES's commercial life, no official game did this, not even Dragon Warrior. Any 1 MB dumps of Dragon Warrior III or Dragon Warrior IV floating around are overdumps created before SUROM was fully understood.