SNROM

From NESdev Wiki
Revision as of 10:13, 16 October 2010 by Bregalad (talk | contribs) (Added info about the second PRG RAM disable bit)
Jump to navigationJump to search

SNROM (NES-SNROM and HVC-SNROM) is a common board within the SxROM set. Like other SxROM boards, SNROM uses the Nintendo MMC1 ASIC.

Overview

  • PRG ROM size: 128 or 256 KB
  • PRG ROM bank size: 16 KB or 32 KB
  • PRG RAM: 8 KB plus optional 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 : The pad below D2 (named 'SL' in recent revisions) disconected, and with Battery, D1, D2 and R2 present.
  • PRG RAM not retaining data : Leave slots for Battery, D1, D2 and R2 free, and the pad below D2 (also named 'SL' in recent revisions) connected.

Banks

  • CPU $6000-$7FFF: 8 KB PRG RAM bank, fixed
  • CPU $8000-$BFFF: 16 KB PRG ROM bank, either switchable or fixed to the first bank
  • CPU $C000-$FFFF: 16 KB PRG ROM bank, either fixed to the last bank or switchable
  • PPU $0000-$0FFF: 4 KB switchable CHR RAM bank
  • PPU $1000-$1FFF: 4 KB switchable CHR RAM bank

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
-----
ExxxC
|   |
|   +- Select 4 KB CHR RAM bank at PPU $0000 (ignored in 8 KB mode)
+----- PRG RAM disable (0 : PRG RAM is enabled, 1 : PRG RAM is disabled)

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

4bit0
-----
ExxxC
|   |
|   +- Select 4 KB CHR RAM bank at PPU $0000 (ignored in 8 KB mode)
+----- PRG RAM disable (0 : PRG RAM is enabled, 1 : PRG RAM is disabled)

Both the 'E' bit and the 'R' bit (in standard MMC1 registers) should be clear in order for the PRG RAM to be writable or readable. This bit is more "reliable" as it is implemented even in older boards with older MMC1's, while the 'R' bit was only introducer later.

In 4KB CHR bank mode, the E bits in both CHR bank registers must be set to the same value, or the PRG RAM will be enabled and disabled 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.

Chips and pinouts

  • PRG ROM - 2 MBits (256 kB x 8) (DIP-32)
                 ---_---
          A17 - |01   32| - +5V
          /CE - |02   31| - +5V
          A15 - |03   30| - +5V
          A12 - |04   29| - A14
          A7  - |05   28| - A13
          A6  - |06   27| - A8 
          A5  - |07   26| - A9
          A4  - |08   25| - A11
          A3  - |09   24| - A16
          A2  - |10   23| - A10
          A1  - |11   22| - /CE
          A0  - |12   21| - D7
          D0  - |13   20| - D6
          D1  - |14   19| - D5
          D2  - |15   18| - D4
         GND  - |16   17| - D3
                 -------

PRG ROMs of 1 MBit (128 kB x 8) comes in a DIP-28 packages are sit 2 rows back (only pins 3 to 30 are used). This pinout is not compatible with stantard 27C020 EPROMs, nor with standard 27C010 EPROMs, so to insert them in the board manual rewiring is needed.

  • CHR RAM - 64 KBits (8 KB x 8) : Standard 6264 pinout.
  • PRG RAM - 64 KBits (8 KB x 8) : Standard 6264 pinout.

See also