FamicomBox

From NESdev Wiki
Revision as of 00:19, 17 April 2022 by Fiskbit (talk | contribs) (Small fixes. Most of the read bits are inverted and $5005W D5 does not switch to TV mode.)
Jump to navigationJump to search

The Nintendo FamicomBox (also released as the Sharp FamicomStation) is a commercial Famicom console with 16 slots, intended for use in hotels. One internal slot runs the menu software, while the 15 other slots are externally-visible and can be selected by the user through software. These slots take NES-form-factor 72-pin cartridges, but with a modified EXP pinout to support the system's unique 3198 lockout chip. In addition to free-play, play time can be purchased with coins or tracked via a pay-to-play CATV interface.

The FamicomBox hardware differs significantly from standard consoles. It adds 14 KiB of extra CPU RAM and various hardware registers controlling features such as a reset-based exception system. However, it also has significant limitations that impact its compatibility with the NES library, such as restricting cartridges to just the upper half of the address space, not connecting some of the cartridge pins, and allowing inactive cartridges to interfere with the active one.

The menu software will refuse to run any game that neither matches a checksum in the menu's game database nor has a valid-enough Nintendo header.

Physical description

The front of the FamicomBox has 3 columns of 5 cartridge slots each, with end labels visible through plastic windows. These are indexed 1-15 top to bottom, left to right. Each slot has an LED to the left. In the bottom center from left to right are a TV/GAME LED, TV/GAME button, reset button, and keyswitch that can be rotated between 6 positions. Three controllers attach through the lower left.

The front panel is closed via a tubular lock on each of the top left and top right. With the panel open, the 15 cartridge slots can be accessed. On the lower left is a board with 3 joypad ports, the third one used for the Zapper. This board also has a service button for adding credits.

An optional coin box attaches to the right side of the console. It has a 100 yen coin slot, a coin drawer secured by a tubular lock, and an LED that indicates play time and flashes when play time is low.

The left side of the console has a holder for the controllers and Zapper.

The back of the console features various ports. On the left are input and output RF ports, a switch for channel 1 or 2, and composite AV ports for video and audio. Under these is a panel covering a 50-pin expansion edge connector. To the right are a DB-15 Famicom expansion port, DB-25 expansion port, and 8-pin CATV connector. The CATV connector is used for remote billing. To the right of these are a 5V DC center-negative power input and 10 DIP switches. Further right is a power supply that plugs into the wall, outputs 5V DC center negative via an external cable, has 2 AC output plugs for other devices, and a fuse.

Cartridge compatibility

(See cartridge connector pinout)

Cartridges are selected by multiplexing certain pins by slot, but some are by column and most aren't muxed at all. This leads to significant compatibility limitations. The following signals encounter problems:

  • /IRQ: Most mappers that use /IRQ drive the pin at all times, which interferes with IRQs from any other slot.
  • M2: While /ROMSEL is muxed, M2 is not. /ROMSEL is held high for inactive slots, so cartridges that map under $8000 will see M2 and conclude based on /ROMSEL that an access is occurring with CPU A15 = 0. The CPU data lines are muxed by column, so conflicts will occur within a single column. On the active column, any such cartridges will cause a bus conflict with the active slot.
  • CPU D7..0: The CPU data lines are only passed through when /ROMSEL is asserted, so cartridges cannot map nor snoop below $8000. Games that use PRG-RAM at $6000-7FFF will still work because the console provides RAM there, but it isn't battery-backed. When disabled, it is suspected the SN74ALS245's that isolate the columns maintain the current line levels, effectively creating an open bus that does not decay.
  • PPU D7..0: The PPU data lines are only passed through when PPU /A13 is asserted, so cartridges cannot map nor snoop $2000 or above. This prevents cartridge nametable RAM or ROM. When disabled, it is suspected the SN74ALS245's that isolate the columns maintain the current line levels, effectively creating an open bus that does not decay.
  • CIRAM /CE: PPU /A13 is directly connected by the console to CIRAM /CE, so cartridges cannot disable this RAM for accesses at $2000 or above nor map CIRAM under $2000. This prevents cartridge nametable RAM or ROM and use of CIRAM as pattern table RAM.
  • PPU A12: Some cartridges place a capacitor on PPU A12, which can slow transitions enough to interfere with the active slot.
  • EXP4: This is used for CPU A15, which could cause issues for cartridges configured for an NES-001 expansion device.
  • EXP0..3, EXP5..9: These are tied to ground or +5V and can cause physical damage. Examples of susceptible cartridges include those with an opamp on EXP6 or which connect EXP0 to ground (to match the Famicom ground pin at this relative location).

CPU address space

  • $0000-1FFF: 8 KiB RAM
  • $2000-3FFF: PPU registers
  • $4000-401F: APU registers
  • $4020-4FFF: Unused
  • $5000-5FFF: FamicomBox registers
  • $6000-7FFF: 8 KiB RAM
  • $8000-FFFF: Cartridge space

The FamicomBox's CPU address space differs from that of the standard console, adding RAM and registers and reducing space for cartridge mapping. Unlike normal systems, the FamicomBox cuts cartridges off from the CPU data lines when the CPU is accessing under $8000, preventing cartridges from mapping in the unused region.

Reset

The console is reset under any of the following conditions:

  • The active slot provided incorrect CIC data, causing the host 3198 CIC to do a single reset pulse.
  • An exception occurred, resetting the host 3198 CIC. (See Exception flags ($5000R) for details)
  • The console is in TV mode. The console can be switched back to game mode, releasing it from reset, by pressing the TV/GAME button. TV mode is activated in the following ways:
    • The TV/GAME button is pressed while enabled (via $5005W D4).
    • A CATV Billing Clear pulse is received.

Clock rates

The FamicomBox uses a 21.47727 MHz system clock. All other clocks are derived from this one. These are as follows:

  • 3.579545 MHz: This divides the system clock by 3*2 and is referred to here as 3.58 MHz. It is used by the 3198 CIC and 3199 coin timer.
  • 873.9123 Hz: This divides the system clock by 3*(2^13). It is used to generate the near-end flash beep sound.
  • 6.827440 Hz: This divides the system clock by 3*(2^20) and is referred to here as 6.83 Hz. It is used by the 6.83 Hz period exception and the 8-bit timer.
  • 3.413720 Hz: This divides the system clock by 3*(2^21) and is referred to here as 3.41 Hz. It is used for the slot LED flash rate.
  • 0.8534300 Hz: This divides the system clock by 3*(2^23) and is referred to here as 0.85 Hz. It is used by the watchdog counter.

Registers

Joypad out ($4016W)

This is wired the same as in an AV Famicom, but OUT0 is not connected to joypad port 3.

Joypad 1 in ($4016R)

Mask: $FFFF

7  bit  0
---- ----
DDDD DDDD
|||| |||+- Joypad port 1 D0
|||| ||+-- 15P expand pin 13
|||| |+--- Expansion connector (P4) pin 44
|||| +---- Joypad port 1 D3
|||+------ Joypad port 1 D4
||+------- Expansion connector (P4) pin 19
|+-------- Expansion connector (P4) pin 45
+--------- Expansion connector (P4) pin 20

Note: All bits are active low.
Note: Any bit not driven by a controller reads as 0.

Because all joypad read bits are driven, games such as Paperboy that depend on open bus will not work.

Joypad 2 in ($4017R)

Mask: $FFFF

7  bit  0
---- ----
DDDD DDDD
|||| ||||
|||| |||+- Joypad port 2 D0, and 15P expand pin 8
|||| ||+-- 15P expand pin 7
|||| |+--- 15P expand pin 6
|||| +---- Joypad port 2 D3, joypad port 3 D3, and 15P expand pin 5
|||+------ Joypad port 2 D4, joypad port 3 D4, and 15P expand pin 4
||+------- Expansion connector (P4) pin 17
|+-------- Expansion connector (P4) pin 43
+--------- Expansion connector (P4) pin 18

Note: All bits are active low.
Note: Any bit not driven by a controller reads as 0.

The joypad ports 2 and 3 D3 and D4 connections can be disabled using DIP switch 10.

Exception enable ($5000W)

Mask: $F007
Power-on value: $00

7  bit  0
---- ----
VxRC KJTP
| || ||||
| || |||+- 6.83 Hz period expiration (0 = enable)
| || ||+-- 8-bit timer expiration (1 = enable)
| || |+--- Joypad button press (1 = enable)
| || +---- Keyswitch rotation (1 = enable)
| |+------ Credit transition (1 = enable)
| +------- Reset button press (1 = enable)
+--------- CATV device disconnect (1 = enable)

Note that the watchdog exception cannot be disabled.

See Exception flags ($5000R) for details on exceptions.

Exception flags ($5000R)

Mask: $F007
Power-on state: either unlatched, or latched and probably $FF

7  bit  0
---- ----
VWRC KJTP
|||| ||||
|||| |||+- 6.83 Hz period expired
|||| ||+-- 8-bit timer expired
|||| |+--- Joypad button pressed
|||| +---- Keyswitch rotated
|||+------ Credit transitioned
||+------- Reset button pressed
|+-------- Joypad watchdog triggered
+--------- CATV device disconnected

Note: All bits are active low.

When the console transitions from having 0 to 1 active exceptions (enabled exceptions with conditions met), the console is reset via the 3198 CIC (which is held in reset for 1.76 ms) and the $5000R register becomes held in the latched state, latching the current active exception state if it was unlatched. This exception behavior then cannot happen again until the number of active exceptions becomes 0 (all active exceptions become inactive either by being disabled or having their conditions no longer met). When all exceptions are inactive, reading $5000R unlatches it, but still provides the latched value on that read.

The exceptions are as follows:

  • 6.83 Hz period expiration: This ensures the internal slot is running FamicomBox-aware software. The condition is true while the 6.83 Hz clock is low. Unlike the other exceptions that can be toggled, this one is enabled at power-on and will repeatedly reset the system unless disabled.
  • 8-bit timer expiration: This is used to run a game in attract mode for a limited amount of time. The condition is true while the upper 4 bits of the $5003W timer is 0. This timer is clocked by the inverse of the 6.83 Hz clock.
  • Joypad button press: This exception is used to detect button presses for exiting attract mode. The condition is true while joypads 1 and 2 are enabled ($5005W D6), joypad 1 or 2's D0 is asserted, and that joypad hasn't been read 8 or more times since the last strobe. This can be true even if a joypad is not currently being read because it is still outputting on D0. Note that the read count applies to the joypad port, not the register, so swapping joypads ($5005W D7) will also swap the read counts.
  • Keyswitch rotation: This exception is used to detect when the keyswitch is rotated to a new position. The condition is true for 13.4 ms after moving from an invalid angle to a valid position (that is, when the state transitions from all bits 0 to any bits being 1). This can also be checked through $5007R /D1.
  • Credit transition: This exception triggers when transitioning either way between having and not having credit. This is controlled by the 3199 coin timer and is believed to be a pulse.
  • Reset button press: This is true while the reset button on the front panel is pressed. When disabled, the reset button has no effect.
  • Joypad watchdog: This exception recovers if the software has locked up. It is implemented using a 4-bit up counter that is cleared on read of either joypad. The condition is true while the counter is 15. Unlike other exceptions, this one cannot be disabled.
  • CATV device disconnection: This exception triggers if the CATV connection is lost. The condition is true while the CATV Operation On latch (CATV pin 1) is high or open, indicating a CATV device is not connected.

Payment ($5001W)

Mask: $F007

7  bit  0
---- ----
EACC CCCC
|||| ||||
|||| |||+- Coin timer (3199) R0.0
|||| ||+-- Coin timer (3199) R0.1
|||| |+--- Coin timer (3199) R0.2
|||| +---- Coin timer (3199) R0.3
|||+------ Coin timer (3199) R1.3
||+------- Coin timer (3199) R2.1
|+-------- CATV Game Active (1 = active). Inverse of CATV pin 7.
+--------- CATV Energized (1 = energized). Inverse of CATV pin 8.

Power-on value: $00
  • Coin timer R0.1-0 appear to be related to time per coin. These are set by the menu software to %01 for the 10 minute DIP switch 2 setting and %10 for the 15 minute setting.
  • CATV Energized is set by menu software only if the Zapper is detected via $5007R /D2.

LED and Memory protect ($5002W)

Mask: $F007
Reset value: $00

7  bit  0
---- ----
FMMM LLLL
|||| ||||
|||| ++++- LED select (0 = none)
|+++------ $0000-1FFF memory protect:
|             0 = $0000-1FFF read-only
|             1 = $0800-1FFF read-only
|             2 = $1000-1FFF read-only
|             3 = $1800-1FFF read-only
|           4-7 = all writable
+--------- Flash LED at 3.41 Hz (1 = enable)

This register controls the 15 LEDs adjacent to the 15 game cartridge slots. Only one can be lit at a time.

DIP switches ($5002R)

Mask: $F007

7  bit  0
---- ----
8765 4321
|||| ||||
++++-++++- Switches 8-1. Behavior is software-defined. See DIP switch settings.

8-bit timer ($5003W)

Mask: $F007
Power-on value: Probably $FF

7  bit  0
---- ----
DDDD DDDD
|||| ||||
++++-++++- Timer value

This is a down counter that decrements using the inverse of the 6.83 Hz clock. The 8-bit timer exception is triggered when the timer's upper 4 bits are 0. Because of this, the value written should be 15 more than desired. The timer should be set before enabling the exception.

Keyswitch ($5003R)

Mask: $F007

7  bit  0
---- ----
NAKK KKKK
||++-++++- Keyswitch position
|+-------- Coin timer (3199) ACT
+--------- Coin timer (3199) NE
  • The keyswitch has 6 positions, each corresponding to one bit in this register. A bit returns 1 if the keyswitch is in that position. All bits are 0 while the keyswitch is rotated between positions. The behavior triggered by each position is software-defined.
  • NE is not used by contemporary menu software.

Slot select ($5004W)

Mask: $F007
Reset value: $00

7  bit  0
---- ----
xRCC SSSS
 ||| ||||
 ||| ++++- Slot select
 |++------ Column select
 |          0: Slot 0
 |          1: Slots 1-5
 |          2: Slots 6-10
 |          3: Slots 11-15
 +-------- Unmap $5000-5FFF registers
  • The slot select and column select control multiplexing of certain cartridge connector pins. See cartridge connector for details.
  • The unmap feature disables all of the register enables, but does not disable the /$5000-5FFF signal on expansion connector (P4) pin 40.

25P expand read ($5004R)

Mask: $F007
Power-on value: Unknown

7  bit  0
---- ----
DDDD DDDD
|||| ||||
|||| |||+- DB-25 pin 2
|||| ||+-- DB-25 pin 15
|||| |+--- DB-25 pin 3
|||| +---- DB-25 pin 16
|||+------ DB-25 pin 4
||+------- DB-25 pin 17
|+-------- DB-25 pin 5
+--------- DB-25 pin 18

Note: All bits inverted

Miscellaneous output ($5005W)

Mask: $F007
Reset value: $00

7  bit  0
---- ----
SJOx DZCB
|||  ||||
|||  |||+- Set billing relay to authorized (1 = set)
|||  ||+-- Coin timer reset (1 = reset)
|||  |+--- Enable joypad port 3 (1 = enable)
|||  +---- Enable 40% dimming of screen during near-end flash (1 = enable)
||+------- $5007R /D7 and expansion connector (P4) pin 23
|+-------- Enable joypads 1 and 2 (1 = enable)
+--------- Swap joypads 1 and 2 (1 = swap)
  • The billing relay controls the output of the Billing Authorized latch on CATV connector pin 3. Billing can only be authorized by software and can only be revoked by the Billing Clear input on CATV connector pin 6.
  • The coin timer will be held in reset as long as coin timer reset is 1.
  • The joypad port 3 enable controls the port's ground line. When disabled, it is cut off from ground and instead weakly pulled down. In this state, a controller will pull the line high, and so the presence of that controller can be detected via $5007R D2.
  • 40% dimming of the screen is a feature provided by the RF modulator and controlled by the 3199 coin timer. If it is disabled here, the coin timer cannot use it. This effect has been measured as dimming the screen by about 45%.
  • When joypads 1 and 2 are disabled, the joypads can no longer receive joypad /OE or send D0. They still receive OUT0.
  • Swapping joypads 1 and 2 swaps joypad /OE and D0 between joypads. It is used by the menu software to allow the controller that selected the game to be joypad 1.

Expansion input register ($5005R)

Mask: $F007

7  bit  0
---- ----
DDDD DDDD
++++-++++- Open bus

The enable for this register is outputted over expansion connector (P4) pin 28. A response can be sent over the CPU data lines on the same connector.

25P expand output register ($5006W)

Mask: $F007
Power-on value: Probably $FF

7  bit  0
---- ----
DDDD DDDD
|||| ||||
|||| |||+- 25P expand pin 6
|||| ||+-- 25P expand pin 15
|||| |+--- 25P expand pin 7
|||| +---- 25P expand pin 16
|||+------ 25P expand pin 8
||+------- 25P expand pin 17
|+-------- 25P expand pin 9
+--------- 25P expand pin 18

Expansion input register ($5006R)

Mask: $F007

7  bit  0
---- ----
DDDD DDDD
++++-++++- Open bus

The enable for this register is outputted over expansion connector (P4) pin 27. A response can be sent over the CPU data lines on the same connector.

Expansion output register ($5007W)

Mask: $F007

Unimplemented

The enable for this register is outputted over expansion connector (P4) pin 2. The data is sent over the CPU data lines on the same connector.

Miscellaneous input ($5007R)

Mask: $F007

7  bit  0
---- ----
IEBC EZKT
|||| |||+- TV mode latch (0 = game, 1 = TV). Cleared on read.
|||| ||+-- Keyswitch rotated (0 = true)
|||| |+--- Joypad port 3 ground value (1 = device present)
|||| +---- Inverse of expansion connector (P4) pin 21
|||+------ CATV device connected (1 = connected). Inverse of CATV pin 1, Operation On latch.
||+------- Billing relay state (0 = authorized)
|+-------- Inverse of expansion connector (P4) pin 22
+--------- $5005W /D5
  • The TV mode latch is set when entering TV mode and can be used by the software to detect that a reset was caused by TV mode.
  • Keyswitch rotated will show as 0 for 13.4 ms after the keyswitch enters a position (keyswitch position transitioned from all bits 0 to any bits being 1). This is the same state used as the condition for the keyswitch rotation exception, just inverted.
  • When joypad port 3 is enabled, its ground pin is connected to ground through a transistor, which makes this ground value read as 0. When it's disabled, the ground pin is instead weakly pulled down through a 100k ohm resistor. The Zapper has a pullup effect on its ground pin of about 10k ohms, so if the port's ground is disabled and the Zapper is plugged in, then the ground will be pulled high and the ground value will read as 1. If the Zapper is not plugged in, it will read as 0 because of the pulldown. After disabling the ground, it takes over 1 frame for the line to be pulled high, so software should wait at least 2 frames before testing.

DIP switch settings

Software settings

  • 1: Operation mode (0 = game, 1 = self check)
  • 2: Play time per coin (0 = 10 minutes, 1 = 15 minutes)
  • 3: Unused
  • 4: FamicomBox title screen attract time (0 = 6 seconds, 1 = 11 seconds)
  • 5: Game demo time
  • 6: Game demo time
  • 7: Billing mode
  • 8: Billing mode
SW6 SW5 Game demo time Timer value
0 0 10 seconds $54
0 1 15 seconds $77
1 0 20 seconds $9A
1 1 5 seconds $31
SW8 SW7 Billing mode
0 0 Key
0 1 CATV
1 0 Coin
1 1 Free play

Hardware settings

  • 9: Disable near-end flash beeping (1 = disable). (P6 pin 1)
  • 10: Disable joypad 2 D3 and D4 on joypad ports 2 and 3 (1 = disable). This disables the Zapper input. (P6 pin 36)

Pinouts (external)

Cartridge connector

   FamicomBox  |   Cart    |  FamicomBox
                -----------
        +5V -- |36       72| -- GND
   CIC toMB <- |35       71| <- CIC CLK (3.58 MHz)
  CIC toPak -> |34       70| <- CIC +RST
     PPU D3 <> |33 C   C 69| <> PPU D4
     PPU D2 <> |32 C   C 68| <> PPU D5
     PPU D1 <> |31 C   C 67| <> PPU D6
     PPU D0 <> |30 C   C 66| <> PPU D7
     PPU A0 -> |29     S 65| <- PPU A13
     PPU A1 -> |28       64| <- PPU A12
     PPU A2 -> |27       63| <- PPU A10
     PPU A3 -> |26       62| <- PPU A11
     PPU A4 -> |25       61| <- PPU A9
     PPU A5 -> |24       60| <- PPU A8
     PPU A6 -> |23       59| <- PPU A7
  CIRAM A10 <- |22 S     58| <- NC
    PPU /RD -> |21       57| -> NC
    CPU A15 -> |20       56| <- PPU /WR
/SlotIndex3 -> |19       55| -- GND
/SlotIndex2 -> |18       54| -- GND
/SlotIndex1 -> |17       53| -- GND
/SlotIndex0 -> |16       52| -- +5V
       /IRQ <- |15       51| -- +5V
    CPU R/W -> |14     S 50| <- /ROMSEL (/A15 + /M2)
     CPU A0 -> |13     C 49| <> CPU D0
     CPU A1 -> |12     C 48| <> CPU D1
     CPU A2 -> |11     C 47| <> CPU D2
     CPU A3 -> |10     C 46| <> CPU D3
     CPU A4 -> |09     C 45| <> CPU D4
     CPU A5 -> |08     C 44| <> CPU D5
     CPU A6 -> |07     C 43| <> CPU D6
     CPU A7 -> |06     C 42| <> CPU D7
     CPU A8 -> |05       41| <- CPU A14
     CPU A9 -> |04       40| <- CPU A13
    CPU A10 -> |03       39| <- CPU A12
    CPU A11 -> |02       38| <- M2
        GND -- |01       37| <- NC
                -----------

Notes:

  • Signals marked in bold differ compared to a standard console.
  • Signals marked with S are multiplexed and only sent to the selected slot. (See Slot select ($5004W))
  • Signals marked with C are multiplexed and only sent to the selected column. (See Slot select ($5004W))
    • Column-muxed CPU lines are only enabled when /ROMSEL is asserted.
    • Column-muxed PPU lines are only enabled when /PA13 is asserted.
  • All non-multiplexed signals are sent to all 16 cartridge slots.
  • The FamicomBox leaves system clock (pin 37), CIRAM /CE (pin 57), and PPU /A13 (pin 58) not connected.

Signal descriptions:

  • /SlotIndex3..0: These are fixed to +5V or GND to produce an index matching the ones used in register $5004W. /SlotIndex0 on slot 2 and /SlotIndex1 on slot 4 are floating instead of grounded.

CATV interface connector

  8| -> Energized
  7| -> Game Active
  6| <- Billing Clear
  5| -> +5v (not used)
+-4| <- GND
| 3| -> Billing Authorized latch
| 2| <- +6.3v
+-1| <- Operation On latch

All signals active low.

Pins 1 and 4 are jumpered together so that the input ground will also drive Operation On low, which is used by the FamicomBox hardware and software to detect a connection to a CATV device.

15P expand

This is a Famicom expansion port.

25P expand

               /\
              |   \
       +5V -- | 01  \
              |   14 | ?? /IRQ
$5004R /D0 <- | 02   |
              |   15 | -> $5004R /D1
$5004R /D2 <- | 03   |
              |   16 | -> $5004R /D3
$5004R /D4 <- | 04   |
              |   17 | -> $5004R /D5
$5004R /D6 <- | 05   |
              |   18 | -> $5004R /D7
 $5006W D0 -> | 06   |
              |   19 | <- $5006W D1
 $5006W D2 -> | 07   |
              |   20 | <- $5006W D3
 $5006W D4 -> | 08   |
              |   21 | <- $5006W D5
 $5006W D6 -> | 09   |
              |   22 | <- $5006W D7
       GND -- | 10   |
              |   23 | -- GND
       GND -- | 11   |
              |   24 | -> M2
       GND -- | 12   |
              |   25 | -- GND
       GND -- | 13  /
              |   /
               \/

Expansion connector (P4)

                   | FCBox |
                    -------
            +5V -- |01   26| -> $5007W /enable
            +5V -- |02   27| -> $5006R /OE
            +5V -- |03   28| -> $5005R /OE
             M2 <- |04   29| -- +5V
audio mix input -> |05   30| -- +5V
            +5V -- |06   31| -- +5V
         CPU A6 <- |07   32| -> CPU A7
         CPU A4 <- |08   33| -> CPU A5
         CPU A2 <- |09   34| -> CPU A3
         CPU A0 <- |10   35| -> CPU A1
         CPU D1 <> |11   36| <> CPU D0
         CPU D3 <> |12   37| <> CPU D2
         CPU D5 <> |13   38| <> CPU D4
         CPU D7 <> |14   39| <> CPU D6
        CPU R/W <- |15   40| -> /$5000-5FFF
CPU audio out 1 <- |16   41| ?? /IRQ
    joypad 2 D5 -> |17   42| -> CPU audio out 2
    joypad 2 D7 -> |18   43| <- joypad 2 D6
    joypad 1 D5 -> |19   44| <- joypad 1 D2
    joypad 1 D7 -> |20   45| <- joypad 1 D6
     $5007R /D3 -> |21   46| -- GND
     $5007R /D6 -> |22   47| -- GND
      $5005W D5 <- |23   48| -- GND
            GND -- |24   49| -- GND
            GND -- |25   50| -- GND
                    -------

Joypad port 1 (FP-2)

                 -
         GND -- |1 \
joypad 1 /OE <- |2 5| -- +5V
        OUT0 <- |3 6| -- joypad 1 D3
 joypad 1 D0 -> |4 7| -- joypad 1 D4
                 ---

Joypad port 2 (FP-3)

                 -
         GND -- |1 \
joypad 2 /OE <- |2 5| -- +5V
        OUT0 <- |3 6| -- joypad 2 D3
 joypad 2 D0 -> |4 7| -- joypad 2 D4
                 ---

Joypad port 3 (FP-4)

                      -
joypad port 3 GND -- |1 \
               NC -- |2 5| -- +5V
             OUT0 <- |3 6| -- joypad 2 D3
               NC -- |4 7| -- joypad 2 D4
                      ---
  • This port is intended for use with the Zapper.
  • Joypad port 3 GND is the ground signal controlled by $5005W D2. When this is disabled, it instead has a weak pulldown, and the line is expected to be pulled up by the attached controller.

Coin box connector (FP-7)

1 <- /COIN
2 -- GND
3 -> LED

A service button on the SSS-REL joypad board can also drive /COIN low.

Signal descriptions:

  • LED: This is controlled by the 3199 coin timer's /NEF and /ACT outputs. If /ACT is 1, then LED is /NEF, and otherwise, LED is 0.

Pinouts (internal)

3198A CIC lockout

                    -------------------
       Data out <- | 1  R0.0    VDD 16 | -- +5V
        Data in -> | 2  R0.1   R2.2 15 | <- Slot select D3 ($5004W D3)
           Seed -> | 3  R0.2   R2.1 14 | <- Slot select D2 ($5004W D2)
     Host/Guest -> | 4  R0.3   R2.0 13 | -- NC
             NC -- | 5  R3.3   R1.3 12 | <- Slot select D1 ($5004W D1)
/3.58 MHz clock -> | 6  CL1    R1.2 11 | <- Slot select D0 ($5004W D0)
Exception reset -> | 7  ACL    R1.1 10 | -> Guest CIC reset
            GND -- | 8  GND    R1.0  9 | -> /Host reset
                    -------------------
  • When the 3198 triggers a host reset, it does so just once, allowing the menu software to regain control of the system and skip over any slot that may have triggered the reset.
  • On guest CICs, the slot select D3..0 inputs use SlotIndex3..0.

3199A coin timer

                            -------------------
        TS0 ($5001W D0) -> | 1  R0.0    VDD 16 | -- +5V
        TS1 ($5001W D1) -> | 2  R0.1   R2.2 15 | <- /COIN (/coin switch)
        TS2 ($5001W D2) -> | 3  R0.2   R2.1 14 | <- CH ($5001W D5)
        CC0 ($5001W D3) -> | 4  R0.3   R2.0 13 | -> /NEF (/near-end flash)
ACTE (active exception) <- | 5  R3.3   R1.3 12 | <- CC1 ($5001W D4)
        /3.58 MHz clock -> | 6  CL1    R1.2 11 | <- NMI/2
            POC (reset) -> | 7  ACL    R1.1 10 | -> /NE (/near end)
                    GND -- | 8  GND    R1.0  9 | -> /ACT (/active)
                            -------------------

Signal descriptions:

  • ACTE: This controls the credit transition exception. It is believed to be a pulse when switching either way between having and not having credit.
  • /ACT: This indicates the coin timer is active (has play time credit). The menu software uses this to know there is credit.
  • NMI/2: This alternates every NMI. It appears to control the /NEF timing.
  • /NEF: This controls the low-time beeping, screen dimming, and coin-box LED flashing.

Schematic errata

  • P7 should be a 26-pin connector, not a 40-pin connector. All of the signals shown on the 40-pin version are still present, but numbering and naming differ slightly.
  • P4 pin 10 should be labeled A0.
  • FP-1 pin 1 should be labeled GND.
  • The 4040 12-bit counter for dividing the clock should have a tap on Q9, producing a 0.85 Hz clock. The watchdog should be clocked by this.
  • For the PA13 signal coming out of the ALS541 by the PPU, /PA13 goes to the TM2215 CIRAM as pictured, but the signal to the LS139 and ALS138's should be PA13 (does not go through the inverter).
  • Instead of $5005W D4 controlling P7 pin 6 (TV/GAME switch enable), $5005W D4 should be not connected and the switch enable should be tied to +5V on the main board.
  • Instead of $5005W D5 acting as a TV mode enable by connecting to the TV/GAME mode SR latch, it should instead connect to $5007R /D7 and expansion connector (P4) pin 23. This makes pin 23 an output.

Hardware configurations

  • Main board:
    • SSS-CPU-03
      • The PCB traces are wired so that the joypad button press exception's two 4021 shift registers, which implement the read counts, are each used for the wrong joypad. This was fixed at the factory by cutting the joypad /OE traces between the HC257 muxer and shift registers and adding wires to swap the connections.
    • SSS-CPU-04
  • Chipsets:
    • RP2A03E / RP2C02E-0
    • RP2A03G / RP2C02G-0