FamicomBox
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.
The FamicomBox power supply frequently fails with high-voltage output, which can cause significant system-wide damage. It is strongly recommended that original power supplies be replaced with modern ones that support 100-240V input. |
Because of the FamicomBox's different EXP pinout, inserting standard NES cartridges or Famicom adapters that use EXP pins into an unmodified FamicomBox may cause damage to the cartridge or console by shorting to 5V or ground. |
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 (illuminated in game mode), 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 (despite it being intended to be open collector/drain), which interferes with IRQs from any other slot.
- M2: Unlike /ROMSEL, M2 is not muxed. Cartridges that map under $8000 determine the value of CPU A15 using /ROMSEL and M2. Because /ROMSEL is held high for inactive slots, these cartridges will see any CPU access to $8000-FFFF as an access to $0000-7FFF, which may cause unintended mapper register or PRG-RAM accesses. For reads, this can cause bus conflicts with other slots. The CPU data lines are muxed by column, so conflicts will occur within a single column. On the active column, any such cartridges can cause bus conflicts with the active slot, corrupting the value seen by the CPU. These unintended accesses will also occur when explicitly accessing addresses under $8000, but because columns are isolated from the CPU data lines during such accesses, the cartridges cannot see nor influence the value on the CPU side.
- 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 and any stateful RAM on the cartridge will be corrupted by writes (see M2 above). 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.
- PPU /A13: This pin is not connected on the FamicomBox. While it's normally only used for controlling CIRAM /CE, both MMC5 and Sunsoft 4 mappers take PPU /A13 as an input instead of PPU A13.
- 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.
- 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 (left = 0, right = 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%" screen brightness (0 = enable) ||+------- $5007R /D7 and expansion connector (P4) pin 23 |+-------- Disable joypads 1 and 2 (1 = disable) +--------- Swap joypads 1 and 2 (1 = swap)
- The billing relay controls the output of the Billing Authorized latch on CATV connector pin 3. This should be set for at least 75 ms to reliably set the relay. 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% brightness is a feature provided by the RF modulator. It is also enabled by the 3199 coin timer during near-end flash to indicate low time. This effect has been measured as reducing screen brightness to 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
Switches are 0 to the left and 1 to the right.
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.
15P expand (RP-1)
This is a Famicom expansion port. The SOUND output is 'audio to RF', with everything already mixed in.
25P expand (RP-2)
SSS-Interface DB-25 /\ | \ +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 / | / \/
CATV interface terminal (RP-3)
SSS-Interface 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.
DC in connector (RP-5)
SSS-Interface +---+ | 1 | -- GND | 2 | -- +5V | 3 | -- GND +---+
Expansion connector (P4)
|SSS-CPU| ------- +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)
SSS-REL - 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)
SSS-REL - 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)
SSS-REL - 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)
SSS-REL 1 <- /coin switch 2 -- GND 3 -> coin LED
Signal descriptions:
- coin 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)
RF modulator connector (P5)
SSS-CPU +---+ | 1 | -> TV/GAME | 2 | -- +5V | 3 | -> VIDEO | 4 | -> 40% on | 5 | -- GND | 6 | -> audio to RF | 7 | -- GND +---+
Signal descriptions:
- TV/GAME: When high, passes RF input through to RF output.
- 40% on: When high, reduces screen brightness to approximately 45%.
SSS-Interface connector (P6 / RP-4)
SSS-Interface |SSS-CPU| SSS-Interface ------- +5V -- |01 31| -- GND +5V -- |02 32| -- GND +5V -- |03 33| -- GND +5V -- |04 34| -- GND +5V -- |05 35| -- GND joypad 1 D0 xx |06 36| <- joypad ports 2 and 3 D3 and D4 disable $5002R /D7 -> |07 37| <- $5002R /D6 $5002R /D5 -> |08 38| <- $5002R /D4 $5002R /D3 -> |09 39| <- $5002R /D2 $5002R /D1 -> |10 40| <- $5002R /D0 joypad 1 /OE <- |11 41| xx joypad 2 D0 joypad 1 D1 <- |12 42| <- joypad 2 D1 OUT0 <- |13 43| <- joypad 2 D2 OUT1 <- |14 44| xx joypad 2 D3 OUT2 <- |15 45| xx joypad 2 D4 joypad 2 /OE <- |16 46| ?? /IRQ M2 <- |17 47| -> audio to RF beep disable <- |18 48| -- GND $5006W D7 <- |19 49| -- GND $5006W D5 <- |20 50| -> $5006W D6 $5006W D3 <- |21 51| -> $5006W D4 $5006W D1 <- |22 52| -> $5006W D2 $5004R /D7 -> |23 53| <- $5004W D0 $5004R /D5 -> |24 54| <- $5004R /D6 $5004R /D3 -> |25 55| <- $5004R /D4 $5004R /D1 -> |26 56| <- $5004R /D2 CATV pin 7 -> |27 57| <- $5004R /D0 CATV pin 6 -> |28 58| <- CATV pin 8 CATV pin 3 -> |29 59| -- GND CATV pin 1 -> |30 60| <- CATV pin 2 -------
Signal descriptions:
- beep disable: This disables the near-end flash beeping controlled by the 3199 coin timer. SSS-Interface connects this to DIP switch 9.
- joypad ports 2 and 3 D3 and D4 disable: This disables D3 and D4 just on joypad ports 2 and 3. They can still be used over the Famicom expansion port. SSS-Interface connects this to DIP switch 10.
- audio to RF: This is the same audio sent to the RF modulator (with everything mixed in), but here is used for the Famicom expansion port.
- CATV pin 6..8: These are referred to in the schematic as CA5..7.
SSS-REL connector (P7 / FP-1)
SSS-REL |SSS-CPU| SSS-REL ------- +5V -- |01 14| -> OUT0 +5V -- |02 15| <- joypad 2 D4 TV/GAME LED <- |03 16| <- joypad 2 D3 TV/GAME button -> |04 17| <- joypad 1 D3 /reset button -> |05 18| <- joypad 1 D4 TV/GAME button enable <- |06 19| <- /keyswitch position 0 coin LED <- |07 20| <- /keyswitch position 1 /COIN -> |08 21| <- /keyswitch position 2 joypad port 3 GND <> |09 22| <- /keyswitch position 3 joypad 1 D0 -> |10 23| <- /keyswitch position 4 joypad 2 D0 -> |11 24| <- /keyswitch position 9 joypad 1 /OE <- |12 25| -- GND joypad 2 /OE <- |13 26| -- GND --------
This connector differs from the SSS-CPU schematic on manual page 48 in size, signal pin numbers, and signal names. The connector as shown on page 49 is accurate (except that pins 15 and 16 are reversed).
Signal descriptions:
- TV/GAME LED: This is used to indicate game mode (high to light LED).
- TV/GAME button enable: This is connected to +5V on the SSS-CPU (but incorrectly shown on the schematic as controlled by a register).
- /COIN: This connects to the 3199 coin timer and is driven low by either the coin box's coin switch, or by the SSS-REL's service button.
- joypad port 3 GND: This is driven low by SSS-CPU to enable joypad port 3, or instead weakly pulled low so the Zapper can pull it high, in which case it's an input to the SSS-CPU.
- /keyswitch position 0..4, 9: These are pulled high on the SSS-CPU.
SSS-SW connector (FP-5)
SSS-REL +---+ | 1 | -- GND | 2 | <- /reset button | 3 | <- TV/GAME button | 4 | -> TV/GAME button enable | 5 | -> TV/GAME LED +---+
Keyswitch (FP-6)
SSS-REL +---+ | 1 | <- /keyswitch position 0 | 2 | <- /keyswitch position 1 | 3 | <- /keyswitch position 2 | 4 | <- /keyswitch position 3 | 5 | <- /keyswitch position 4 | 6 | -- GND | 7 | <- /keyswitch position 9 +---+
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.
- P7 $4017 D3 and D4 pin names should be swapped.
- 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
- SSS-CPU-03
- Chipsets:
- RP2A03E / RP2C02E-0
- RP2A03G / RP2C02G-0