SXROM

From NESdev Wiki
Revision as of 14:30, 12 June 2009 by Banshaku (talk | contribs) (Created page with ''''SXROM''' (HVC-SXROM) is one of the less common boards within the SxROM subset. Like other SxROM boards, SXROM uses the Nintendo MMC1 ASIC, but because it always u...')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

SXROM (HVC-SXROM) is one of the less common boards within the SxROM subset. Like other SxROM boards, SXROM uses the Nintendo MMC1 ASIC, but because it always uses CHR RAM, it uses three spare CHR address lines to select between two 256 kb PRG ROM banks, and four 8kb PRG RAM banks letting the program access up to 512 kb of PRG ROM and 32 KB of PRG RAM at once. To keep things simple, it is in some sort a combination of SUROM and SOROM.

It should be noted that only Japanese HVC-SXROM boards have ever been produced, so this board has no 72-pin "NES-SXROM" counterpart.

Overview

  • PRG ROM size: 128, 256 or 512 KB (DIP-28/32 Nintendo pinout)
  • PRG ROM bank size: 16 KB or 32 KB
  • PRG RAM: 32 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

Solder pad config

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

Hardware

This particular board uses a 74HCU04 (hex inverter) to invert and buffer the enable signals from the MMC1, and that inverter is also battery backed just like the SRAM, so that the SRAM protection on power down is greatly improved (however, the current drawn by the battery is significantly supperior to other cartridges, so the battery may run out faster).

Registers

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

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

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

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

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

Note: In 4KB CHR bank mode, the P and S bits in both CHR bank registers must be set to the same value, or the PRG ROM/RAM will be bankswitched as the PPU renders, causing disastrous results. 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.