summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author MooglyGuy <therealmogminer@gmail.com>2016-12-26 12:45:28 +0100
committer MooglyGuy <therealmogminer@gmail.com>2016-12-26 12:48:39 +0100
commit538d76efe333b0b19247d9c0e19675c77c3b843f (patch)
treeb1812150f20d9ef58b31cff156ddd67869f09354
parent612afb6a25da79704a57aff422f7b719d423a7a3 (diff)
-stuntcyc: Added netlist. Currently does not show anything on-screen. [Ryan Holtz]
-rw-r--r--scripts/target/mame/arcade.lua2
-rw-r--r--scripts/target/mame/nl.lua12
-rw-r--r--src/lib/netlist/devices/nld_74194.h22
-rw-r--r--src/lib/netlist/devices/nld_7485.cpp2
-rw-r--r--src/lib/netlist/devices/nld_82S115.cpp14
-rw-r--r--src/lib/netlist/devices/nld_82S115.h26
-rw-r--r--src/lib/netlist/devices/nld_9312.h28
-rw-r--r--src/mame/drivers/atarittl.cpp59
-rw-r--r--src/mame/machine/nl_stuntcyc.cpp643
-rw-r--r--src/mame/machine/nl_stuntcyc.h4
-rw-r--r--src/mame/nl.lst2
11 files changed, 754 insertions, 60 deletions
diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua
index 917e055479f..962664c37c8 100644
--- a/scripts/target/mame/arcade.lua
+++ b/scripts/target/mame/arcade.lua
@@ -965,6 +965,8 @@ files {
MAME_DIR .. "src/mame/video/atarisy2.cpp",
MAME_DIR .. "src/mame/drivers/atarisy4.cpp",
MAME_DIR .. "src/mame/drivers/atarittl.cpp",
+ MAME_DIR .. "src/mame/machine/nl_stuntcyc.cpp",
+ MAME_DIR .. "src/mame/machine/nl_stuntcyc.h",
MAME_DIR .. "src/mame/drivers/atetris.cpp",
MAME_DIR .. "src/mame/includes/atetris.h",
MAME_DIR .. "src/mame/video/atetris.cpp",
diff --git a/scripts/target/mame/nl.lua b/scripts/target/mame/nl.lua
index 2a02ab32016..0ad6c16419c 100644
--- a/scripts/target/mame/nl.lua
+++ b/scripts/target/mame/nl.lua
@@ -121,8 +121,10 @@ files{
MAME_DIR .. "src/mame/machine/nl_hazelvid.h",
MAME_DIR .. "src/mame/drivers/atarittl.cpp",
+ MAME_DIR .. "src/mame/machine/nl_stuntcyc.cpp",
+ MAME_DIR .. "src/mame/machine/nl_stuntcyc.h",
- MAME_DIR .. "src/mame/drivers/hazeltin.cpp",
+ MAME_DIR .. "src/mame/drivers/hazeltin.cpp",
MAME_DIR .. "src/mame/drivers/1942.cpp",
MAME_DIR .. "src/mame/includes/1942.h",
@@ -132,10 +134,10 @@ files{
MAME_DIR .. "src/mame/includes/popeye.h",
MAME_DIR .. "src/mame/video/popeye.cpp",
- MAME_DIR .. "src/mame/drivers/mario.cpp",
- MAME_DIR .. "src/mame/includes/mario.h",
- MAME_DIR .. "src/mame/video/mario.cpp",
- MAME_DIR .. "src/mame/audio/mario.cpp",
+ MAME_DIR .. "src/mame/drivers/mario.cpp",
+ MAME_DIR .. "src/mame/includes/mario.h",
+ MAME_DIR .. "src/mame/video/mario.cpp",
+ MAME_DIR .. "src/mame/audio/mario.cpp",
MAME_DIR .. "src/mame/drivers/m62.cpp",
MAME_DIR .. "src/mame/includes/m62.h",
diff --git a/src/lib/netlist/devices/nld_74194.h b/src/lib/netlist/devices/nld_74194.h
index 3207495c725..944d9537754 100644
--- a/src/lib/netlist/devices/nld_74194.h
+++ b/src/lib/netlist/devices/nld_74194.h
@@ -28,17 +28,17 @@
#include "nl_setup.h"
-#define TTL_74194(name, cCLK, cS0, cS1, cSRIN, cA, cB, cC, cD, cSLIN, cCLRQ) \
- NET_REGISTER_DEV(TTL_74194, name) \
- NET_CONNECT(name, CLK, cCLK) \
- NET_CONNECT(name, S0, cS0) \
- NET_CONNECT(name, S1, cC1) \
- NET_CONNECT(name, SRIN, cSRIN) \
- NET_CONNECT(name, A, cA) \
- NET_CONNECT(name, B, cB) \
- NET_CONNECT(name, C, cC) \
- NET_CONNECT(name, D, cD) \
- NET_CONNECT(name, SLIN, cSLIN) \
+#define TTL_74194(name, cCLK, cS0, cS1, cSRIN, cA, cB, cC, cD, cSLIN, cCLRQ) \
+ NET_REGISTER_DEV(TTL_74194, name) \
+ NET_CONNECT(name, CLK, cCLK) \
+ NET_CONNECT(name, S0, cS0) \
+ NET_CONNECT(name, S1, cS1) \
+ NET_CONNECT(name, SRIN, cSRIN) \
+ NET_CONNECT(name, A, cA) \
+ NET_CONNECT(name, B, cB) \
+ NET_CONNECT(name, C, cC) \
+ NET_CONNECT(name, D, cD) \
+ NET_CONNECT(name, SLIN, cSLIN) \
NET_CONNECT(name, CLRQ, cCLRQ)
#define TTL_74194_DIP(name) \
diff --git a/src/lib/netlist/devices/nld_7485.cpp b/src/lib/netlist/devices/nld_7485.cpp
index 631257ecb4e..ba51756cac1 100644
--- a/src/lib/netlist/devices/nld_7485.cpp
+++ b/src/lib/netlist/devices/nld_7485.cpp
@@ -73,7 +73,7 @@ namespace netlist
// FIXME: Timing
NETLIB_UPDATE(7485)
{
- for (std::int_fast32_t i = 3; i >= 0; i++)
+ for (std::int_fast32_t i = 3; i >= 0; i--)
{
if (m_A[i]() > m_B[i]())
{
diff --git a/src/lib/netlist/devices/nld_82S115.cpp b/src/lib/netlist/devices/nld_82S115.cpp
index 873acef549d..3a40d234186 100644
--- a/src/lib/netlist/devices/nld_82S115.cpp
+++ b/src/lib/netlist/devices/nld_82S115.cpp
@@ -15,8 +15,8 @@ namespace netlist
{
NETLIB_CONSTRUCTOR(82S115)
, m_A(*this, {{"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8"}})
- , m_CE1(*this, "CE1")
- , m_CE2Q(*this, "CE2Q")
+ , m_CE1Q(*this, "CE1Q")
+ , m_CE2(*this, "CE2")
, m_STROBE(*this, "STROBE")
, m_O(*this, {{"O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8"}})
, m_last_O(*this, "m_last_O", 0)
@@ -29,8 +29,8 @@ namespace netlist
protected:
object_array_t<logic_input_t, 9> m_A;
- logic_input_t m_CE1;
- logic_input_t m_CE2Q;
+ logic_input_t m_CE1Q;
+ logic_input_t m_CE2;
logic_input_t m_STROBE;
object_array_t<logic_output_t, 8> m_O;
@@ -53,8 +53,8 @@ namespace netlist
register_subalias("5", m_A[7]);
register_subalias("6", m_A[8]);
- register_subalias("20", m_CE1);
- register_subalias("19", m_CE2Q);
+ register_subalias("20", m_CE1Q);
+ register_subalias("19", m_CE2);
// register_subalias("13", m_FE1);
// register_subalias("11", m_FE2);
@@ -82,7 +82,7 @@ namespace netlist
{
unsigned o = 0;
- if (m_CE1() && !m_CE2Q())
+ if (!m_CE1Q() && m_CE2())
{
if (m_STROBE())
{
diff --git a/src/lib/netlist/devices/nld_82S115.h b/src/lib/netlist/devices/nld_82S115.h
index e8b538dbc95..0c900e4dad7 100644
--- a/src/lib/netlist/devices/nld_82S115.h
+++ b/src/lib/netlist/devices/nld_82S115.h
@@ -30,19 +30,19 @@
#include "nl_setup.h"
-#define PROM_82S115(name, cCE1, cCE2Q, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7, cA8, cSTROBE) \
- NET_REGISTER_DEV(PROM_82S115, name) \
- NET_CONNECT(name, CE1Q, cCE1Q) \
- NET_CONNECT(name, CE2Q, cCE2Q) \
- NET_CONNECT(name, A0, cA0) \
- NET_CONNECT(name, A1, cA1) \
- NET_CONNECT(name, A2, cA2) \
- NET_CONNECT(name, A3, cA3) \
- NET_CONNECT(name, A4, cA4) \
- NET_CONNECT(name, A5, cA5) \
- NET_CONNECT(name, A6, cA6) \
- NET_CONNECT(name, A7, cA7) \
- NET_CONNECT(name, A8, cA8) \
+#define PROM_82S115(name, cCE1Q, cCE2, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7, cA8, cSTROBE) \
+ NET_REGISTER_DEV(PROM_82S115, name) \
+ NET_CONNECT(name, CE1Q, cCE1Q) \
+ NET_CONNECT(name, CE2, cCE2) \
+ NET_CONNECT(name, A0, cA0) \
+ NET_CONNECT(name, A1, cA1) \
+ NET_CONNECT(name, A2, cA2) \
+ NET_CONNECT(name, A3, cA3) \
+ NET_CONNECT(name, A4, cA4) \
+ NET_CONNECT(name, A5, cA5) \
+ NET_CONNECT(name, A6, cA6) \
+ NET_CONNECT(name, A7, cA7) \
+ NET_CONNECT(name, A8, cA8) \
NET_CONNECT(name, STROBE, cSTROBE)
#define PROM_82S115_DIP(name) \
diff --git a/src/lib/netlist/devices/nld_9312.h b/src/lib/netlist/devices/nld_9312.h
index 5608ba9aefb..98cc0d115c8 100644
--- a/src/lib/netlist/devices/nld_9312.h
+++ b/src/lib/netlist/devices/nld_9312.h
@@ -39,20 +39,20 @@
#include "nl_setup.h"
-#define TTL_9312(name, cA, cB, cC, cD0, cD1, cD2, cD3, cD4, cD5, cD6, cD7, cSTROBE) \
- NET_REGISTER_DEV(TTL_9312, name) \
- NET_CONNECT(name, A, cA) \
- NET_CONNECT(name, B, cB) \
- NET_CONNECT(name, C, cC) \
- NET_CONNECT(name, D0, cD0) \
- NET_CONNECT(name, D1, cD1) \
- NET_CONNECT(name, D2, cD2) \
- NET_CONNECT(name, D3, cD3) \
- NET_CONNECT(name, D4, cD4) \
- NET_CONNECT(name, D5, cD5) \
- NET_CONNECT(name, D6, cD6) \
- NET_CONNECT(name, D7, cD7) \
- NET_CONNECT(name, STROBE, cSTROBE)
+#define TTL_9312(name, cA, cB, cC, cD0, cD1, cD2, cD3, cD4, cD5, cD6, cD7, cSTROBE) \
+ NET_REGISTER_DEV(TTL_9312, name) \
+ NET_CONNECT(name, A, cA) \
+ NET_CONNECT(name, B, cB) \
+ NET_CONNECT(name, C, cC) \
+ NET_CONNECT(name, D0, cD0) \
+ NET_CONNECT(name, D1, cD1) \
+ NET_CONNECT(name, D2, cD2) \
+ NET_CONNECT(name, D3, cD3) \
+ NET_CONNECT(name, D4, cD4) \
+ NET_CONNECT(name, D5, cD5) \
+ NET_CONNECT(name, D6, cD6) \
+ NET_CONNECT(name, D7, cD7) \
+ NET_CONNECT(name, G, cSTROBE)
#define TTL_9312_DIP(name) \
NET_REGISTER_DEV(TTL_9312_DIP, name)
diff --git a/src/mame/drivers/atarittl.cpp b/src/mame/drivers/atarittl.cpp
index 061baad3cc0..5022ad1e552 100644
--- a/src/mame/drivers/atarittl.cpp
+++ b/src/mame/drivers/atarittl.cpp
@@ -57,7 +57,9 @@
netlist system per-game:
TM-057 (Stunt Cycle)
- 4136 Quad General-Purpose Operational Amplifiers
+ 566 Voltage-Controlled Oscillator
+ 1N751A Zener Diode
+ 1N752A Zener Diode
TM-055 (Indy 4)
7406 Hex Inverter Buffers/Drivers with O.C. H.V. Outputs (note: Might not be needed, could just clone from 7404)
@@ -73,6 +75,7 @@
#include "emu.h"
#include "machine/netlist.h"
+#include "machine/nl_stuntcyc.h"
#include "netlist/devices/net_lib.h"
#include "video/fixfreq.h"
@@ -84,22 +87,27 @@
#define H_TOTAL (0x1C6+1) // 454
#define HBSTART (H_TOTAL)
-#define HBEND (80)
+#define HBEND (32)
#define VBSTART (V_TOTAL)
#define VBEND (16)
#define HRES_MULT (1)
// end
-
+#define SC_HTOTAL (0x1C8+1) // 456
+#define SC_VTOTAL (0x103+1) // 259
+#define SC_HBSTART (SC_HTOTAL)
+#define SC_HBEND (32)
+#define SC_VBSTART (SC_VTOTAL)
+#define SC_VBEND (8)
class atarikee_state : public driver_device
{
public:
atarikee_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_video(*this, "fixfreq")
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_video(*this, "fixfreq")
{
}
@@ -119,7 +127,20 @@ private:
};
+class stuntcyc_state : public atarikee_state
+{
+public:
+ stuntcyc_state(const machine_config &mconfig, device_type type, const char *tag)
+ : atarikee_state(mconfig, type, tag)
+ , m_hf1(*this, "maincpu:hf1")
+ , m_d7(*this, "maincpu:d7")
+ {
+ }
+private:
+ required_device<netlist_mame_rom_t> m_hf1;
+ required_device<netlist_mame_rom_t> m_d7;
+};
static NETLIST_START(atarikee)
SOLVER(Solver, 48000)
@@ -163,6 +184,26 @@ static MACHINE_CONFIG_START( atarikee, atarikee_state )
MACHINE_CONFIG_END
+static MACHINE_CONFIG_START( stuntcyc, stuntcyc_state )
+ /* basic machine hardware */
+ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK)
+ MCFG_NETLIST_SETUP(stuntcyc)
+
+ MCFG_NETLIST_ROM_REGION("maincpu", "hf1", "hf1", "hf1")
+ MCFG_NETLIST_ROM_REGION("maincpu", "d7", "d7", "d7")
+
+ MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "VIDEO_OUT", fixedfreq_device, update_vid, "fixfreq")
+
+ /* video hardware */
+ MCFG_FIXFREQ_ADD("fixfreq", "screen")
+ MCFG_FIXFREQ_MONITOR_CLOCK(MASTER_CLOCK)
+ MCFG_FIXFREQ_HORZ_PARAMS(SC_HTOTAL-67,SC_HTOTAL-40,SC_HTOTAL-8, SC_HTOTAL)
+ MCFG_FIXFREQ_VERT_PARAMS(SC_VTOTAL-22,SC_VTOTAL-19,SC_VTOTAL-12,SC_VTOTAL)
+ MCFG_FIXFREQ_FIELDCOUNT(1)
+ MCFG_FIXFREQ_SYNC_THRESHOLD(0.30)
+MACHINE_CONFIG_END
+
+
/***************************************************************************
Game driver(s)
@@ -301,10 +342,10 @@ ROM_END
ROM_START( stuntcyc )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
- ROM_REGION( 0x0200, "gfx", ROMREGION_ERASE00 )
+ ROM_REGION( 0x0200, "hf1", ROMREGION_ERASE00 )
ROM_LOAD( "004275.f1", 0x0000, 0x0200, CRC(4ed5a99d) SHA1(1e5f439bce72e78dfff76fd8f61187c6ef484a64) ) // Motorcycle & Bus
- ROM_REGION( 0x0020, "score", ROMREGION_ERASE00 )
+ ROM_REGION( 0x0020, "d7", ROMREGION_ERASE00 )
ROM_LOAD( "004811.d7", 0x0000, 0x0020, CRC(31a09efb) SHA1(fd5d538c9ec1234acf7c74ca0704113d220abbf6) ) // Score Translator
ROM_END
@@ -451,7 +492,7 @@ GAME(1975, jetfighta, jetfight, atarikee, 0, driver_device, 0, ROT0, "Ata
GAME(1976, outlaw, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Outlaw [TTL]", MACHINE_IS_SKELETON)
GAME(1975, sharkjaw, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Horror Games", "Shark JAWS [TTL]", MACHINE_IS_SKELETON)
GAME(1975, steeplec, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Steeplechase [TTL]", MACHINE_IS_SKELETON)
-GAME(1976, stuntcyc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Stunt Cycle [TTL]", MACHINE_IS_SKELETON)
+GAME(1976, stuntcyc, 0, stuntcyc, 0, driver_device, 0, ROT0, "Atari", "Stunt Cycle [TTL]", MACHINE_IS_SKELETON)
GAME(1974, tank, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Tank/Tank Cocktail [TTL]", MACHINE_IS_SKELETON)
GAME(1975, tankii, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Tank II [TTL]", MACHINE_IS_SKELETON)
diff --git a/src/mame/machine/nl_stuntcyc.cpp b/src/mame/machine/nl_stuntcyc.cpp
new file mode 100644
index 00000000000..ac70959dd71
--- /dev/null
+++ b/src/mame/machine/nl_stuntcyc.cpp
@@ -0,0 +1,643 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+
+/***************************************************************************
+
+ Netlist (stuntcyc) included from atarittl.cpp
+
+***************************************************************************/
+
+#include "netlist/devices/net_lib.h"
+
+NETLIST_START(stuntcyc)
+
+ SOLVER(Solver, 48000)
+ PARAM(Solver.PARALLEL, 0) // Don't do parallel solvers
+ PARAM(Solver.ACCURACY, 1e-4) // works and is sufficient
+ PARAM(NETLIST.USE_DEACTIVATE, 1)
+
+ ANALOG_INPUT(V5, 5)
+
+ TTL_INPUT(high, 1)
+ TTL_INPUT(low, 0)
+
+ MAINCLOCK(main_clk, 14318181.8)
+ ALIAS(Y1, main_clk)
+
+#if 1
+ TTL_7404_INVERT(N3_6, main_clk)
+ ALIAS(HF_CLOCK, N3_6.Q)
+
+ ALIAS(P, high)
+ ALIAS(GROUND, low)
+
+ TTL_7474(N4_2, N3_6.Q, N4_2.QQ, P, P)
+ ALIAS(CLOCK, N4_2.Q)
+ ALIAS(CLOCK_Q, N4_2.QQ)
+
+ TTL_9316(M4, N4_2.Q, P, P, P, J6_1.Q, GROUND, GROUND, GROUND, GROUND)
+ TTL_9316(L4, N4_2.Q, M4.RC, P, P, J6_1.Q, GROUND, GROUND, GROUND, GROUND)
+ ALIAS( 1H, M4.QA)
+ ALIAS( 2H, M4.QB)
+ ALIAS( 4H, M4.QC)
+ ALIAS( 8H, M4.QD)
+ ALIAS( 16H, L4.QA)
+ ALIAS( 32H, L4.QB)
+ ALIAS( 64H, L4.QC)
+ ALIAS(128H, L4.QD)
+
+ TTL_74107(K4_1, 128H, P, P, P)
+ ALIAS(256H, K4_1.Q)
+ ALIAS(256H_Q, K4_1.QQ)
+
+ TTL_7420_NAND(J6_1, 8H, 64H, 128H, 256H)
+ ALIAS(HRESET_Q, J6_1.Q)
+
+ TTL_7404_INVERT(H6_3, HRESET_Q)
+ ALIAS(HRESET, H6_3.Q)
+
+ TTL_7493(L3, HRESET, L3.QA, VRESET, VRESET)
+ TTL_7493(K3, L3.QD, K3.QA, VRESET, VRESET)
+ ALIAS( 1V, L3.QA)
+ ALIAS( 2V, L3.QB)
+ ALIAS( 4V, L3.QC)
+ ALIAS( 8V, L3.QD)
+ ALIAS( 16V, K3.QA)
+ ALIAS( 32V, K3.QB)
+ ALIAS( 64V, K3.QC)
+ ALIAS(128V, K3.QD)
+
+ TTL_74107(K4_2, 128V, P, P, VRESET_Q)
+ ALIAS(256V, K4_2.Q)
+ ALIAS(256V_Q, K4_2.QQ)
+
+ TTL_7410_NAND(M5_3, 256V, 2V, 1V)
+ TTL_7474(M3_2, HRESET, M5_3.Q, P, P)
+ ALIAS(VRESET, M3_2.QQ)
+ ALIAS(VRESET_Q, M3_2.Q)
+
+ TTL_7402_NOR(J5_2, H6_3.Q, J5_1.Q)
+ TTL_7402_NOR(J5_1, 32H, J5_2.Q)
+ TTL_7402_NOR(J5_3, 8V, J5_4.Q)
+ TTL_7402_NOR(J5_4, VRESET, J5_3.Q)
+ ALIAS(HSYNC, J5_1.Q)
+ ALIAS(HSYNC_Q, J5_2.Q)
+ ALIAS(VSYNC, J5_3.Q)
+ ALIAS(VSYNC_Q, J5_4.Q)
+
+ TTL_7486_XOR(J4_1, HSYNC, VSYNC_Q)
+ ALIAS(COMP_SYNC_Q, J4_1.Q)
+
+ TTL_7400_NAND(N5_2, FIXED_RAMP_ZONE, H_WINDOW)
+ ALIAS(RAMP_WINDOW_HIT_Q, N5_2.Q)
+
+ TTL_7474(N4_1, H_WINDOW, HSYNC, RAMP_WINDOW_HIT_Q, N4_1.QQ)
+ TTL_7474(M3_1, N4_1.Q, M3_1.QQ, CYCLE_RESET_Q, P)
+ ALIAS(DIRECTION, M3_1.Q)
+ ALIAS(DIRECTION_Q, M3_1.QQ)
+
+ TTL_7404_INVERT(N3_3, 32V)
+ TTL_7474(J2_2, N3_3.Q, J2_1.Q, P, P)
+ TTL_7474(J2_1, N4_1.Q, P, J2_2.QQ, P)
+
+ TTL_7408_AND(H5_2, 256V_Q, VSYNC_Q)
+ TTL_9316(K1, HSYNC, P, H5_2.Q, V_COUNTER_RESET_Q, L2_3.Q, Av, Bv, Cv, Dv)
+ TTL_9316(K2, HSYNC, K1.RC, J2_2.QQ, V_COUNTER_RESET_Q, L2_3.Q, GROUND, GROUND, GROUND, GROUND)
+ TTL_7400_NAND(L2_3, K1.RC, K2.RC)
+ ALIAS(V1, K1.QA)
+ ALIAS(V2, K1.QB)
+ ALIAS(V3, K1.QC)
+ ALIAS(V4, K1.QD)
+ ALIAS(V_WINDOW, K2.RC)
+
+ TTL_7402_NOR(D4_3, DIRECTION_Q, H6) // Schematic says DIRECTION
+ TTL_7408_AND(B5_1, DIRECTION_Q, H5_AND_H6) // Schematic says DIRECTION
+ TTL_7402_NOR(D4_4, D4_3.Q, B5_1.Q)
+ TTL_7400_NAND(H2_1, HSYNC_Q, D4_4.Q)
+ TTL_7400_NAND(H2_2, HSYNC_Q, H5)
+
+ TTL_9322(J1, HSYNC, V4, P, V3, 4V, V1, 1V, V2, 2V, GROUND)
+ PROM_82S115(hf1, P, GROUND, J1.Y3, J1.Y4, J1.Y2, J1.Y1, H2_2.Q, H2_1.Q, R2, R3, R4, P)
+
+ TTL_7404_INVERT(D3_5, H1)
+ TTL_74194(E1, D3_5.Q, MS_1, MS_2, GROUND, hf1.O1, hf1.O2, hf1.O3, hf1.O4, E2.QA, CYCLE_RESET_A_Q)
+ TTL_74194(E2, D3_5.Q, MS_1, MS_2, E1.QD, hf1.O4, hf1.O5, hf1.O6, hf1.O7, GROUND, CYCLE_RESET_A_Q)
+
+ TTL_74165(F2, CLOCK, GROUND, HSYNC_Q, F2.QH, hf1.O1, hf1.O2, hf1.O3, hf1.O4, hf1.O5, hf1.O6, hf1.O7, hf1.O8)
+ TTL_7474(D2_1, CLOCK, F2.QH, OBJECT_ZONE, P)
+ ALIAS(OBJECTS_Q, D2_1.QQ)
+
+ TTL_7450_ANDORINVERT(D1_2, E1.QA, DIRECTION, E2.QD, DIRECTION_Q)
+ TTL_7474(D2_2, H1, D1_2.Q, P, V_WINDOW)
+ ALIAS(CYCLE, D2_2.QQ)
+ ALIAS(CYCLE_Q, D2_2.Q)
+
+ /* Coin circuitry */
+ TTL_7404_INVERT(K8_6, K8_5.Q)
+ TTL_7404_INVERT(K8_5, K8_6.Q)
+
+ DIODE(D20, "1N4001")
+ DIODE(D21, "1N914")
+ DIODE(D22, "1N914")
+
+ SWITCH2(coinsw)
+ NET_C(K8_6.Q, coinsw.1)
+ NET_C(D21.K, coinsw.2)
+ NET_C(coinsw.Q, GND)
+
+ NET_C(K8_6.Q, D21.A)
+ NET_C(K8_6.Q, D22.A)
+ NET_C(D21.K, D20.A)
+ NET_C(D20.K, V5)
+ NET_C(D22.K, V5)
+
+ TTL_7474(H8_2, 64V, K8_5.Q, K8_5.Q, P)
+
+ SWITCH2(creditsw)
+ NET_C(creditsw.1, GND)
+ NET_C(creditsw.2, P)
+
+ TTL_7474(F8_1, END_GAME, F8_2.QQ, H9_3.Q, H8_2.QQ)
+ TTL_7474(F8_2, F8_1.QQ, P, ATTRACT_Q, P)
+ ALIAS(FREE_COIN, F8_2.Q)
+ ALIAS(FREE_COIN_Q, F8_2.QQ)
+ ALIAS(FREE_PLAY, F8_1.QQ)
+ ALIAS(FREE_PLAY_Q, F8_1.Q)
+
+ SWITCH2(freegamesw)
+ NET_C(freegamesw.1, P)
+ NET_C(freegamesw.2, GND)
+ TTL_7410_NAND(H9_3, ATTRACT_Q, freegamesw.Q, FREE_GAME)
+
+ /* Antenna to suppress player attempts at glitching in a credit via a piezo spark */
+ /* Has a diode to clamp negative voltages - omitted here */
+
+ TTL_INPUT(ANTENNA, 0)
+
+ QBJT_SW(Q9, "2N3643")
+ RES(R9, 330)
+ RES(R10, 100)
+ CAP(CX3, CAP_U(0.1))
+ NET_C(ANTENNA, Q9.B)
+ NET_C(Q9.E, GND)
+
+ NET_C(R10.1, CX3.1, Q9.C, R9.1)
+ NET_C(R10.2, GND)
+ NET_C(CX3.2, GND)
+ QBJT_SW(Q10, "2N3643")
+ NET_C(Q10.B, R10.1)
+ NET_C(Q10.E, GND)
+
+ DIODE(D2, "1N914")
+ RES(R7, 100)
+ RES(R8, 330)
+ CAP(C2, CAP_U(0.1))
+ QBJT_SW(Q11, "2N3644")
+
+ NET_C(D2.A, R8.1, Q10.C)
+ ALIAS(COIN_Q, D2.K)
+
+ NET_C(R8.2, R7.2, C2.2, Q11.B)
+ NET_C(R7.1, C2.1, Q11.E, V5)
+ NET_C(R9.2, Q11.C)
+
+ TTL_7486_XOR(C8_4, Q11.C, P)
+ ALIAS(QQ, C8_4.Q)
+
+ /* Start buttons, etc. */
+ SWITCH(START1)
+ RES(R11, RES_K(1))
+ NET_C(START1.2, GND)
+ NET_C(R11.1, V5)
+ NET_C(START1.1, R11.2)
+ TTL_7410_NAND(H9_1, 2_PLAYER_CREDIT, START, R11.2)
+
+ SWITCH(START2)
+ RES(R12, RES_K(1))
+ NET_C(START2.2, GND)
+ NET_C(R12.1, V5)
+ NET_C(START2.1, R12.2)
+ TTL_7410_NAND(H9_2, H9_1.Q, START, R12.2)
+
+ TTL_7400_NAND(J8_2, FREE_COIN_Q, H8_2.QQ)
+ TTL_74107(J9_2, 64V, J8_2.Q, J9_1.QQ, J8_2.Q)
+ TTL_7450_ANDORINVERT(K9_2, creditsw.Q, K8_5.Q, FREE_COIN, 2_PLAYER_MODE_Q)
+ TTL_7400_NAND(J8_1, K9_2.Q, J9_2.QQ)
+ TTL_74107(J9_1, 64V, J8_1.Q, GROUND, J8_2.Q)
+
+ TTL_7402_NOR(F9_4, END_GAME, QQ)
+ TTL_7474(D9_2, 256V, START, F9_4.Q, ATTRACT)
+ ALIAS(ATTRACT, D9_2.QQ)
+ ALIAS(ATTRACT_Q, D9_2.Q)
+
+ TTL_7402_NOR(F9_1, R11.2, R12.2)
+ TTL_7427_NOR(D8_1, J8_2.Q, CREDIT_Q, ATTRACT_Q)
+ TTL_7474(D9_1, 256V, F9_1.Q, P, D8_1.Q)
+ ALIAS(START, D9_1.QQ)
+ ALIAS(START_Q, D9_1.Q)
+
+ TTL_7474(H8_1, ATTRACT, GROUND, H9_2.Q, H9_1.Q)
+ ALIAS(2_PLAYER_MODE, H8_1.Q)
+ ALIAS(2_PLAYER_MODE_Q, H8_1.QQ)
+ TTL_7400_NAND(J8_4, 2_PLAYER_MODE, V_RAMP)
+ TTL_7400_NAND(J8_3, START, J8_4.Q)
+
+ TTL_74193(E8, P, P, P, P, QQ, E8.CARRYQ, COIN_Q, J8_3.Q)
+ TTL_7427_NOR(D8_2, E8.QB, E8.QC, E8.QD)
+ TTL_7404_INVERT(K8_4, D8_2.Q)
+ ALIAS(2_PLAYER_CREDIT, K8_4.Q)
+ TTL_7402_NOR(F9_3, E8.QA, 2_PLAYER_CREDIT)
+ ALIAS(CREDIT_Q, F9_3.Q)
+ TTL_7402_NOR(F9_2, CREDIT_Q, CREDIT_Q)
+ ALIAS(CREDIT, F9_2.Q)
+
+ /* Score Window */
+
+ TTL_7402_NOR(L1_4, 64V, 128V)
+ TTL_7410_NAND(H4_1, 16V, 32V, L1_4.Q)
+ ALIAS(V_SCORE_Q, H4_1.Q)
+
+ TTL_7486_XOR(J4_2, 32H, 256H)
+ ALIAS(32H_XOR_256H, J4_2.Q)
+
+ TTL_7486_XOR(J4_3, 128H, 256H)
+ ALIAS(128H_XOR_256H, J4_3.Q)
+
+ TTL_7486_XOR(J4_4, 64H, 256H_Q)
+ TTL_7410_NAND(H4_3, J4_3.Q, J4_2.Q, J4_4.Q)
+ ALIAS(H_SCORE_Q, H4_3.Q)
+
+ TTL_7402_NOR(J3_1, V_SCORE_Q, H_SCORE_Q)
+ ALIAS(SCORE_WINDOW, J3_1.Q)
+
+ /* Video Generation */
+
+ TTL_7400_NAND(H2_4, 8V, 32V)
+ TTL_7474(H3_2, VSYNC_Q, P, H2_4.Q, P)
+ TTL_7474(H3_1, 1V, 32V, P, H3_2.QQ)
+ TTL_7402_NOR(J3_4, H3_2.QQ, HSYNC)
+ TTL_7400_NAND(H2_3, J3_4.Q, 128H_XOR_256H)
+ TTL_7410_NAND(H4_2, 1H, H3_1.QQ, 32V)
+ ALIAS(ROAD_Q, H4_2.Q)
+
+ TTL_7402_NOR(J3_2, 256H_Q, H2_3.Q)
+ TTL_7402_NOR(J3_3, H2_3.Q, 256H)
+ TTL_7486_XOR(C8_3, PLAYER_CONTROL, 256H)
+ TTL_7450_ANDORINVERT(F3_2, RETURN_THROTTLE, J3_2.Q, J3_3.Q, FREE_PLAY)
+ TTL_7450_ANDORINVERT(F3_1, RETURN_THROTTLE_Q, J3_2.Q, FREE_PLAY_Q, J3_3.Q)
+
+ TTL_7427_NOR(K5_3, 64H, 32H_XOR_256H, V_SCORE_Q)
+ TTL_7400_NAND(F4_4, 128H_XOR_256H, K5_3.Q)
+
+ TTL_7402_NOR(D4_1, PLAYER_CONTROL, CYCLE_Q)
+ TTL_7402_NOR(D4_2, F4_4.Q, C8_3.Q)
+ TTL_7404_INVERT(D3_3, F3_2.Q)
+ TTL_7427_NOR(E4_3, D3_3.Q, D4_2.Q, D4_1.Q)
+ TTL_7410_NAND(E3_1, SCORE_1_Q, OBJECTS_Q, E4_3.Q)
+ ALIAS(WHITE_VIDEO, E3_1.Q)
+
+ TTL_7402_NOR(F4_2, PLAYER_CONTROL, CYCLE)
+ TTL_7404_INVERT(D3_1, F4_4.Q)
+ TTL_7402_NOR(F4_3, C8_3.Q, D3_1.Q)
+ TTL_7410_NAND(E3_2, F4_2.Q, F4_3.Q, F3_1.Q)
+ TTL_7400_NAND(F4_1, RAMPS_Q, ROAD_Q)
+ TTL_7427_NOR(E4_2, F4_1.Q, SCORE_2, E3_2.Q)
+ ALIAS(BLACK_VIDEO, E4_2.Q)
+
+ RES(R13, RES_K(1))
+ NET_C(R13.1, E3_1.Q)
+ RES(R14, RES_K(1))
+ NET_C(R14.1, V5)
+ RES(R15, RES_K(1))
+ NET_C(R15.1, E4_2.Q)
+ RES(R107, RES_K(1))
+
+ DIODE(D17, "1N914")
+ NET_C(D17.K, COMP_SYNC_Q)
+ NET_C(D17.A, R107.1, R13.2, R14.2, R15.2)
+
+ ALIAS(VIDEO_OUT, R107.2)
+
+ /* Horizontal movement */
+
+ TTL_7474(C2_1, SPEED_PULSES, P, C2_2.QQ, P)
+ TTL_7474(C2_2, A3_2.Q, C2_1.Q, P, P)
+ TTL_7493(C1, C2_1.Q, C1.QA, FLIP, FLIP)
+ ALIAS(MOTOR_PULSE, C1.QA)
+ ALIAS(R4, C1.QD)
+
+ TTL_7400_NAND(B2_2, DIRECTION_Q, C2_2.Q)
+ TTL_9316(C3, HF_CLOCK, P, P, H_COUNTER_RESET_Q, A3_2.Q, C2_2.Q, B2_2.Q, P, P)
+ TTL_9316(B3, HF_CLOCK, C3.RC, P, H_COUNTER_RESET_Q, A3_2.Q, GROUND, P, P, GROUND)
+ ALIAS(H1, C3.QA)
+ ALIAS(H2, C3.QB)
+ ALIAS(H3, C3.QC)
+ ALIAS(H4, C3.QD)
+ ALIAS(H5, B3.QA)
+ ALIAS(H6, B3.QB)
+ ALIAS(H7, B3.QC)
+ ALIAS(H8, B3.QD)
+
+ TTL_7408_AND(B5_3, H5, H6)
+ ALIAS(H5_AND_H6, B5_3.Q)
+
+ TTL_74107(B4_2, B3.RC, P, P, H_COUNTER_RESET_Q)
+ TTL_74107(B4_1, B4_2.Q, P, P, H_COUNTER_RESET_Q)
+
+ TTL_7410_NAND(C4_1, B4_1.QQ, B3.RC, B4_2.Q)
+ TTL_7404_INVERT(D3_6, C4_1.Q)
+ TTL_7400_NAND(A3_2, D3_6.Q, C3.RC)
+
+ TTL_7410_NAND(C4_3, B4_2.Q, H8, B4_1.Q)
+ TTL_7427_NOR(E4_1, H5_AND_H6, H7, C4_3.Q)
+ ALIAS(H_WINDOW, E4_1.Q)
+
+ TTL_7474(A4_1, H4, E4_1.Q, P, P)
+ TTL_7474(A4_2, H2, H4, A4_1.Q, P)
+ ALIAS(H_WINDOW_DELAYED, A4_1.Q)
+
+ TTL_7402_NOR(A8_4, H4, A4_2.QQ)
+ TTL_7404_INVERT(D3_4, A8_4.Q)
+ TTL_7400_NAND(B2_4, DIRECTION, D3_4.Q)
+ TTL_7400_NAND(B2_1, DIRECTION_Q, D3_4.Q)
+ ALIAS(MS_1, B2_4.Q)
+ ALIAS(MS_2, B2_1.Q)
+
+ /* Scoring, etc. logic */
+
+ TTL_7400_NAND(A3_1, C4_2.Q, CYCLE_RESET_A_Q)
+ TTL_7410_NAND(C4_2, A3_1.Q, BAD_JUMP_Q, FLIP_Q)
+ TTL_7410_NAND(D6_3, E5.QA, VRESET, 2_PLAYER_MODE_Q)
+ TTL_7474(C5_1, A3_1.Q, GROUND, D6_3.Q, COMP_SCORE_Q)
+ TTL_7400_NAND(D5_3, OUT_OF_SEQUENCE_RESET_Q, C5_1.Q)
+
+ TTL_INPUT(MISS_SW_B0, 1)
+ TTL_INPUT(MISS_SW_B1, 1)
+ TTL_INPUT(MISS_SW_B2, 1)
+ TTL_74193(E5, GROUND, MISS_SW_B0, MISS_SW_B1, MISS_SW_B2, GROUND, START_Q, P, D5_3.Q)
+ ALIAS(END_GAME_Q, E5.BORROWQ)
+
+ TTL_7408_AND(H5_4, ATTRACT_Q, 128V)
+ TTL_7474(C5_2, GOOD_JUMP_Q, MAX_SCORE_Q, H5_4.Q, P)
+
+ TTL_7402_NOR(A8_2, E5.QA, C5_2.QQ)
+ TTL_74192(B8, GROUND, GROUND, GROUND, P, GROUND, START_Q, A8_2.Q, P)
+ TTL_7474(A9_2, B8.CARRYQ, A9_2.QQ, START_Q, P)
+ TTL_7402_NOR(A8_3, A9_2.Q, B8.QD)
+ ALIAS(A, B8.QA)
+ ALIAS(B, B8.QB)
+ ALIAS(C, B8.QC)
+ ALIAS(D, B8.QD)
+ ALIAS(E, A9_2.Q)
+ ALIAS(F, A8_3.Q)
+
+ TTL_7408_AND(B5_2, E5.QA, C5_2.Q)
+ TTL_74192(B9, GROUND, GROUND, GROUND, P, GROUND, START_Q, B5_2.Q, P)
+ TTL_7474(A9_1, B9.CARRYQ, A9_1.QQ, START_Q, P)
+ TTL_7402_NOR(A8_1, A9_1.Q, B9.QD)
+ ALIAS(G, B9.QA)
+ ALIAS(H, B9.QB)
+ ALIAS(J, B9.QC)
+ ALIAS(K, B9.QD)
+ ALIAS(L, A9_1.Q)
+ ALIAS(M, A8_1.Q)
+
+ TTL_7400_NAND(D5_4, E5.QA, 2_PLAYER_MODE)
+ ALIAS(PLAYER_CONTROL_Q, D5_4.Q)
+ TTL_7404_INVERT(H6_4, PLAYER_CONTROL_Q)
+ ALIAS(PLAYER_CONTROL, H6_4.Q)
+
+ TTL_7404_INVERT(D3_2, 128V)
+ TTL_7450_ANDORINVERT(D1_1, D3_2.Q, 256H_Q, D5_4.Q, 128V)
+
+ TTL_9322(B7, D1_1.Q, A, G, B, H, D, K, C, J, GROUND)
+ TTL_9322(A7, D1_1.Q, E, L, M, F, GROUND, GROUND, GROUND, GROUND, GROUND)
+ ALIAS(S1, B7.Y1)
+ ALIAS(S2, B7.Y2)
+ ALIAS(S3, B7.Y4)
+ ALIAS(S4, B7.Y3)
+ ALIAS(S5, A7.Y1)
+ ALIAS(S6, A7.Y2)
+
+ TTL_9322(C7, 16H, S5, S1, S6, S2, GROUND, S4, GROUND, S3, GROUND)
+ TTL_7448(C6, C7.Y1, C7.Y2, C7.Y4, C7.Y3, P, SCORE_WINDOW, 16H)
+ TTL_9312(B6, 2H, 4H, 8H, C6.f, GROUND, GROUND, C6.b, C6.e, GROUND, GROUND, C6.c, 8H)
+ TTL_9312(A6, 2V, 4V, 8V, C6.a, GROUND, GROUND, C6.g, GROUND, GROUND, GROUND, C6.d, 8H)
+ TTL_7408_AND(B5_4, A6.YQ, B6.YQ)
+ TTL_7474(A5_1, CLOCK, B5_4.Q, P, P)
+ ALIAS(COMP_SCORE_Q, A5_1.Q)
+
+ TTL_7400_NAND(M7_2, 128H, A5_1.QQ)
+ ALIAS(SCORE_1_Q, M7_2.Q)
+
+ TTL_7402_NOR(K6_1, A5_1.Q, 128H)
+ ALIAS(SCORE_2, K6_1.Q)
+
+ PROM_82S123(d7, GROUND, S1, S2, S3, S4, S5)
+ ALIAS(MAX_SCORE_Q, d7.O6)
+
+ TTL_7410_NAND(D6_1, 256H_Q, 128H, 128H)
+ TTL_7427_NOR(D8_3, 64H, 32H, D6_1.Q)
+ TTL_7486_XOR(C8_2, D6_1.Q, d7.O5)
+ ALIAS(FIXED_RAMP_ZONE, D8_3.Q)
+
+ TTL_INPUT(FREESCORE_SW_B0, 0)
+ TTL_INPUT(FREESCORE_SW_B1, 0)
+ TTL_INPUT(FREESCORE_SW_B2, 0)
+ TTL_INPUT(FREESCORE_SW_B3, 1)
+ TTL_7402_NOR(K6_4, d7.O5, OBJECT_ZONE_Q)
+ TTL_7485(E6, d7.O1, d7.O2, d7.O3, d7.O4, 8H, 16H, 32H, 64H, GROUND, C8_2.Q, GROUND)
+ TTL_7485(E7, d7.O1, d7.O2, d7.O3, d7.O4, FREESCORE_SW_B0, FREESCORE_SW_B1, FREESCORE_SW_B2, FREESCORE_SW_B3, GROUND, K6_4.Q, GROUND)
+ ALIAS(FREE_GAME, E7.EQOUT)
+
+ TTL_7474(F6_1, CLOCK_Q, E6.EQOUT, 128H_XOR_256H, P)
+ TTL_9316(H7, 1H, H6_1.Q, P, P, F6_1.QQ, P, P, GROUND, GROUND)
+ TTL_7404_INVERT(H6_1, H7.RC)
+ TTL_7474(A5_2, H7.RC, P, HRESET_Q, P)
+ TTL_7474(J7_1, H_WINDOW, A5_2.QQ, BAD_JUMP_Q, P)
+ TTL_7474(K7_1, JUMP_Q, J7_1.Q, CYCLE_RESET_A_Q, P)
+ TTL_7474(K7_2, JUMP_Q, J7_1.QQ, CYCLE_RESET_A_Q, OBJECT_HIT_Q)
+ ALIAS(GOOD_JUMP, K7_1.Q)
+ ALIAS(GOOD_JUMP_Q, K7_1.QQ)
+ ALIAS(BAD_JUMP, K7_2.Q)
+ ALIAS(BAD_JUMP_Q, K7_2.QQ)
+
+ TTL_7404_INVERT(H6_2, FIXED_RAMP_ZONE)
+ TTL_7474(J7_2, H6_2.Q, V_RAMP, H7.RC, P)
+ ALIAS(OBJECT_ZONE, J7_2.Q)
+ ALIAS(OBJECT_ZONE_Q, J7_2.QQ)
+ ALIAS(FIXED_RAMP_ZONE_Q, H6_2.Q)
+
+ TTL_7408_AND(H5_3, F6_1.QQ, H7.RC)
+ TTL_7408_AND(H5_1, FIXED_RAMP_ZONE_Q, H7.RC)
+
+ TTL_7486_XOR(M2_2, 1V, H5_3.Q)
+ TTL_7486_XOR(M2_4, 2V, H5_3.Q)
+ TTL_7486_XOR(M2_1, 4V, H5_3.Q)
+
+ TTL_7493(N1, 2H, N1.QA, H5_1.Q, H5_1.Q)
+ TTL_7485(N2, M2_2.Q, M2_4.Q, M2_1.Q, GROUND, N1.QA, N1.QB, N1.QC, N1.QD, GROUND, GROUND, GROUND)
+ TTL_7486_XOR(M2_3, N2.GTOUT, H5_3.Q)
+ TTL_7400_NAND(L2_1, 16V, 64V)
+ TTL_7402_NOR(L1_1, L2_1.Q, 32V)
+ TTL_7400_NAND(L2_4, CYCLE_RESET, VRESET)
+ TTL_7410_NAND(E3_3, 8V, 128V, L1_1.Q)
+ TTL_7404_INVERT(N3_4, E3_3.Q)
+ TTL_7474(M1_1, 8V, L1_1.Q, L2_4.Q, M1_1.QQ)
+ TTL_7474(M1_2, 1H, M2_3.Q, V_RAMP, P)
+ TTL_7400_NAND(L2_2, M1_1.QQ, L1_1.Q)
+ TTL_7402_NOR(L1_2, H5_1.Q, M1_2.QQ)
+ ALIAS(V_RAMP, N3_4.Q)
+ ALIAS(V_RAMP_Q, E3_3.Q)
+ ALIAS(V_COUNTER_RESET_Q, L2_2.Q)
+ ALIAS(RAMPS, L1_2.Q)
+
+ TTL_7402_NOR(L1_3, RAMPS, RAMPS)
+ ALIAS(RAMPS_Q, L1_3.Q)
+
+ TTL_7400_NAND(D5_1, FIXED_RAMP_ZONE_Q, D5_2.Q)
+ TTL_7400_NAND(D5_2, CYCLE_RESET_Q, D5_1.Q)
+ ALIAS(H_COUNTER_RESET_Q, D5_1.Q)
+
+ TTL_7404_INVERT(H6_6, END_GAME_Q)
+ ALIAS(END_GAME, H6_6.Q)
+
+ TTL_7404_INVERT(K8_1, RETURN_THROTTLE)
+ ALIAS(RETURN_THROTTLE_Q, K8_1.Q)
+
+ /* Controls */
+
+ CLOCK(SPEED_PULSES, 1000) // FIXME: Should be output of a 566 VCO
+ TTL_INPUT(R38_2, 0) // FIXME: Should be output of the resistor connected to LM747 L10_1
+ TTL_INPUT(R39_2, 0) // FIXME: Should be output of the resistor connected to LM747 L10_2
+
+ // FIXME: Hack
+ TTL_7400_NAND(N5_4, SPEED_KILL_Q, CYCLE_RESET_Q)
+ TTL_7410_NAND(M5_2, P, ATTRACT_Q, N5_4.Q)
+ ALIAS(SPEED_KILL_Q, M5_2.Q)
+
+ TTL_7402_NOR(K6_2, CYCLE_RESET, SPEED_KILL_Q)
+ ALIAS(RETURN_THROTTLE, K6_2.Q)
+
+ TTL_7408_AND(N8_1, CYCLE_WINDOW, RAMPS)
+ ALIAS(RAMPS_AND_CYCLE_WINDOW, N8_1.Q)
+
+ TTL_7400_NAND(M7_1, OBJECT_ZONE, CYCLE)
+ ALIAS(OBJECT_HIT_Q, M7_1.Q)
+
+ TTL_7400_NAND(N9_2, FIXED_RAMP_ZONE, RAMPS_AND_CYCLE_WINDOW)
+ TTL_7408_AND(N8_4, OBJECT_HIT_Q, N9_2.Q)
+ ALIAS(LOAD_Q, N8_4.Q)
+
+ RES(R106, 330)
+ CAP(C57, CAP_P(220))
+ NET_C(R106.1, LOAD_Q)
+ NET_C(R106.2, C57.1)
+ NET_C(C57.2, GND)
+
+ TTL_7400_NAND(N9_4, R106.2, N9_1.Q)
+ TTL_7400_NAND(N9_1, MS_3, N9_4.Q)
+ ALIAS(JUMP, N9_4.Q)
+ ALIAS(JUMP_Q, N9_1.Q)
+
+ TTL_7400_NAND(N9_3, JUMP, BAD_JUMP_Q)
+
+ TTL_7400_NAND(L9_1, R39_2, BAD_JUMP_Q)
+ TTL_7400_NAND(L9_2, BAD_JUMP, 64V)
+ TTL_7420_NAND(M9_1, R38_2, GRAVITY, BAD_JUMP_Q, SPEED_KILL_Q)
+ TTL_7420_NAND(M9_2, L9_2.Q, SPEED_KILL_Q, L9_1.Q, GRAVITY)
+
+ TTL_7408_AND(L6_4, H_WINDOW_DELAYED, V_WINDOW)
+ ALIAS(CYCLE_WINDOW, L6_4.Q)
+
+ TTL_7474(N7_2, V_RAMP_Q, V_WINDOW, P, CYCLE_RESET_A_Q)
+ ALIAS(MS_3, N7_2.QQ)
+
+ TTL_7408_AND(N8_3, M8.QD, N7_2.Q)
+ ALIAS(SFX_CRASH, N8_3.Q)
+
+ TTL_7400_NAND(M7_4, MS_3, M8.BORROWQ)
+ TTL_7400_NAND(L9_4, BAD_JUMP_Q, M7_4.Q)
+ TTL_7400_NAND(L9_3, CYCLE_RESET_Q, L9_4.Q)
+ TTL_74193(M8, P, P, GROUND, GROUND, L9_3.Q, N9_3.Q, M9_1.Q, M9_2.Q)
+ ALIAS(R2, M8.QB)
+ ALIAS(R3, M8.QC)
+
+ TTL_74193(L8, FIXED_RAMP_ZONE_Q, FIXED_RAMP_ZONE, GROUND, GROUND, JUMP_Q, LOAD_Q, P, GRAVITY) // Schematics say C and D should be to VCC?
+ ALIAS(Av, L8.QA)
+ ALIAS(Bv, L8.QB)
+ ALIAS(Cv, L8.QC)
+
+ TTL_7404_INVERT(K8_3, L8.QD)
+ ALIAS(Dv, K8_3.Q)
+
+ TTL_7400_NAND(M6_1, JUMP_Q, FLIP)
+ TTL_7408_AND(N8_2, R2, R3)
+ TTL_7474(N7_1, VRESET_Q, N8_2.Q, CYCLE_RESET_Q, FLIP_Q)
+ ALIAS(FLIP, N7_1.Q)
+ ALIAS(FLIP_Q, N7_1.QQ)
+
+ TTL_7402_NOR(L7_4, BAD_JUMP, FLIP_Q)
+ ALIAS(SFX_SCREECH, L7_4.Q)
+
+ TTL_7402_NOR(L7_3, FLIP, JUMP)
+ ALIAS(FLIP_OR_JUMP_Q, L7_3.Q)
+
+ TTL_7402_NOR(L7_2, FLIP, RAMPS_AND_CYCLE_WINDOW)
+ TTL_7402_NOR(L7_1, BAD_JUMP, L7_2.Q)
+
+ TTL_7493(L5, VRESET_Q, L5.QA, L7_1.Q, L7_1.Q)
+ TTL_7474(F6_2, HSYNC_Q, L5.QD, BAD_JUMP_Q, P)
+ TTL_7408_AND(L6_3, L5.QD, F6_2.QQ)
+ ALIAS(GRAVITY, L6_3.Q)
+
+ TTL_7427_NOR(K5_1, 2V, L5.QA, 32V)
+ ALIAS(SFX_BOUNCE_SOUND, K5_1.Q)
+
+ TTL_7400_NAND(M7_3, MS_3, BAD_JUMP_Q)
+ TTL_7410_NAND(M5_1, M7_3.Q, HRESET, CYCLE)
+ TTL_7427_NOR(K5_2, 16V, HSYNC, 128V)
+ TTL_7400_NAND(M6_3, CYCLE, K5_2.Q)
+ ALIAS(OUT_OF_SEQUENCE_RESET_Q, M6_3.Q)
+
+ TTL_7408_AND(L6_1, M5_1.Q, OUT_OF_SEQUENCE_RESET_Q)
+ TTL_7400_NAND(M6_4, SFX_SCREECH, JUMP)
+ TTL_7408_AND(L6_2, L6_1.Q, M6_4.Q)
+
+ RES(R40, RES_K(47))
+ RES(R41, RES_K(2.2))
+ RES(R42, RES_K(2.2))
+ RES(R43, RES_K(47))
+ CAP(C12, CAP_U(100))
+ CAP(C13, CAP_P(470))
+ CAP(C14, CAP_U(1))
+ TTL_9602_DIP(N6)
+ ALIAS(CYCLE_RESET, N6.9)
+ ALIAS(CYCLE_RESET_Q, N6.10)
+ ALIAS(FLIP_TIMER_Q, N6.7)
+
+ NET_C(R40.1, V5)
+ NET_C(R41.1, V5)
+ NET_C(R42.2, GND)
+ NET_C(R43.1, V5)
+ NET_C(C14.1, R43.2)
+ NET_C(C12.1, R40.2)
+ NET_C(C13.2, R41.2, R42.1)
+ NET_C(N6.4, BAD_JUMP)
+ NET_C(N6.5, M6_1.Q)
+ NET_C(N6.1, C12.2)
+ NET_C(N6.2, R40.2)
+ NET_C(N6.3, N6.9)
+ NET_C(N6.6, C13.1)
+ NET_C(N6.15, C14.2)
+ NET_C(N6.14, R43.2)
+ NET_C(N6.13, P)
+ NET_C(N6.11, L6_2.Q)
+
+ TTL_7400_NAND(M6_2, START_Q, R42.1)
+ NET_C(N6.12, M6_2.Q)
+
+ TTL_7404_INVERT(K8_2, CYCLE_RESET)
+ ALIAS(CYCLE_RESET_A_Q, K8_2.Q)
+#endif
+NETLIST_END()
diff --git a/src/mame/machine/nl_stuntcyc.h b/src/mame/machine/nl_stuntcyc.h
new file mode 100644
index 00000000000..71fd5bfbb7a
--- /dev/null
+++ b/src/mame/machine/nl_stuntcyc.h
@@ -0,0 +1,4 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+
+NETLIST_EXTERNAL(stuntcyc)
diff --git a/src/mame/nl.lst b/src/mame/nl.lst
index ddd06391742..9058e996083 100644
--- a/src/mame/nl.lst
+++ b/src/mame/nl.lst
@@ -36,6 +36,7 @@ pong // (c) 1972 Atari
pongd // (c) 1975 Atari
pongf // (c) 1972 Atari
breakout // (c) 1976 Atari
+stuntcyc // (c) 1976 Atari
@source:m62.cpp
battroad // (c) 1984
@@ -62,3 +63,4 @@ yanchamr // (c) 1986 (Japan)
youjyudn // (c) 1986 (Japan)
hazl1500
+