Famicombox Registers and Junk


Here's the official documentation (I think) for the dipswitches. I have no idea where this came from. I have sussed out what the switches do and it seems to match up for the most part with these. I also figured out what dipswitches 9 and 10 do. (see the documentation below)


And for where we're going, this will come in very, very handy. It is a desoldering tool. It's got a vacuum pump and a hollow heated tip. Makes removing chips and connectors and things very simple.

And without further ado, here are the complete technical specs I have figured out so far. There are a few tiny holes here and there but it's pretty complete... should be enough to make an emulator run the menu or something :-)



Front controls:
---------------

3 controller plugs (regulation NES style), two are wired in parallel for pad #2 and the zapper,
                   except the GND line which is used to turn the zapper off.

1 green LED for indicating TV/game
1 red pushbutton for TV/game selection
1 grey pushbutton for game reset
1 TEST button hidden behind door, near controller plugs.  Pushing adds credit
6 position keyswitch, break before make operation.


Pinout of the 26 pin connector that connects the front controls:
----------------------------------------------------------------

 1 - +5V
 2 - +5V
 3 - Front LED anode (cathode is grounded)
 4 - TV/Game button (5V on other end- connected to pin 6)
 5 - RESET button (grounded on other end)
 6 - +5V
 7 - pin 3 of coin connector. connects to LED. (pin 2 of coin connector is grounded)
 8 - TEST button (pushed = grounded) & pin 1 of coin connector. (shorting to ground adds credit)
 9 - GND on zapper plug (!!)
10 - Din controller 1 (D0 on stick 1)
11 - Din controller 2 (D0 on stick 2 only)
12 - CLK controller 1 (stick 1 only)
13 - CLK controller 2 (stick 2 & 3)

14 - LOAD controller 1 & 2
15 - Zapper trigger (D4) on sticks 2 & 3
16 - Zapper detect (D3) on sticks 2 & 3
17 - D3 on stick 1
18 - D4 on stick 1
19 - Key position 0 (pulls to ground)
20 - Key position 1
21 - Key position 2
22 - Key position 3
23 - Key position 4
24 - Key position 6
25 - GND
26 - GND




DB-15 on the back of unit (marked "15P expand"):
------------------------------------------------
(note: the pinout is the same as the Famicom's DB-15)

 1 - GND
 2 - audio output
 3 - /IRQ
 4 - 4017R.4
 5 - 4017R.3
 6 - 4017R.2
 7 - 4017R.1
 8 - 4017R.0
 9 - 4017R enable
10 - 4016W.2
11 - 4016W.1
12 - 4016W.0
13 - 4016R.1
14 - 4016R enable
15 - +5V


DB-25 on the back of the unit (marked "25P expand"):
----------------------------------------------------

 1 - +5V
 2 - 5004R.0
 3 - 5004R.2
 4 - 5004R.4
 5 - 5004R.6
 6 - 5006W.0
 7 - 5006W.2
 8 - 5006W.4
 9 - 5006W.6
10 - GND
11 - GND
12 - GND
13 - GND
14 - /IRQ
15 - 5004R.1
16 - 5004R.3
17 - 5004R.5
18 - 5004R.7
19 - 5006W.1
20 - 5006W.3
21 - 5006W.5
22 - 5006W.7
23 - GND
24 - M2
25 - GND


Expansion connector (behind a small door on the back left side):
----------------------------------------------------------------

 1 - +5V
 2 - +5V
 3 - +5V
 4 - M2
 5 - Audio Input
 6 - +5V
 7 - PRG A6
 8 - PRG A4
 9 - PRG A2
10 - PRG A0
11 - PRG D1
12 - PRG D3
13 - PRG D5
14 - PRG D7
15 - PRG R/W
16 - pin #1 audio
17 - 4017R.5
18 - 4017R.7
19 - 4016R.5
20 - 4016R.7
21 - 5007R.3
22 - 5007R.6
23 - 5007R.7
24 - GND
25 - GND

26 - 5007W enable
27 - 5006R enable
28 - 5005R enable
29 - +5V
30 - +5V
31 - +5V
32 - PRG A7
33 - PRG A5
34 - PRG A3
35 - PRG A1
36 - PRG D0
37 - PRG D2
38 - PRG D4
39 - PRG D6
40 - /(5000-5fffh)
41 - /IRQ
42 - pin #2 audio
43 - 4017R.6
44 - 4016R.2
45 - 4016R.6
46 - GND
47 - GND
48 - GND
49 - GND
50 - GND



------


CPU space:

0000-1FFFh - 8K of RAM, with write enabling (see register 5002W)
2000-3FFFh - PPU
4000-4FFFh - CPU regs + unused
5000-5FFFh - system registers
6000-7FFFh - 8K of RAM, always writable
8000-FFFFh - cartridge space

system registers:

4016W: (CPU 3 bit port)
-----
0 - Controls LATCH line on the joypads, DB-15 pin 12
1 - DB-15 pin 11
2 - DB-15 pin 10



4016R: (player 1 joypad register)
-----
0 - joypad 1 data D0
1 - DB-15 pin 14
2 - exp. conn. pin 44
3 - joypad 1 data D3
4 - joypad 1 data D4
5 - exp. conn. pin 19
6 - exp. conn. pin 45
7 - exp. conn. pin 20



4017R: (player 2 joypad register)
-----
0 - joypad 2 data D0, DB-15 pin 8
1 - DB-15 pin 7
2 - DB-15 pin 6
3 - joypad 2 data D3, DB-15 pin 5
4 - joypad 2 data D4, DB-15 pin 4
5 - exp. conn. pin 17
6 - exp. conn. pin 43
7 - exp. conn. pin 18



5000W: Exception Trap enable register (reset to 00h on powerup only)
-----
0 - 6.82Hz interrupt source (0 = enable)
1 - 8 bit timer expiration @ 5003W (1 = enable)
2 - controller reads (1 = enable)
3 - keyswitch rotation (1 = enable)
4 - money insertion (1 = enable)
5 - reset button (1 = enable)
6 - not used
7 - "CATV connector" pin 4 detection (1 = enable)

5000R: Device which caused an exception (0 = this device caused the exception)
-----
0 - 6.82Hz interrupt source hit
1 - 8 bit timer expired @ 5003W
2 - controller(s) were read
3 - keyswitch was rotated
4 - money was inserted
5 - reset button was pressed
6 - watchdog timer expired (reading either controller resets this timer)
7 - Pin 4 of "CATV connector" went high/open

When 5000R is read, this register is reset, and the exception trap controller is
reset.

When one of the above exceptions occurs, the CPU is reset.  The menu code then reads to see
which of the sources caused the reset, and acts accordingly.  A diverse selection of things can
cause a reset to occur.



5001W Money handling register (reset to 00h on power up only)
-----

0 - pin 1 of 2D (3199)
1 - pin 2 of 2D (3199)
2 - pin 3 of 2D (3199)
3 - pin 4 of 2D (3199)
4 - pin 12 of 2D (3199)
5 - pin 14 of 2D (3199)
6 - enable pin 7 of "CATV" connector, 1 = enable.  when in TV mode, output goes low. else output stays high
7 - inverter -> pin 8 of "CATV" connector



5002W LED & memory protect register (reset to 00h when CPU is reset)
-----

0 - LED sel 0
1 - LED sel 1
2 - LED sel 2
3 - LED sel 3
4 - Mem Protect 0
5 - Mem protect 1
6 - Mem protect 2
7 - LED flash- high = flash, low = steady

LED sel: 01-0fh selects one of the LEDs on the front, 0 = no LEDs

Mem protect:

0   - no RAM is writable
1   - 0000-07ffh is writable
2   - 0000-0fffh is writable
3   - 0000-17ffh is writable
4-7 - 0000-1fffh is writable



5003W 8 bit down counter, for attract mode timing
-----

Writing to this location loads the counter with the 8 bit value written                                      .
It is clocked at a 6.8274Hz rate.  When the timer wraps from 00h to ffh
it triggers an exception, if it is enabled. (See 5000W and 5000R)
This timer is used for the "attract" mode.  It lets the game run for
several seconds before it brings the menu back.

0 - C0
1 - C1
2 - C2
3 - C3
4 - C4
5 - C5
6 - C6
7 - C7

C0-C7: 8 bit counter value



5004W Cart control register (reset to 00h when CPU is reset)
-----

0 - cart 0
1 - cart 1
2 - cart 2
3 - cart 3
4 - row select 0
5 - row select 1
6 - Lock.  writing a 1 here unmaps all hardware
7 - NC

cart:  These 4 bits select which cartridge is active.  Cartridge 0 is the
       menu cart inside the unit, carts 01-0fh are the carts on the front.

row select: These bits select which row of carts is active.

0 - only the internal menu cart is selected.
1 - carts 1-5 are selected
2 - carts 6-10 are selected
3 - carts 11-15 are selected

Proper cart selection requires setting up BOTH the desired cart # (00-0fh), AND
the proper row.  The menu software uses a small table to do this.



5005W CATV and joypad control (reset to 00h on power up only)
-----

0 - 1 = flip latching relay to position A (coil on pins 1 & 10)
1 - connects to 3199
2 - turn zapper on. 1 = turn on
3 - enable 40% input of modulator.  1 = enable, 0 = disable
4 - NC
5 - maps to 5007R.7
6 - joypad enable- 1 = disable, 0 = enable
7 - joypad swap. 1 = normal, 0 = swap        swapping only swaps D0 and CLK



5006W (not reset, unknown contents at powerup)
-----

0 - DB-25 pin 6
1 - DB-25 pin 15
2 - DB-25 pin 7
3 - DB-25 pin 16
4 - DB-25 pin 8
5 - DB-25 pin 17
6 - DB-25 pin 9
7 - DB-25 pin 18



5007W (not implemented)
-----

The enable for this runs to pin 26 of the expansion connector.



5001R (not implemented)
-----

This enable does not go anywhere.



5002R Dip switch register
-----
1 = switch in "on" position

0 - DIP SW 1
1 - DIP SW 2
2 - DIP SW 3
3 - DIP SW 4
4 - DIP SW 5
5 - DIP SW 6
6 - DIP SW 7
7 - DIP SW 8



5003R
-----

0 - key position 0 (1 = in this position)
1 - key position 1
2 - key position 2
3 - key position 3
4 - key position 4
5 - key position 6
6 - money system enabled (pin 9 of 3199)
7 - pin 10 of 3199



5004R
-----
note: inputs are inverted

0 - DB-25 pin 2
1 - DB-25 pin 15
2 - DB-25 pin 3
3 - DB-25 pin 16
4 - DB-25 pin 4
5 - DB-25 pin 17
6 - DB-25 pin 5
7 - DB-25 pin 18



5005R (not implemented)
-----

The enable for this runs to pin 28 of the expansion connector.



5006R (not implemented)
-----

The enable for this runs to pin 27 of the expansion connector.



5007R
-----

0 - TV type selection (1 = game, 0 = TV)
1 - keyswitch turned (1 = in middle of positions)
2 - 0 = zapper grounded
3 - pin 21 of exp. conn. (inverted)
4 - state of pin 8 of "CATV" connector,  0 = low, 1 = high
5 - relay position. 0 = position A, 1 = position B
6 - pin 22 of exp. conn. (inverted)
7 - 5005.5W (inverted)



Counter chain:
--------------

There is a long counter chain.  It starts out with the 21.47727MHz signal, which is first divided by 3.
This then passes to a 14 bit binary counter that has a tap at the 13th bit to generate a 873.91Hz tone to
indicate money was inserted.

The 14th bit runs to a 12 bit counter.  A tap at bit 6 produces a 6.827Hz clock to run the counter at
5003W.  Another tap at bit 7 produces a 3.414Hz clock which is used to flash the LEDs on the front.
A final tap at bit 9 produces a 0.85Hz clock which is used to run the watchdog timer.



Watchdog timer:
---------------

A 4 bit binary up counter is used.  It is clocked at 0.85Hz.  When a controller is read (either one), this
timer is reset.  When the count wraps from 0fh to 00h, an exception is generated. (see 5000R and 5000W)



Audio chain:
------------

The audio chain is kinda interesting.  The audio passes from the two pins on the CPU, through two hex inverter
audio amplifiers, and then the outputs of these go to the expansion connector, and then through two more
hex inverter amplifiers.  The outputs of those two amps is combined with external audio (again from the exp.
conn.) and the coin beep, which is finally fed to the DB-15, DB-25, and the modulator and audio jack.

The beep is made whenever money is inserted.

Modulator:
----------

The modulator has a couple inputs:

Audio - mono audio from amplifier+external+coin feep
Video - comes from the usual transistor circuit on the PPU
B+    - connects to 5V
B+SW  - when grounded, switches the game in.  when high, lets TV signal pass through
GND   - connects to ground
40%   - undermodulates video by 40% when low.  high = normal

The 40% input is weird.  When the time is about to expire on the coin mechanism, it feeps
and flashes the screen by using this 40% input.  The LED on the coin mech also flashes in
time with the feeping.

Dip switch:
-----------

Positions:

 1 - Self Test.  When on, unit will continuously self-test
 2 - Coin timeout period. off = 10 minutes, on = 20 minutes
 3 - not used
 4 - Famicombox menu time. off = 7 sec, on = 12 sec
 5 - attract time
 6 - attract time
 7 - Mode
 8 - Mode
 9 - when on, mutes the money feep
10 - when on, enables D3 and D4 on controller 2.  when off, the only access is through the DB-15 socket

---

Attract time:
How long each game plays while in attract mode before switching to the next.

 5   6
OFF OFF - 12 seconds
 ON OFF - 17 seconds
OFF  ON - 23 seconds
 ON  ON - 7 seconds

---

Mode:
Operational mode.

 7   8
OFF OFF - "KEY MODE"
 ON OFF - "CATV MODE"
OFF  ON - "COIN MODE"
 ON  ON - "FREEPLAY"

---



All HTML and graphics designed and copyright by Kevin Horton except chip package illustration.