From e2231ddcd2e25bab530952a7c1dad501c4480dac Mon Sep 17 00:00:00 2001 From: Ryan Holtz Date: Sun, 16 Aug 2020 20:04:18 +0200 Subject: [PATCH] -atarittl: Added netlist for Tank. currently runs at about 0.005% of full speed, unsure why. --- scripts/src/netlist.lua | 6 + scripts/target/mame/arcade.lua | 2 + src/lib/netlist/build/makefile | 2 + src/lib/netlist/devices/net_lib.cpp | 5 + src/lib/netlist/devices/net_lib.h | 2 + src/lib/netlist/devices/nld_74193.cpp | 2 +- src/lib/netlist/devices/nld_8277.cpp | 204 +++ src/lib/netlist/devices/nld_8277.h | 27 + src/lib/netlist/devices/nld_9321.cpp | 103 ++ src/lib/netlist/devices/nld_9321.h | 16 + src/lib/netlist/devices/nld_devinc.h | 38 + src/lib/netlist/devices/nld_roms.cpp | 85 +- src/lib/netlist/devices/nld_roms.h | 4 + src/lib/netlist/macro/nlm_roms_lib.cpp | 47 + src/lib/netlist/macro/nlm_roms_lib.h | 3 + src/lib/netlist/macro/nlm_ttl74xx_lib.cpp | 27 + src/lib/netlist/macro/nlm_ttl74xx_lib.h | 3 + src/mame/audio/nl_flyball.cpp | 5 +- src/mame/drivers/atarittl.cpp | 127 +- src/mame/machine/nl_stuntcyc.h | 6 + src/mame/machine/nl_tank.cpp | 1920 +++++++++++++++++++++ src/mame/machine/nl_tank.h | 12 + 22 files changed, 2593 insertions(+), 53 deletions(-) create mode 100644 src/lib/netlist/devices/nld_8277.cpp create mode 100644 src/lib/netlist/devices/nld_8277.h create mode 100644 src/lib/netlist/devices/nld_9321.cpp create mode 100644 src/lib/netlist/devices/nld_9321.h create mode 100644 src/mame/machine/nl_tank.cpp create mode 100644 src/mame/machine/nl_tank.h diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua index b19928aa464..7e3b1c3c8e5 100644 --- a/scripts/src/netlist.lua +++ b/scripts/src/netlist.lua @@ -219,9 +219,13 @@ project "netlist" MAME_DIR .. "src/lib/netlist/devices/nld_82S16.h", MAME_DIR .. "src/lib/netlist/devices/nld_82S115.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_82S115.h", + MAME_DIR .. "src/lib/netlist/devices/nld_8277.cpp", + MAME_DIR .. "src/lib/netlist/devices/nld_8277.h", MAME_DIR .. "src/lib/netlist/devices/nld_9310.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_9316.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_9316.h", + MAME_DIR .. "src/lib/netlist/devices/nld_9321.cpp", + MAME_DIR .. "src/lib/netlist/devices/nld_9321.h", MAME_DIR .. "src/lib/netlist/devices/nld_9322.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_9322.h", MAME_DIR .. "src/lib/netlist/devices/nld_am2847.cpp", @@ -230,6 +234,8 @@ project "netlist" MAME_DIR .. "src/lib/netlist/devices/nld_dm9314.h", MAME_DIR .. "src/lib/netlist/devices/nld_dm9334.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_dm9334.h", + MAME_DIR .. "src/lib/netlist/devices/nld_9321.cpp", + MAME_DIR .. "src/lib/netlist/devices/nld_9321.h", MAME_DIR .. "src/lib/netlist/devices/nld_ne555.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_ne555.h", MAME_DIR .. "src/lib/netlist/devices/nld_mm5837.cpp", diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 0dbf379b2b4..463fa59af58 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -1138,6 +1138,8 @@ files { MAME_DIR .. "src/mame/machine/nl_gtrak10.h", MAME_DIR .. "src/mame/machine/nl_stuntcyc.cpp", MAME_DIR .. "src/mame/machine/nl_stuntcyc.h", + MAME_DIR .. "src/mame/machine/nl_tank.cpp", + MAME_DIR .. "src/mame/machine/nl_tank.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/src/lib/netlist/build/makefile b/src/lib/netlist/build/makefile index 2c4dff9bae7..7e90e7bb645 100644 --- a/src/lib/netlist/build/makefile +++ b/src/lib/netlist/build/makefile @@ -189,10 +189,12 @@ NLOBJS := \ $(NLOBJ)/devices/nld_74377.o \ $(NLOBJ)/devices/nld_74393.o \ $(NLOBJ)/devices/nld_74ls629.o \ + $(NLOBJ)/devices/nld_8277.o \ $(NLOBJ)/devices/nld_82S16.o \ $(NLOBJ)/devices/nld_82S115.o \ $(NLOBJ)/devices/nld_9310.o \ $(NLOBJ)/devices/nld_9316.o \ + $(NLOBJ)/devices/nld_9321.o \ $(NLOBJ)/devices/nld_9322.o \ $(NLOBJ)/devices/nld_am2847.o \ $(NLOBJ)/devices/nld_dm9314.o \ diff --git a/src/lib/netlist/devices/net_lib.cpp b/src/lib/netlist/devices/net_lib.cpp index ef88713b556..a4f8cba1f59 100644 --- a/src/lib/netlist/devices/net_lib.cpp +++ b/src/lib/netlist/devices/net_lib.cpp @@ -73,6 +73,7 @@ namespace devices #if !(NL_USE_TRUTHTABLE_7448) LIB_ENTRY(7448) #endif + LIB_ENTRY(MK28000) LIB_ENTRY(7450) LIB_ENTRY(7473) LIB_ENTRY(7473A) @@ -117,9 +118,12 @@ namespace devices LIB_ENTRY(82S123) LIB_ENTRY(82S126) LIB_ENTRY(74S287) + LIB_ENTRY(8277) LIB_ENTRY(9310) LIB_ENTRY(9314) LIB_ENTRY(9316) + LIB_ENTRY(9321_GATE) + LIB_ENTRY(9321) LIB_ENTRY(9322_GATE) LIB_ENTRY(9322) LIB_ENTRY(9334) @@ -153,6 +157,7 @@ namespace devices LIB_ENTRY(74193_dip) LIB_ENTRY(74194_dip) LIB_ENTRY(74365_dip) + LIB_ENTRY(8277_dip) LIB_ENTRY(9602) LIB_ENTRY(9314_dip) LIB_ENTRY(9334_dip) diff --git a/src/lib/netlist/devices/net_lib.h b/src/lib/netlist/devices/net_lib.h index a891b8f1b0b..ccae6fa0175 100644 --- a/src/lib/netlist/devices/net_lib.h +++ b/src/lib/netlist/devices/net_lib.h @@ -79,10 +79,12 @@ NETLIST_EXTERNAL(base_lib) #include "nld_82S115.h" #include "nld_82S16.h" #include "nld_9316.h" +#include "nld_9321.h" #include "nld_9322.h" #include "nld_tms4800.h" #include "nld_am2847.h" +#include "nld_8277.h" #include "nld_dm9314.h" #include "nld_dm9334.h" diff --git a/src/lib/netlist/devices/nld_74193.cpp b/src/lib/netlist/devices/nld_74193.cpp index 40ea170087b..054f0462bdd 100644 --- a/src/lib/netlist/devices/nld_74193.cpp +++ b/src/lib/netlist/devices/nld_74193.cpp @@ -166,7 +166,7 @@ namespace netlist NETLIB_SUB(74193) A; }; - NETLIB_DEVICE_IMPL(74193, "TTL_74193", "+A,+B,+C,+D,+CLEAR,+LOADQ,+CU,+CD,@VCC,@GND") + NETLIB_DEVICE_IMPL(74193, "TTL_74193", "+A,+B,+C,+D,+CLEAR,+LOADQ,+CU,+CD,@VCC,@GND") NETLIB_DEVICE_IMPL(74193_dip, "TTL_74193_DIP", "") } //namespace devices diff --git a/src/lib/netlist/devices/nld_8277.cpp b/src/lib/netlist/devices/nld_8277.cpp new file mode 100644 index 00000000000..5de59b2e50c --- /dev/null +++ b/src/lib/netlist/devices/nld_8277.cpp @@ -0,0 +1,204 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +/* + * nld_8277.cpp + * + * 8277: Dual 8-Bit Shift Register + * + * +--------------+ + * RESET |1 ++ 16| VCC + * /Q7A |2 15| /Q7B + * Q7A |3 14| Q7B + * DSA |4 8277 13| DSB + * D1A |5 12| D1B + * D0A |6 11| D0B + * CLKA |7 10| CLKB + * GND |8 9| CLK + * +--------------+ + * + */ + +#include "nld_8277.h" +#include "netlist/nl_base.h" + +namespace netlist +{ + namespace devices + { + NETLIB_OBJECT(8277_shifter) + { + NETLIB_CONSTRUCTOR(8277_shifter) + , m_D0(*this, "D0", NETLIB_DELEGATE(inputs)) + , m_D1(*this, "D1", NETLIB_DELEGATE(inputs)) + , m_DS(*this, "DS", NETLIB_DELEGATE(inputs)) + , m_buffer(*this, "m_buffer", 0) + , m_Q7(*this, "Q7") + , m_Q7Q(*this, "Q7Q") + , m_power_pins(*this) + { + } + + public: + void reset_shifter() noexcept + { + m_buffer = 0; + m_Q7.push(0, NLTIME_FROM_NS(40)); + m_Q7Q.push(1, NLTIME_FROM_NS(40)); + } + + void shift() noexcept + { + uint32_t in = (m_DS() ? m_D1() : m_D0()); + m_buffer <<= 1; + m_buffer |= in; + uint32_t out = (m_buffer >> 7) & 1; + uint32_t outq = (~m_buffer >> 7) & 1; + m_Q7.push(out, NLTIME_FROM_NS(40)); + m_Q7Q.push(outq, NLTIME_FROM_NS(40)); + } + + logic_input_t m_D0; + logic_input_t m_D1; + logic_input_t m_DS; + + state_var m_buffer; + + logic_output_t m_Q7; + logic_output_t m_Q7Q; + nld_power_pins m_power_pins; + private: + NETLIB_HANDLERI(inputs) + { + /* do nothing */ + } + }; + + NETLIB_OBJECT(8277) + { + NETLIB_CONSTRUCTOR(8277) + , m_A(*this, "A") + , m_B(*this, "B") + , m_RESET(*this, "RESET", NETLIB_DELEGATE(shifter_reset)) + , m_CLK(*this, "CLK", NETLIB_DELEGATE(clk)) + , m_CLKA(*this, "CLKA", NETLIB_DELEGATE(clka)) + , m_CLKB(*this, "CLKB", NETLIB_DELEGATE(clkb)) + , m_last_CLK(*this, "m_last_CLK", 0) + , m_last_CLKA(*this, "m_last_CLKA", 0) + , m_last_CLKB(*this, "m_last_CLKB", 0) + // FIXME: needs family! + { + register_subalias("RESET", m_RESET); + register_subalias("CLK", m_CLK); + register_subalias("CLKA", m_CLKA); + register_subalias("CLKB", m_CLKB); + register_subalias("D0A", m_A.m_D0); + register_subalias("D1A", m_A.m_D1); + register_subalias("DSA", m_A.m_DS); + register_subalias("Q7A", m_A.m_Q7); + register_subalias("Q7QA", m_A.m_Q7Q); + register_subalias("D0B", m_B.m_D0); + register_subalias("D1B", m_B.m_D1); + register_subalias("DSB", m_B.m_DS); + register_subalias("Q7B", m_B.m_Q7); + register_subalias("Q7QB", m_B.m_Q7Q); + + connect("A.VCC", "B.VCC"); + connect("A.GND", "B.GND"); + + register_subalias("VCC", "A.VCC"); + register_subalias("GND", "A.GND"); + } + + NETLIB_RESETI() + { + m_last_CLK = 0; + m_last_CLKA = 0; + m_last_CLKB = 0; + } + + friend class NETLIB_NAME(8277_dip); + private: + NETLIB_HANDLERI(shifter_reset) + { + if (!m_RESET()) + { + m_A.reset_shifter(); + m_B.reset_shifter(); + } + } + + NETLIB_HANDLERI(clk) + { + if (!m_last_CLK && m_CLK()) + { + m_A.shift(); + m_B.shift(); + } + m_last_CLK = m_CLK(); + m_last_CLKA = m_CLKA(); + m_last_CLKB = m_CLKB(); + } + + NETLIB_HANDLERI(clka) + { + if (!m_last_CLKA && m_CLKA()) + { + m_A.shift(); + } + m_last_CLKA = m_CLKA(); + } + + NETLIB_HANDLERI(clkb) + { + if (!m_last_CLKB && m_CLKB()) + { + m_B.shift(); + } + m_last_CLKB = m_CLKB(); + } + + NETLIB_SUB(8277_shifter) m_A; + NETLIB_SUB(8277_shifter) m_B; + logic_input_t m_RESET; + logic_input_t m_CLK; + logic_input_t m_CLKA; + logic_input_t m_CLKB; + + state_var m_last_CLK; + state_var m_last_CLKA; + state_var m_last_CLKB; + }; + + NETLIB_OBJECT(8277_dip) + { + NETLIB_CONSTRUCTOR(8277_dip) + , A(*this, "A") + { + register_subalias("1", A.m_RESET); + register_subalias("2", A.m_A.m_Q7Q); + register_subalias("3", A.m_A.m_Q7); + register_subalias("4", A.m_A.m_DS); + register_subalias("5", A.m_A.m_D1); + register_subalias("6", A.m_A.m_D0); + register_subalias("7", A.m_CLKA); + register_subalias("8", "A.GND"); + + register_subalias("9", A.m_CLK); + register_subalias("10", A.m_CLKB); + register_subalias("11", A.m_B.m_D0); + register_subalias("12", A.m_B.m_D1); + register_subalias("13", A.m_B.m_DS); + register_subalias("14", A.m_B.m_Q7); + register_subalias("15", A.m_B.m_Q7Q); + register_subalias("16", "A.VCC"); + } + //NETLIB_RESETI() {} + private: + NETLIB_SUB(8277) A; + }; + + NETLIB_DEVICE_IMPL(8277, "TTL_8277", "+RESET,+CLK,+CLKA,+D0A,+D1A,+DSA,+CLKB,+D0B,+D1B,+DSB,@VCC,@GND") + NETLIB_DEVICE_IMPL(8277_dip, "TTL_8277_DIP", "") + + } //namespace devices +} // namespace netlist \ No newline at end of file diff --git a/src/lib/netlist/devices/nld_8277.h b/src/lib/netlist/devices/nld_8277.h new file mode 100644 index 00000000000..537e5b018f5 --- /dev/null +++ b/src/lib/netlist/devices/nld_8277.h @@ -0,0 +1,27 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#ifndef NLD_8277_H_ +#define NLD_8277_H_ + +#include "netlist/nl_setup.h" + +#define TTL_8277(name, cRESET, cCLK, cCLKA, cD0A, cD1A, cDSA, cCLKB, cD0B, cD1B, cDSB) \ + NET_REGISTER_DEV(TTL_8277, name) \ + NET_CONNECT(name, VCC, VCC) \ + NET_CONNECT(name, GND, GND) \ + NET_CONNECT(name, RESET, cRESET) \ + NET_CONNECT(name, CLK, cCLK) \ + NET_CONNECT(name, CLKA, cCLKA) \ + NET_CONNECT(name, CLKB, cCLKB) \ + NET_CONNECT(name, D0A, cD0A) \ + NET_CONNECT(name, D0B, cD0B) \ + NET_CONNECT(name, D1A, cD1A) \ + NET_CONNECT(name, D1B, cD1B) \ + NET_CONNECT(name, DSA, cDSA) \ + NET_CONNECT(name, DSB, cDSB) + +#define TTL_8277_DIP(name) \ + NET_REGISTER_DEV(TTL_8277_DIP, name) + +#endif /* NLD_2877_H_ */ \ No newline at end of file diff --git a/src/lib/netlist/devices/nld_9321.cpp b/src/lib/netlist/devices/nld_9321.cpp new file mode 100644 index 00000000000..793dc3b0cd2 --- /dev/null +++ b/src/lib/netlist/devices/nld_9321.cpp @@ -0,0 +1,103 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +/* + * nld_9321.cpp + * + * 9321: Dual One-of-Four Decoder + * + * +------------+ + * /E |1 ++ 16| VCC + * A0 |2 15| /E + * A1 |3 14| A0 + * /D0 |4 9321 13| A1 + * /D1 |5 12| /D0 + * /D2 |6 11| /D1 + * /D3 |7 10| /D2 + * GND |8 9| /D3 + * +------------+ + * + */ + +#include "nld_9321.h" +#include "netlist/nl_base.h" + +namespace netlist +{ + namespace devices + { + class NETLIB_NAME(9321); + + NETLIB_OBJECT(9321_GATE) + { + NETLIB_CONSTRUCTOR(9321_GATE) + , m_enable(*this, "m_enable", true) + , m_o(*this, "m_o", 0) + , m_A(*this, 0, "A{}", NETLIB_DELEGATE(in)) + , m_D(*this, 0, "D{}") + , m_E(*this, "E", NETLIB_DELEGATE(e)) + , m_power_pins(*this) + { + } + + NETLIB_HANDLERI(in) + { + m_o = (m_A[1]() << 1) | m_A[0](); + for (std::size_t i=0; i<4; i++) + m_D[i].push((i == m_o && m_enable) ? 0 : 1, NLTIME_FROM_NS(21)); + } + + NETLIB_HANDLERI(e) + { + m_enable = m_E(); + for (std::size_t i=0; i<4; i++) + m_D[i].push((i == m_o && m_enable) ? 0 : 1, NLTIME_FROM_NS(18)); + } + + public: + state_var m_enable; + state_var m_o; + object_array_t m_A; + object_array_t m_D; + logic_input_t m_E; + nld_power_pins m_power_pins; + }; + + NETLIB_OBJECT(9321) + { + NETLIB_CONSTRUCTOR(9321) + , m_A(*this, "A") + , m_B(*this, "B") + { + register_subalias("AE1", m_A.m_E); + register_subalias("BE1", m_B.m_E); + register_subalias("AA0", m_A.m_A[0]); + register_subalias("BA0", m_B.m_A[0]); + register_subalias("AA1", m_A.m_A[1]); + register_subalias("BA1", m_B.m_A[1]); + register_subalias("AD0", m_A.m_D[0]); + register_subalias("BD0", m_B.m_D[0]); + register_subalias("AD1", m_A.m_D[1]); + register_subalias("BD1", m_B.m_D[1]); + register_subalias("AD2", m_A.m_D[2]); + register_subalias("BD2", m_B.m_D[2]); + register_subalias("AD3", m_A.m_D[3]); + register_subalias("BD3", m_B.m_D[3]); + + connect("A.VCC", "B.VCC"); + connect("A.GND", "B.GND"); + + register_subalias("GND", "A.GND"); + register_subalias("VCC", "B.VCC"); + } + + friend class NETLIB_NAME(9321_dip); + private: + NETLIB_SUB(9321_GATE) m_A; + NETLIB_SUB(9321_GATE) m_B; + }; + + NETLIB_DEVICE_IMPL(9321_GATE, "TTL_9321_GATE", "") + NETLIB_DEVICE_IMPL(9321, "TTL_9321", "+SELECT,+A1,+B1,+A2,+B2,+A3,+B3,+A4,+B4,+STROBE,@VCC,@GND") + + } //namespace devices +} // namespace netlist \ No newline at end of file diff --git a/src/lib/netlist/devices/nld_9321.h b/src/lib/netlist/devices/nld_9321.h new file mode 100644 index 00000000000..1a3c0acba8a --- /dev/null +++ b/src/lib/netlist/devices/nld_9321.h @@ -0,0 +1,16 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#ifndef NLD_9321_H_ +#define NLD_9321_H_ + +#include "netlist/nl_setup.h" + +#define TTL_9321_GATE(...) \ + NET_REGISTER_DEVEXT(TTL_9321_GATE, __VA_ARGS__) + +// usage: TTL_9321(name, cAE, cA0, cA1, cBE, cB0, cB1) +#define TTL_9321(...) \ + NET_REGISTER_DEVEXT(TTL_9321, __VA_ARGS__) + +#endif /* NLD_9321_H_ */ \ No newline at end of file diff --git a/src/lib/netlist/devices/nld_devinc.h b/src/lib/netlist/devices/nld_devinc.h index cc017f1f4e7..1a1e7d2865f 100644 --- a/src/lib/netlist/devices/nld_devinc.h +++ b/src/lib/netlist/devices/nld_devinc.h @@ -236,6 +236,14 @@ #define EPROM_2716(...) \ NET_REGISTER_DEVEXT(EPROM_2716, __VA_ARGS__) +// --------------------------------------------------------------------- +// Source: src/lib/netlist/devices/nld_roms.cpp +// --------------------------------------------------------------------- +// usage : PROM_MK28000(name, pOE1, pOE2, pAR, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pA9, pA10, pA11) +// auto connect: VCC, GND +#define PROM_MK28000(...) \ + NET_REGISTER_DEVEXT(PROM_MK28000, __VA_ARGS__) + // --------------------------------------------------------------------- // Source: src/lib/netlist/devices/nld_7448.cpp // --------------------------------------------------------------------- @@ -568,6 +576,13 @@ #define TTL_9316(...) \ NET_REGISTER_DEVEXT(TTL_9316, __VA_ARGS__) +// --------------------------------------------------------------------- +// Source: src/lib/netlist/devices/nld_9321.cpp +// --------------------------------------------------------------------- +// usage: TTL_9321(name, cAE, cA0, cA1, cBE, cB0, cB1) +#define TTL_9321(...) \ + NET_REGISTER_DEVEXT(TTL_9321, __VA_ARGS__) + // --------------------------------------------------------------------- // Source: src/lib/netlist/devices/nld_9322.cpp // --------------------------------------------------------------------- @@ -661,6 +676,14 @@ #define CD4538(...) \ NET_REGISTER_DEVEXT(CD4538, __VA_ARGS__) +// --------------------------------------------------------------------- +// Source: src/lib/netlist/devices/nld_8277.cpp +// --------------------------------------------------------------------- +// usage : TTL_8277(name, pRESET, pCLK, pCLKA, pD0A, pD1A, pDSA, pCLKB, pD0B, pD1B, pDSB) +// auto connect: VCC, GND +#define TTL_8277(...) \ + NET_REGISTER_DEVEXT(TTL_8277, __VA_ARGS__) + // --------------------------------------------------------------------- // Source: src/lib/netlist/devices/nld_schmitt.cpp // --------------------------------------------------------------------- @@ -780,6 +803,13 @@ #define TTL_AM2847_DIP(...) \ NET_REGISTER_DEVEXT(TTL_AM2847_DIP, __VA_ARGS__) +// --------------------------------------------------------------------- +// Source: src/lib/netlist/devices/nld_8277.cpp +// --------------------------------------------------------------------- +// usage : TTL_8277_DIP(name) +#define TTL_8277_DIP(...) \ + NET_REGISTER_DEVEXT(TTL_8277_DIP, __VA_ARGS__) + // --------------------------------------------------------------------- // Source: src/lib/netlist/devices/nld_mm5837.cpp // --------------------------------------------------------------------- @@ -1228,6 +1258,10 @@ #define TTL_9316_DIP(...) \ NET_REGISTER_DEVEXT(TTL_9316_DIP, __VA_ARGS__) +// usage : TTL_9321_DIP(name) +#define TTL_9321_DIP(...) \ + NET_REGISTER_DEVEXT(TTL_9321_DIP, __VA_ARGS__) + // usage : TTL_9322_DIP(name) #define TTL_9322_DIP(...) \ NET_REGISTER_DEVEXT(TTL_9322_DIP, __VA_ARGS__) @@ -1434,6 +1468,10 @@ #define EPROM_2716_DIP(...) \ NET_REGISTER_DEVEXT(EPROM_2716_DIP, __VA_ARGS__) +// usage : PROM_MK28000_DIP(name) +#define PROM_MK28000_DIP(...) \ + NET_REGISTER_DEVEXT(PROM_MK28000_DIP, __VA_ARGS__) + // usage : TTL_82S16_DIP(name) #define TTL_82S16_DIP(...) \ NET_REGISTER_DEVEXT(TTL_82S16_DIP, __VA_ARGS__) diff --git a/src/lib/netlist/devices/nld_roms.cpp b/src/lib/netlist/devices/nld_roms.cpp index 946707ad0ef..fb55010f95f 100644 --- a/src/lib/netlist/devices/nld_roms.cpp +++ b/src/lib/netlist/devices/nld_roms.cpp @@ -24,6 +24,80 @@ namespace netlist { namespace devices { + NETLIB_OBJECT(mk28000_prom) + { + NETLIB_CONSTRUCTOR(mk28000_prom) + , m_enable_lo(*this, "m_enable_lo", false) + , m_enable_hi(*this, "m_enable_hi", false) + , m_latched_rom(*this, "m_latched_rom", 0) + , m_A(*this, 1, "A{}", NETLIB_DELEGATE(addr)) + , m_ARQ(*this, "ARQ", NETLIB_DELEGATE(arq)) + , m_OE1(*this, "OE1", NETLIB_DELEGATE(oe1)) + , m_OE2(*this, "OE2", NETLIB_DELEGATE(oe2)) + , m_O(*this, 1, "O{}", 0) + , m_ROM(*this, "ROM") + , m_power_pins(*this) + { + } + + private: + inline NETLIB_HANDLERI(arq) + { + if (m_ARQ() == 0) + { + m_latched_rom = m_ROM[m_A()]; + } + } + + inline NETLIB_HANDLERI(oe1) + { + m_enable_lo = m_OE1(); + uint8_t o = m_enable_lo ? m_latched_rom : 0; + for (std::size_t i=0; i<4; i++) + { + m_O.set_tristate(!m_enable_lo, NLTIME_FROM_NS(600), NLTIME_FROM_NS(600)); + m_O[i].push((o >> i) & 1, NLTIME_FROM_NS(600)); + } + } + + inline NETLIB_HANDLERI(oe2) + { + m_enable_hi = m_OE2(); + uint8_t o = m_enable_hi ? m_latched_rom : 0; + for (std::size_t i=4; i<8; i++) + { + m_O.set_tristate(!m_enable_hi, NLTIME_FROM_NS(600), NLTIME_FROM_NS(600)); + m_O[i].push((o >> i) & 1, NLTIME_FROM_NS(600)); + } + } + + inline NETLIB_HANDLERI(addr) + { + uint8_t o = (m_enable_hi || m_enable_lo) ? m_latched_rom : 0; + for (std::size_t i=0; i<4; i++) + { + m_O.set_tristate(!m_enable_lo, NLTIME_FROM_NS(600), NLTIME_FROM_NS(600)); + m_O[i].push((o >> i) & 1, NLTIME_FROM_NS(600)); + } + for (std::size_t i=4; i<8; i++) + { + m_O.set_tristate(!m_enable_hi, NLTIME_FROM_NS(600), NLTIME_FROM_NS(600)); + m_O[i].push((o >> i) & 1, NLTIME_FROM_NS(600)); + } + } + + state_var m_enable_lo; + state_var m_enable_hi; + state_var m_latched_rom; + object_array_t m_A; + logic_input_t m_ARQ; + logic_input_t m_OE1; + logic_input_t m_OE2; + object_array_t m_O; + + param_rom_t m_ROM; + nld_power_pins m_power_pins; + }; template NETLIB_OBJECT(generic_prom) @@ -154,16 +228,17 @@ namespace netlist using output_id = desc_const<1>; // 0: logic, 1: tristate, 2: open collector }; - - using NETLIB_NAME(82S123) = NETLIB_NAME(generic_prom); // 256 bits, 32x8, used as 256x4 - using NETLIB_NAME(82S126) = NETLIB_NAME(generic_prom); // 1024 bits, 32x32, used as 256x4 - using NETLIB_NAME(74S287) = NETLIB_NAME(generic_prom); // 1024 bits, 32x32, used as 256x4 - using NETLIB_NAME(2716) = NETLIB_NAME(generic_prom); // CE2Q = OE, CE1Q = CE + using NETLIB_NAME(82S123) = NETLIB_NAME(generic_prom); // 256 bits, 32x8, used as 256x4 + using NETLIB_NAME(82S126) = NETLIB_NAME(generic_prom); // 1024 bits, 32x32, used as 256x4 + using NETLIB_NAME(74S287) = NETLIB_NAME(generic_prom); // 1024 bits, 32x32, used as 256x4 + using NETLIB_NAME(2716) = NETLIB_NAME(generic_prom); // CE2Q = OE, CE1Q = CE + using NETLIB_NAME(MK28000) = NETLIB_NAME(mk28000_prom); // 16384 bits, either 2048x8 or 4096x4, determined by OE1/OE2 use NETLIB_DEVICE_IMPL(82S126, "PROM_82S126", "+CE1Q,+CE2Q,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,@VCC,@GND") NETLIB_DEVICE_IMPL(74S287, "PROM_74S287", "+CE1Q,+CE2Q,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,@VCC,@GND") NETLIB_DEVICE_IMPL(82S123, "PROM_82S123", "+CEQ,+A0,+A1,+A2,+A3,+A4,@VCC,@GND") NETLIB_DEVICE_IMPL(2716, "EPROM_2716", "+CE2Q,+CE1Q,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,@VCC,@GND") + NETLIB_DEVICE_IMPL(MK28000, "PROM_MK28000", "+OE1,+OE2,+ARQ,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,+A11,@VCC,@GND") } //namespace devices } // namespace netlist diff --git a/src/lib/netlist/devices/nld_roms.h b/src/lib/netlist/devices/nld_roms.h index 0ebd6b832b6..e8cf1b2398c 100644 --- a/src/lib/netlist/devices/nld_roms.h +++ b/src/lib/netlist/devices/nld_roms.h @@ -26,4 +26,8 @@ #define EPROM_2716(...) \ NET_REGISTER_DEVEXT(EPROM_2716, __VA_ARGS__) +// PROM_MK28000(name, cOE1, cOE2, cAR, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7, cA8, cA9, cA10, cA11) +#define PROM_MK28000(...) \ + NET_REGISTER_DEVEXT(PROM_MK28000, __VA_ARGS__) + #endif /* NLD_ROMS_H_ */ diff --git a/src/lib/netlist/macro/nlm_roms_lib.cpp b/src/lib/netlist/macro/nlm_roms_lib.cpp index 13edd472e93..a28c3cec37b 100644 --- a/src/lib/netlist/macro/nlm_roms_lib.cpp +++ b/src/lib/netlist/macro/nlm_roms_lib.cpp @@ -355,6 +355,52 @@ static NETLIST_START(PROM_82S115_DIP) ) NETLIST_END() +//- Identifier: PROM_MK28000_DIP +//- Title: MK28000 (2048 x 8 or 4096 x 4) 16384-Bit TTL PROM +//- Description: This dynamic ROM is organized internally as 2048 x 8 bits, +//- but has separate enables for the upper and lower nybbles, permitting +//- use as 4096 x 4 as well. +//. +//- Pinalias: VCC,A1,A2,A3,A4,A5,A6,A10,GND,A9,A8,A7,ARQ,OE2,A11,O8,O7,O6,O5,O4,O3,O2,O1,OE1 +//- Package: DIP +//- Param: ROM +//- The name of the source to load the rom content from +//- NamingConvention: Naming conventions follow Mostek datasheet +//- Limitations: +//- None. + +static NETLIST_START(PROM_MK28000_DIP) + + PROM_MK28000(A) + + DEFPARAM(ROM, "unknown") + PARAM(A.ROM, "$(@.ROM)") + ALIAS(1, A.VCC) + ALIAS(2, A.A1) + ALIAS(3, A.A2) + ALIAS(4, A.A3) + ALIAS(5, A.A4) + ALIAS(6, A.A5) + ALIAS(7, A.A6) + ALIAS(8, A.A10) + ALIAS(9, A.GND) + ALIAS(10, A.A9) + ALIAS(11, A.A8) + ALIAS(12, A.A7) + ALIAS(13, A.ARQ) + ALIAS(14, A.OE2) + ALIAS(15, A.A11) + ALIAS(16, A.O8) + ALIAS(17, A.O7) + ALIAS(18, A.O6) + ALIAS(19, A.O5) + ALIAS(20, A.O4) + ALIAS(21, A.O3) + ALIAS(22, A.O2) + ALIAS(23, A.O1) + ALIAS(24, A.OE1) +NETLIST_END() + /* 2102: 1024 x 1-bit Static RAM * * +--------------+ @@ -394,6 +440,7 @@ NETLIST_START(roms_lib) LOCAL_LIB_ENTRY(EPROM_2716_DIP) LOCAL_LIB_ENTRY(TTL_82S16_DIP) LOCAL_LIB_ENTRY(PROM_82S115_DIP) + LOCAL_LIB_ENTRY(PROM_MK28000_DIP) LOCAL_LIB_ENTRY(RAM_2102A_DIP) NETLIST_END() diff --git a/src/lib/netlist/macro/nlm_roms_lib.h b/src/lib/netlist/macro/nlm_roms_lib.h index ab754f34c86..2dcec6ca37b 100644 --- a/src/lib/netlist/macro/nlm_roms_lib.h +++ b/src/lib/netlist/macro/nlm_roms_lib.h @@ -30,6 +30,9 @@ #define PROM_74S287_DIP(name) \ NET_REGISTER_DEV(PROM_74S287_DIP, name) +#define PROM_MK28000_DIP(name) \ + NET_REGISTER_DEV(PROM_MK28000_DIP, name) + #define EPROM_2716_DIP(name) \ NET_REGISTER_DEV(EPROM_2716_DIP, name) diff --git a/src/lib/netlist/macro/nlm_ttl74xx_lib.cpp b/src/lib/netlist/macro/nlm_ttl74xx_lib.cpp index dc1a65c29b5..57e75e32222 100644 --- a/src/lib/netlist/macro/nlm_ttl74xx_lib.cpp +++ b/src/lib/netlist/macro/nlm_ttl74xx_lib.cpp @@ -2846,6 +2846,32 @@ static NETLIST_START(TTL_9322_DIP) ) NETLIST_END() +//- Identifier: TTL_9321_DIP +//- Title: DM9321/DM8321 Dual 4-Line to 1-Line Data Selectors/Multiplexers +//- Pinalias: AE,AA0,AA1,AD0,AD1,AD2,AD3,GND,BD3,BD2,BD1,BD0,BA1,BA0,BE,VCC +//- Package: DIP +//- NamingConvention: Naming conventions follow National Semiconductor datasheet +//- +static NETLIST_START(TTL_9321_DIP) + TTL_9321_GATE(A) + TTL_9321_GATE(B) + + NET_C(A.VCC, B.VCC) + NET_C(A.GND, B.GND) + + DIPPINS( /* +--------------+ */ + A.E, /* /E |1 ++ 16| VCC */ A.VCC, + A.A0, /* A0 |2 15| /E */ B.E, + A.A1, /* A1 |3 14| A0 */ B.A0, + A.D0, /* /D0 |4 9322 13| A1 */ B.A1, + A.D1, /* /D1 |5 12| /D0 */ B.D0, + A.D2, /* /D2 |6 11| /D1 */ B.D1, + A.D3, /* /D3 |7 10| /D2 */ B.D2, + A.GND, /* GND |8 9| /D3 */ B.D3 + /* +--------------+ */ + ) +NETLIST_END() + //- Identifier: TTL_9602_DIP //- Title: DM9602/DM6802 Dual Retriggerable, Resettable One Shots //- Description: These dual resettable, retriggerable one shots have two @@ -3496,5 +3522,6 @@ NETLIST_START(ttl74xx_lib) LOCAL_LIB_ENTRY(TTL_9312_DIP) LOCAL_LIB_ENTRY(TTL_9310_DIP) LOCAL_LIB_ENTRY(TTL_9316_DIP) + LOCAL_LIB_ENTRY(TTL_9321_DIP) LOCAL_LIB_ENTRY(TTL_9322_DIP) NETLIST_END() diff --git a/src/lib/netlist/macro/nlm_ttl74xx_lib.h b/src/lib/netlist/macro/nlm_ttl74xx_lib.h index b797bfd6cc9..7bae0bc4e76 100644 --- a/src/lib/netlist/macro/nlm_ttl74xx_lib.h +++ b/src/lib/netlist/macro/nlm_ttl74xx_lib.h @@ -418,6 +418,9 @@ #define TTL_9316_DIP(name) \ NET_REGISTER_DEV(TTL_9316_DIP, name) +#define TTL_9321_DIP(name) \ + NET_REGISTER_DEV(TTL_9321_DIP, name) + #define TTL_9322_DIP(name) \ NET_REGISTER_DEV(TTL_9322_DIP, name) diff --git a/src/mame/audio/nl_flyball.cpp b/src/mame/audio/nl_flyball.cpp index 174675c7fd5..b8ee6499a1d 100644 --- a/src/mame/audio/nl_flyball.cpp +++ b/src/mame/audio/nl_flyball.cpp @@ -58,7 +58,7 @@ NETLIST_START(flyball) RES(R76, RES_K(100)) // RES., CARBON, 5%, 1/4W, 100K RES(R77, 820) // RES., CARBON, 5%, 1/4W, 820 RES(R78, RES_K(100)) // RES., CARBON, 5%, 1/4W, 100K - RES(R79, RES_K(820)) // RES., CARBON, 5%, 1/4W, 820K + RES(R79, RES_K(1)) // RES., CARBON, 5%, 1/4W, 820K // Verified as 1K on a real board RES(R80, RES_K(330)) // RES., CARBON, 5%, 1/4W, 330 // (330 on parts list, but 330K on schematic, 330 does not work in the netlist) RES(R87, RES_K(1)) // RES., CARBON, 5%, 1/4W, 1K RES(R88, RES_K(3.3)) // RES., CARBON, 5%, 1/4W, 3.3K @@ -68,7 +68,8 @@ NETLIST_START(flyball) RES(R92, RES_K(10)) // RES., CARBON, 5%, 1/4W, 10K POT(R95, RES_K(10)) // TRIMPOT, 10K RES(R96, RES_K(47)) // RES., CARBON, 5%, 1/4W, 47K - RES(R97, RES_K(10)) // RES., CARBON, 5%, 1/4W, 10K + RES(R97A, RES_K(10)) // RES., CARBON, 5%, 1/4W, 10K + RES(R97B, RES_K(24.4)) // RES., CARBON, 5%, 1/4W, 10K // Verified to exist on a real board RES(R98, RES_K(10)) // RES., CARBON, 5%, 1/4W, 10K RES(R99, RES_K(33)) // RES., CARBON, 5%, 1/4W, 33K diff --git a/src/mame/drivers/atarittl.cpp b/src/mame/drivers/atarittl.cpp index 05ff0693499..8678b99e51a 100644 --- a/src/mame/drivers/atarittl.cpp +++ b/src/mame/drivers/atarittl.cpp @@ -56,12 +56,10 @@ netlist system per-game: TM-057 (Stunt Cycle) - 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) 7417 Hex Buffers/Drivers 9301 1-of-10 Decoder LM339 Quad Comparator @@ -72,8 +70,10 @@ #include "emu.h" #include "machine/netlist.h" +#include "netlist/nl_setup.h" #include "machine/nl_stuntcyc.h" #include "machine/nl_gtrak10.h" +#include "machine/nl_tank.h" #include "netlist/devices/net_lib.h" #include "video/fixfreq.h" #include "screen.h" @@ -85,12 +85,12 @@ #define V_TOTAL (0x105+1) // 262 #define H_TOTAL (0x1C6+1) // 454 -#define HBSTART (H_TOTAL) -#define HBEND (32) -#define VBSTART (V_TOTAL) -#define VBEND (16) +#define HBSTART (H_TOTAL) +#define HBEND (32) +#define VBSTART (V_TOTAL) +#define VBEND (16) -#define HRES_MULT (1) +#define HRES_MULT (1) // end #define SC_VIDCLOCK (14318000/2) @@ -101,6 +101,14 @@ #define SC_VBSTART (SC_VTOTAL) #define SC_VBEND (8) +#define TANK_VIDCLOCK (14318000) +#define TANK_HTOTAL (904) +#define TANK_VTOTAL (520) +#define TANK_HBSTART (SC_HTOTAL) +#define TANK_HBEND (32) +#define TANK_VBSTART (SC_VTOTAL) +#define TANK_VBEND (8) + #define GTRAK10_VIDCLOCK 14318181 #define GTRAK10_HTOTAL 451 #define GTRAK10_VTOTAL 521 @@ -120,16 +128,6 @@ public: required_device m_video; void atarikee(machine_config &config); -protected: - - // driver_device overrides - virtual void machine_start() override; - virtual void machine_reset() override; - - virtual void video_start() override; - -private: - }; class stuntcyc_state : public driver_device @@ -143,11 +141,23 @@ public: } void stuntcyc(machine_config &config); -protected: - // driver_device overrides - virtual void machine_start() override; - virtual void machine_reset() override; +private: + required_device m_maincpu; + required_device m_video; +}; + +class tank_state : public driver_device +{ +public: + tank_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_video(*this, "fixfreq") + { + } + + void tank(machine_config &config); private: required_device m_maincpu; @@ -182,26 +192,6 @@ static NETLIST_START(atarikee) NETLIST_END() -void atarikee_state::machine_start() -{ -} - -void atarikee_state::machine_reset() -{ -} - -void atarikee_state::video_start() -{ -} - -void stuntcyc_state::machine_start() -{ -} - -void stuntcyc_state::machine_reset() -{ -} - void atarikee_state::atarikee(machine_config &config) { /* basic machine hardware */ @@ -217,7 +207,6 @@ void atarikee_state::atarikee(machine_config &config) m_video->set_threshold(0.30); } -//#define STUNTCYC_NL_CLOCK (14318181*69) #define STUNTCYC_NL_CLOCK (SC_HTOTAL*SC_VTOTAL*60*140) void stuntcyc_state::stuntcyc(machine_config &config) @@ -241,6 +230,36 @@ void stuntcyc_state::stuntcyc(machine_config &config) m_video->set_horz_scale(4); } +void tank_state::tank(machine_config &config) +{ + /* basic machine hardware */ + NETLIST_CPU(config, m_maincpu, netlist::config::DEFAULT_CLOCK()).set_source(NETLIST_NAME(tank)); + NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0", 0).set_params("VIDEO_OUT", "fixfreq", FUNC(fixedfreq_device::update_composite_monochrome)); + NETLIST_LOGIC_INPUT(config, "maincpu:p1lup", "P1_LEFT_UP.POS", 0); + NETLIST_LOGIC_INPUT(config, "maincpu:p1ldown", "P1_LEFT_DOWN.POS", 0); + NETLIST_LOGIC_INPUT(config, "maincpu:p1rup", "P1_RIGHT_UP.POS", 0); + NETLIST_LOGIC_INPUT(config, "maincpu:p1rdown", "P1_RIGHT_DOWN.POS", 0); + NETLIST_LOGIC_INPUT(config, "maincpu:p2lup", "P2_LEFT_UP.POS", 0); + NETLIST_LOGIC_INPUT(config, "maincpu:p2ldown", "P2_LEFT_DOWN.POS", 0); + NETLIST_LOGIC_INPUT(config, "maincpu:p2rup", "P2_RIGHT_UP.POS", 0); + NETLIST_LOGIC_INPUT(config, "maincpu:p2rdown", "P2_RIGHT_DOWN.POS", 0); + NETLIST_LOGIC_INPUT(config, "maincpu:p1fire", "P1_FIRE.POS", 0); + NETLIST_LOGIC_INPUT(config, "maincpu:p2fire", "P2_FIRE.POS", 0); + NETLIST_LOGIC_INPUT(config, "maincpu:coin1", "COIN1.POS", 0); + NETLIST_LOGIC_INPUT(config, "maincpu:coin2", "COIN2.POS", 0); + + /* video hardware */ + SCREEN(config, "screen", SCREEN_TYPE_RASTER); + FIXFREQ(config, m_video).set_screen("screen"); + m_video->set_monitor_clock(TANK_VIDCLOCK); + m_video->set_horz_params(TANK_HTOTAL-84,TANK_HTOTAL-64,TANK_HTOTAL-16, TANK_HTOTAL); + m_video->set_vert_params(TANK_VTOTAL-21,TANK_VTOTAL-17,TANK_VTOTAL-12, TANK_VTOTAL); + m_video->set_fieldcount(1); + m_video->set_threshold(0.89); + m_video->set_gain(0.2); + m_video->set_horz_scale(1); +} + void gtrak10_state::gtrak10(machine_config &config) { /* basic machine hardware */ @@ -286,12 +305,30 @@ static INPUT_PORTS_START( gtrak10 ) INPUT_PORTS_END static INPUT_PORTS_START( stuntcyc ) - PORT_START("IN0") /* fake */ + PORT_START("IN0") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_COIN1) NETLIST_LOGIC_PORT_CHANGED("maincpu", "coinsw") PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_START1) NETLIST_LOGIC_PORT_CHANGED("maincpu", "startsw1") PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_START2) NETLIST_LOGIC_PORT_CHANGED("maincpu", "startsw2") INPUT_PORTS_END +static INPUT_PORTS_START( tank ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP ) PORT_2WAY NETLIST_LOGIC_PORT_CHANGED("maincpu", "p1lup") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_2WAY NETLIST_LOGIC_PORT_CHANGED("maincpu", "p1ldown") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN ) PORT_2WAY NETLIST_LOGIC_PORT_CHANGED("maincpu", "p1rup") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP ) PORT_2WAY NETLIST_LOGIC_PORT_CHANGED("maincpu", "p1rdown") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP ) PORT_2WAY PORT_PLAYER(2) NETLIST_LOGIC_PORT_CHANGED("maincpu", "p1lup") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_2WAY PORT_PLAYER(2) NETLIST_LOGIC_PORT_CHANGED("maincpu", "p1ldown") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN ) PORT_2WAY PORT_PLAYER(2) NETLIST_LOGIC_PORT_CHANGED("maincpu", "p1rup") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP ) PORT_2WAY PORT_PLAYER(2) NETLIST_LOGIC_PORT_CHANGED("maincpu", "p1rdown") + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "p1fire") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) NETLIST_LOGIC_PORT_CHANGED("maincpu", "p2fire") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "coin1") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "coin2") +INPUT_PORTS_END + /*************************************************************************** Game driver(s) @@ -486,7 +523,7 @@ ROM_START( tank ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) /* The "custom" 24-pin ROM used in Atari/Kee Games "Tank" is known as a MOSTEK MK28000P. */ - ROM_REGION( 0x0801, "gfx", ROMREGION_ERASE00 ) + ROM_REGION( 0x0801, "maincpu:gfx", ROMREGION_ERASE00 ) ROM_LOAD( "90-2006.k10", 0x0000, 0x0800, CRC(87f5c365) SHA1(bc518a5795ef3ed8a7c0463653d70f60780ddda1) ) ROM_END @@ -596,7 +633,7 @@ GAME(1974, qwakttl, 0, atarikee, 0, atarikee_state, empty_init, GAME(1975, sharkjaw, 0, atarikee, 0, atarikee_state, empty_init, ROT0, "Atari/Horror Games", "Shark JAWS [TTL]", MACHINE_IS_SKELETON) GAME(1975, steeplec, 0, atarikee, 0, atarikee_state, empty_init, ROT0, "Atari", "Steeplechase [TTL]", MACHINE_IS_SKELETON) GAME(1976, stuntcyc, 0, stuntcyc, stuntcyc, stuntcyc_state, empty_init, ROT0, "Atari", "Stunt Cycle [TTL]", MACHINE_IS_SKELETON) -GAME(1974, tank, 0, atarikee, 0, atarikee_state, empty_init, ROT0, "Atari/Kee", "Tank/Tank Cocktail [TTL]", MACHINE_IS_SKELETON) +GAME(1974, tank, 0, tank, tank, tank_state, empty_init, ROT0, "Atari/Kee", "Tank/Tank Cocktail [TTL]", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) GAME(1975, tankii, 0, atarikee, 0, atarikee_state, empty_init, ROT0, "Atari/Kee", "Tank II [TTL]", MACHINE_IS_SKELETON) // MISSING ROM DUMPS diff --git a/src/mame/machine/nl_stuntcyc.h b/src/mame/machine/nl_stuntcyc.h index 1ed85be033a..f31f7c889fc 100644 --- a/src/mame/machine/nl_stuntcyc.h +++ b/src/mame/machine/nl_stuntcyc.h @@ -1,6 +1,12 @@ // license:BSD-3-Clause // copyright-holders:Ryan Holtz +#ifndef MAME_MACHINE_NL_STUNTCYC_H +#define MAME_MACHINE_NL_STUNTCYC_H + +#pragma once #include "netlist/nl_setup.h" NETLIST_EXTERNAL(stuntcyc) + +#endif // MAME_MACHINE_NL_STUNTCYC_H diff --git a/src/mame/machine/nl_tank.cpp b/src/mame/machine/nl_tank.cpp new file mode 100644 index 00000000000..830111b54c8 --- /dev/null +++ b/src/mame/machine/nl_tank.cpp @@ -0,0 +1,1920 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +/*************************************************************************** + + Netlist (tank) included from atarittl.cpp + +***************************************************************************/ + +#include "netlist/devices/net_lib.h" + +static NETLIST_START(NE556_DIP) + NE555(A) + NE555(B) + + NET_C(A.GND, B.GND) + NET_C(A.VCC, B.VCC) + + DIPPINS( /* +--------------+ */ + A.DISCH, /* 1DISCH |1 ++ 14| VCC */ A.VCC, + A.THRESH, /* 1THRES |2 13| 2DISCH */ B.DISCH, + A.CONT, /* 1CONT |3 12| 2THRES */ B.THRESH, + A.RESET, /* 1RESET |4 NE556 11| 2CONT */ B.CONT, + A.OUT, /* 1OUT |5 10| 2RESET */ B.RESET, + A.TRIG, /* 1TRIG |6 9| 2OUT */ B.OUT, + A.GND, /* GND |7 8| 2TRIG */ B.TRIG + /* +--------------+ */ + ) +NETLIST_END() + +NETLIST_START(tank) + + SOLVER(Solver, 48000) + + ANALOG_INPUT(V5, 5) + ANALOG_INPUT(V12, 12) + ALIAS(VCC, V5) + ALIAS(P, V5) + + LOCAL_SOURCE(NE556_DIP) + + RES(R4, RES_K(3.3)) + RES(R5, RES_K(3.3)) + RES(R6, RES_K(3.3)) + RES(R7, RES_K(3.3)) + RES(R7V, 680) + RES(R8, RES_K(3.3)) + RES(R8A, 470) + RES(R9, RES_K(3.3)) + RES(R9A, 470) + RES(R10, RES_K(3.3)) + RES(R10A, 470) + RES(R11, RES_K(3.3)) + RES(R11A, 470) + RES(R3V, 560) + RES(R4V, RES_K(1)) + RES(R5V, RES_K(1)) + RES(R6V, RES_K(1)) + RES(R13, RES_K(4.7)) + RES(R15, RES_K(47)) + RES(R16, RES_K(33)) + RES(R19, RES_K(1)) // Guess; VGLTank.pdf doesn't say. + RES(R20, RES_K(1)) // Guess; VGLTank.pdf doesn't say. + RES(R21, RES_K(1)) // Guess; VGLTank.pdf doesn't say. + RES(R22, RES_K(1)) // Guess; VGLTank.pdf doesn't say. + RES(R23, RES_K(1)) // Guess; VGLTank.pdf doesn't say. + RES(R24, RES_K(1)) // Guess; VGLTank.pdf doesn't say. + RES(R25, RES_K(1)) // Guess; VGLTank.pdf doesn't say. + RES(R26, RES_K(1)) // Guess; VGLTank.pdf doesn't say. + RES(R27, 470) + RES(R28, RES_M(1.8)) + RES(R29, RES_M(1.8)) + RES(R32, 470) + RES(R34V, 560) + RES(R35M2, RES_K(100)) + RES(R36M1, RES_K(100)) + RES(R37A, RES_K(100)) + RES(R38, RES_K(100)) + RES(R40, RES_K(4.7)) + RES(R41, RES_K(4.7)) + RES(R42, 100) + RES(R43, 100) + RES(R48A, 560) + RES(R48B, RES_K(4.7)) + RES(R49B, RES_K(4.7)) + RES(R50B, RES_K(4.7)) + RES(R51B, RES_K(4.7)) + RES(R52B, 100) + RES(R53A, RES_K(330)) + RES(R53B, 100) + RES(R54A, RES_K(680)) + RES(R54B, 100) + RES(R55A, RES_K(10)) + RES(R55B, 100) + RES(R56A, RES_K(100)) + RES(R56B, RES_K(4.7)) + RES(R57, RES_K(4.7)) + RES(R58, RES_K(4.7)) + RES(R59A, RES_K(180)) + RES(R59B, RES_K(4.7)) + RES(R60A, RES_M(1)) + RES(R60B, 100) + RES(R61, 100) + RES(R62, 100) + RES(R63A, RES_K(2.2)) + RES(R63B, 100) + RES(R64A, RES_K(180)) + RES(R64M2, RES_K(4.7)) + RES(R65M2, RES_K(3.9)) + RES(R66M2, RES_K(1)) + RES(R67M2, RES_K(10)) + RES(R68M2, RES_K(33)) + RES(R69, RES_K(470)) + RES(R69M2, RES_K(180)) + RES(R70A, RES_M(1)) + RES(R70M2, RES_K(330)) + RES(R71A, RES_K(680)) + RES(R71M2, RES_K(680)) + RES(R72A, RES_K(180)) + RES(R72M2, RES_K(22)) + RES(R73A, RES_M(1)) + RES(R73M1, RES_K(22)) + RES(R74M1, RES_K(180)) + RES(R75M1, RES_K(330)) + RES(R76M1, RES_K(680)) + RES(R77M1, RES_K(10)) + RES(R78M1, RES_K(33)) + RES(R79M1, RES_K(3.9)) + RES(R80M1, RES_K(1)) + RES(R81M1, RES_K(4.7)) + RES(R100M1, RES_K(1)) + RES(R101M1, 680) + RES(R102M2, RES_K(1)) + RES(R103M2, 680) + RES(R102MX, RES_K(33)) + RES(R103MX, RES_K(33)) + RES(R104MX, RES_K(33)) + RES(R106MX, RES_K(33)) + RES(R107MX, RES_K(33)) + RES(R108MX, RES_K(33)) + RES(RUNK1, RES_K(47)) + + CAP(C2, CAP_U(0.1)) + CAP(C4, CAP_U(0.001)) + CAP(C5, CAP_U(0.001)) + CAP(C6, CAP_U(0.001)) + CAP(C7, CAP_U(0.001)) + CAP(C8, CAP_U(100)) + CAP(C9, CAP_U(22)) + CAP(C11, CAP_U(47)) + CAP(C12, CAP_U(22)) + CAP(C15, CAP_U(0.01)) + CAP(C16, CAP_U(0.01)) + CAP(C17, CAP_P(100)) + CAP(C18, CAP_U(1)) + CAP(C19, CAP_U(1)) + CAP(C21, CAP_P(100)) + CAP(C23, CAP_P(100)) + CAP(C24, CAP_U(0.1)) + CAP(C25, CAP_U(100)) + CAP(C26, CAP_U(0.1)) + CAP(C27, CAP_U(0.1)) + CAP(C27A, CAP_U(0.001)) + CAP(C28A, CAP_U(1)) + CAP(C29, CAP_U(10)) + CAP(C30, CAP_U(0.1)) + CAP(C30A, CAP_U(0.001)) + CAP(C31, CAP_U(0.1)) + CAP(C31A, CAP_U(1)) + CAP(C32A, CAP_U(0.1)) + CAP(C33C, CAP_U(0.1)) + CAP(C34C, CAP_U(0.1)) + CAP(C34A, CAP_U(0.01)) + CAP(C35C, CAP_U(0.1)) + CAP(C35A, CAP_U(5)) + CAP(C36C, CAP_U(0.1)) + CAP(C36A, CAP_U(0.1)) + CAP(C38A, CAP_U(5)) + CAP(C39, CAP_U(0.1)) + CAP(C39A, CAP_U(0.001)) + CAP(C40, CAP_U(0.1)) + CAP(C40A, CAP_U(0.1)) + CAP(C41, CAP_U(0.1)) + CAP(C41A, CAP_U(5)) + CAP(C42, CAP_U(0.1)) + CAP(C43A, CAP_P(220)) + CAP(C43M2, CAP_U(0.001)) + CAP(C44M2, CAP_U(5)) + CAP(C47M2, CAP_U(0.001)) + CAP(C48M2, CAP_U(0.1)) + CAP(C49M2, CAP_U(10)) + CAP(C50M2, CAP_U(22)) + CAP(C51M1, CAP_U(0.22)) + CAP(C52M1, CAP_U(0.001)) + CAP(C53M1, CAP_U(0.1)) + CAP(C54M1, CAP_U(10)) + CAP(C55M1, CAP_U(0.001)) + CAP(C56M1, CAP_U(5)) + CAP(C100, CAP_U(0.001)) + CAP(C101, CAP_U(1)) + CAP(C106, CAP_U(1)) + CAP(C110, CAP_U(0.001)) + CAP(C111, CAP_U(0.001)) + + POT(SHOT_NOISE_VOL, RES_K(50)) + POT(BOOM_NOISE_VOL, RES_K(50)) + POT(MOTOR1_VOL, RES_K(10)) + POT(MOTOR1_VOL2, RES_K(100)) + POT(MOTOR2_VOL, RES_K(10)) + POT(MOTOR2_VOL2, RES_K(100)) + POT(PLAYTIME, RES_M(1)) + POT(FIRE1_ADJUST, RES_K(50)) + + SWITCH(P1_LEFT_UP) + SWITCH(P1_LEFT_DOWN) + SWITCH(P1_RIGHT_UP) + SWITCH(P1_RIGHT_DOWN) + SWITCH(P1_FIRE) + SWITCH(P2_LEFT_UP) + SWITCH(P2_LEFT_DOWN) + SWITCH(P2_RIGHT_UP) + SWITCH(P2_RIGHT_DOWN) + SWITCH(P2_FIRE) + + SWITCH2(COIN1) + SWITCH2(COIN2) + SWITCH2(COINAGE1) + SWITCH2(COINAGE2) + + DIODE(CR1, "1N914") + DIODE(CR2, "1N914") + DIODE(CR3, "1N914") + DIODE(CR5, "1N914") + DIODE(CR6, "1N914") + DIODE(CR7, "1N914") + DIODE(CR8, "1N914") + DIODE(CR9, "1N914") + DIODE(CR10, "1N914") + DIODE(CR11, "1N914") + DIODE(CR12, "1N914") + DIODE(CR13M2, "1N914") + DIODE(CR14M1, "1N914") + DIODE(CR19, "1N914") + DIODE(CR22, "1N914") + + QBJT_EB(Q2, "2N3644") + QBJT_EB(Q3, "2N3643") + QBJT_EB(Q4, "2N3643") + QBJT_EB(Q6, "2N3644") + QBJT_EB(Q7, "2N3644") + QBJT_EB(Q27, "2N3643") + QBJT_EB(Q28, "2N3644") + QBJT_EB(Q29, "2N3643") + QBJT_EB(Q30, "2N3644") + QBJT_EB(Q31, "2N3643") + QBJT_EB(Q32, "2N3644") + QBJT_EB(Q33, "2N3643") + QBJT_EB(Q34, "2N3644") + + TTL_7404_DIP(IC_H3) + TTL_7404_DIP(IC_B6) + TTL_7402_DIP(IC_D6) + TTL_74107_DIP(IC_E6) + TTL_7474_DIP(IC_J6) + TTL_7402_DIP(IC_N6) + TTL_7404_DIP(IC_A7) + NET_C(VCC, IC_H3.14, IC_B6.14, IC_D6.14, IC_E6.14, IC_J6.14, IC_N6.14, IC_A7.14, IC_J6.4, IC_J6.10) + NET_C(GND, IC_H3.7, IC_B6.7, IC_D6.7, IC_E6.7, IC_J6.7, IC_N6.7, IC_A7.7) + + TTL_7408_DIP(IC_A11) + TTL_7402_DIP(IC_B11) + TTL_7410_DIP(IC_B12) + TTL_74107_DIP(IC_C12) + TTL_9316_DIP(IC_D12) + TTL_9316_DIP(IC_E12) + TTL_7493_DIP(IC_F12) + TTL_7493_DIP(IC_H12) + NET_C(VCC, IC_A11.14, IC_B11.14, IC_B12.14, IC_C12.14, IC_D12.16, IC_E12.16, IC_F12.5, IC_H12.5) + NET_C(GND, IC_A11.7, IC_B11.7, IC_B12.7, IC_C12.7, IC_D12.8, IC_E12.8, IC_F12.10, IC_H12.10) + + TTL_74107_DIP(IC_J12) + TTL_7474_DIP(IC_K12) + TTL_7402_DIP(IC_A13) + TTL_7420_DIP(IC_D13) + TTL_7404_DIP(IC_E13) + TTL_7400_DIP(IC_J13) + TTL_7410_DIP(IC_A14) + TTL_7400_DIP(IC_B14) + NET_C(VCC, IC_J12.14, IC_K12.14, IC_A13.14, IC_D13.14, IC_E13.14, IC_J13.14, IC_A14.14, IC_B14.14) + NET_C(GND, IC_J12.7, IC_K12.7, IC_A13.7, IC_D13.7, IC_E13.7, IC_J13.7, IC_A14.7, IC_B14.7) + + TTL_7400_DIP(IC_B13) + TTL_7410_DIP(IC_C13) + TTL_7400_DIP(IC_E14) + TTL_7474_DIP(IC_L12) + TTL_7474_DIP(IC_L9) + TTL_7408_DIP(IC_L8) + TTL_7400_DIP(IC_K8) + NET_C(VCC, IC_B13.14, IC_C13.14, IC_E14.14, IC_L12.14, IC_L9.14, IC_L8.14, IC_K8.14) + NET_C(GND, IC_B13.7, IC_C13.7, IC_E14.7, IC_L12.7, IC_L9.7, IC_L8.7, IC_K8.7) + + TTL_7474_DIP(IC_K9) + SUBMODEL(NE556_DIP, IC_C11) + TTL_7492_DIP(IC_A12) + TTL_7404_DIP(IC_M13) + TTL_7402_DIP(IC_E15) + TTL_7410_DIP(IC_F14) + TTL_7427_DIP(IC_K13) + TTL_7400_DIP(IC_L13) + NET_C(VCC, IC_K9.14, IC_C11.14, IC_A12.5, IC_M13.14, IC_E15.14, IC_F14.14, IC_K13.14, IC_L13.14) + NET_C(GND, IC_K9.7, IC_C11.7, IC_A12.10, IC_M13.7, IC_E15.7, IC_F14.7, IC_K13.7, IC_L13.7) + + TTL_74107_DIP(IC_D8) + TTL_74193_DIP(IC_H10) + TTL_7408_DIP(IC_H11) + TTL_7410_DIP(IC_C14) + TTL_9316_DIP(IC_H14) + TTL_7493_DIP(IC_J14) + TTL_7402_DIP(IC_D15) + TTL_7400_DIP(IC_D14) + NET_C(VCC, IC_D8.14, IC_H10.16, IC_H11.14, IC_C14.14, IC_H14.16, IC_J14.5, IC_D15.14, IC_D14.14) + NET_C(GND, IC_D8.7, IC_H10.8, IC_H11.7, IC_C14.7, IC_H14.8, IC_J14.10, IC_D15.7, IC_D14.7) + + TTL_7493_DIP(IC_L14) + TTL_9316_DIP(IC_K14) + TTL_74193_DIP(IC_F11) + TTL_7486_DIP(IC_E8) + TTL_7402_DIP(IC_N7) + TTL_7400_DIP(IC_B15) + TTL_7402_DIP(IC_B9) + TTL_7408_DIP(IC_B7) + NET_C(VCC, IC_L14.5, IC_K14.16, IC_F11.16, IC_E8.14, IC_N7.14, IC_B15.14, IC_B9.14, IC_B7.14) + NET_C(GND, IC_L14.10, IC_K14.8, IC_F11.8, IC_E8.7, IC_N7.7, IC_B15.7, IC_B9.7, IC_B7.7) + + TTL_7404_DIP(IC_B10) + TTL_9602_DIP(IC_C9) + TTL_7474_DIP(IC_A8) + TTL_7474_DIP(IC_A15) + TTL_7400_DIP(IC_A9) + TTL_9602_DIP(IC_C8) + TTL_7402_DIP(IC_B8) + TTL_7474_DIP(IC_J8) + NET_C(VCC, IC_B10.14, IC_C9.16, IC_A8.14, IC_A15.14, IC_A9.14, IC_C8.16, IC_B8.14, IC_J8.14) + NET_C(GND, IC_B10.7, IC_C9.8, IC_A8.7, IC_A15.7, IC_A9.7, IC_C8.8, IC_B8.7, IC_J8.7) + + TTL_7493_DIP(IC_C10) + TTL_7493_DIP(IC_D11) + TTL_7493_DIP(IC_E11) + TTL_7402_DIP(IC_J7) + TTL_7404_DIP(IC_D11V) + TTL_7402_DIP(IC_L7) + TTL_7402_DIP(IC_D7) + TTL_74165_DIP(IC_N10) + NET_C(VCC, IC_C10.5, IC_D11.5, IC_E11.5, IC_J7.14, IC_D11V.14, IC_L7.14, IC_D7.14, IC_N10.16) + NET_C(GND, IC_C10.10, IC_D11.10, IC_E11.10, IC_J7.7, IC_D11V.7, IC_L7.7, IC_D7.7, IC_N10.8) + + NE555_DIP(IC_H6) + NET_C(VCC, IC_H6.8) + NET_C(GND, IC_H6.1) + + // Coin Handling + NET_C(COIN1.1, COIN1_NC) + NET_C(COIN1.2, COIN1_NO) + NET_C(COIN2.1, COIN2_NC) + NET_C(COIN2.2, COIN2_NO) + NET_C(GND, COIN1.Q, COIN2.Q) + + NET_C(IC_B6.11, IC_B6.12) + NET_C(IC_B6.13, IC_B6.10) + NET_C(IC_B6.5, IC_B6.2) + NET_C(IC_B6.1, IC_B6.6) + ALIAS(COIN1_NO, IC_B6.11) + ALIAS(COIN1_NC, IC_B6.13) + ALIAS(COIN2_NO, IC_B6.5) + ALIAS(COIN2_NC, IC_B6.1) + + NET_C(IC_B6.6, IC_D6.8) + NET_C(IC_B6.10, IC_D6.9) + NET_C(IC_B6.12, IC_N6.5) + NET_C(IC_B6.2, IC_N6.6) + + NET_C(IC_D6.10, IC_D6.11) + NET_C(ATTRACT, IC_D6.12) + + NET_C(IC_D6.13, IC_J6.12, IC_J6.13, IC_J6.1) + NET_C(IC_J6.9, IC_J6.2) + NET_C(V128, IC_J6.3, IC_J6.11, IC_E6.9) + NET_C(IC_J6.5, IC_E6.12) + NET_C(VCC, IC_E6.1, IC_E6.4) + ALIAS(COIN, IC_J6.5) + ALIAS(COINQ, IC_J6.6) + + NET_C(IC_E6.3, IC_N6.3) + NET_C(IC_N6.4, IC_N6.2) + NET_C(IC_N6.1, COINAGE1.2) + + NET_C(GND, COINAGE1.1, R48A.1) + NET_C(R48A.2, COINAGE1.Q, IC_D6.3) + NET_C(COINQ, IC_D6.2) + ALIAS(START, IC_D6.1) + + // Game Timer / Attract + NET_C(V5, PLAYTIME.2, PLAYTIME.3) + NET_C(COINAGE2.1, PLAYTIME.1, R54A.1) + NET_C(COINAGE2.Q, R53A.1) + NET_C(R54A.2, IC_H6.6, IC_H6.7, R53A.2, R60A.1, C25.1) + NET_C(R60A.2, Q2.B) + NET_C(GND, COINAGE2.2, C25.2, Q3.E, Q4.E, C24.2) + NET_C(IC_H6.5, C24.1, R59A.1) + NET_C(R59A.2, Q2.E, R56A.2, R63A.1, Q3.C, Q4.B) + NET_C(V5, R56A.1, R55A.1) + NET_C(R63A.2, R55A.2, Q4.C, IC_H3.5) + ALIAS(GNE, IC_H3.6) + NET_C(IC_H6.4, ATTRACTQ) + NET_C(IC_H6.3, IC_D6.5) + NET_C(IC_D6.4, IC_E6.11) + NET_C(V5, IC_E6.10) // No antenna to spark, so we pretend we never get a spark + ALIAS(ATTRACT, IC_E6.6) + NET_C(IC_D6.6, ATTRACT) + ALIAS(ATTRACTQ, IC_E6.5) + NET_C(IC_N6.9, ATTRACTQ) + NET_C(GND, IC_N6.8) // No antenna to spark, so we pretend we never get a spark + NET_C(IC_N6.10, IC_E6.13) + NET_C(START, IC_E6.8, IC_H3.3) + NET_C(IC_H3.4, IC_H6.2) + ALIAS(STARTQ, IC_H3.4) + + // H Info + NET_C(H128, IC_A13.12) + NET_C(H_SYNC, IC_A13.8) + NET_C(IC_A13.10, IC_A13.11) + NET_C(IC_A13.13, IC_A13.9) + ALIAS(H_INFO, IC_A13.13) + ALIAS(H_INFOQ, IC_A13.10) + + // V Info + NET_C(V16, IC_J13.9) + NET_C(V64, IC_J13.10) + NET_C(V512Q, IC_J13.2) + NET_C(IC_J13.8, IC_J13.12) + NET_C(IC_J13.3, IC_J13.13) + NET_C(IC_J13.11, IC_J13.1) + ALIAS(V_INFO, IC_J13.3) + ALIAS(V_INFOQ, IC_J13.11) + + // Reset 2 + NET_C(H256, IC_A11.2) + NET_C(H452, IC_A11.1) + ALIAS(RESET2, IC_A11.3) + + // Main Timing & Sync + CLOCK(CLK, 14318000) + NET_C(VCC, CLK.VCC) + NET_C(GND, CLK.GND) + + NET_C(CLK.Q, IC_A7.1, IC_A7.3) + ALIAS(CLOCKQ, IC_A7.4) + + // Horizontal Timing + NET_C(IC_A7.2, IC_K12.3, IC_E12.2, IC_D12.2) + NET_C(V5, IC_E12.7, IC_E12.10, IC_E12.9, IC_D12.10, IC_D12.9, IC_C12.1, IC_C12.4, IC_C12.8, IC_C12.11, IC_C12.10, IC_K12.4, IC_K12.1) + ALIAS(H1, IC_E12.14) + ALIAS(H2, IC_E12.13) + ALIAS(H4, IC_E12.12) + ALIAS(H8, IC_E12.11) + NET_C(IC_E12.15, IC_D12.7) + ALIAS(H16, IC_D12.14) + ALIAS(H32, IC_D12.13) + ALIAS(H64, IC_D12.12) + ALIAS(H128, IC_D12.11) + NET_C(IC_D12.15, IC_C12.12) + NET_C(IC_C12.3, IC_C12.9) + ALIAS(H256, IC_C12.3) + ALIAS(H256Q, IC_C12.2) + ALIAS(H452, IC_C12.5) + NET_C(IC_C12.6, IC_B12.5) + ALIAS(H452Q, IC_C12.6) + NET_C(H256, IC_D13.1) + NET_C(H128, IC_D13.4) + NET_C(H64, IC_D13.5) + NET_C(H2, IC_D13.2) + NET_C(IC_D13.6, IC_K12.2) + NET_C(IC_E12.1, IC_D12.1, IC_C12.13, IC_B12.3, IC_K12.5, IC_B14.5) + ALIAS(H_RESETQ, IC_K12.5) + ALIAS(H_RESET, IC_K12.6) + NET_C(H32Q, IC_B14.1) + NET_C(IC_B14.6, IC_B14.2) + NET_C(IC_B14.3, IC_B14.4) + ALIAS(H_BLANK, IC_B14.6) + NET_C(H_BLANK, IC_B12.4) + NET_C(H4, IC_E13.9) + NET_C(H16, IC_E13.11) + NET_C(H32, IC_E13.13) + NET_C(H64, IC_E13.5) + ALIAS(H4Q, IC_E13.8) + ALIAS(H16Q, IC_E13.10) + ALIAS(H32Q, IC_E13.12) + ALIAS(H64Q, IC_E13.6) + ALIAS(H_SYNCQ, IC_B12.6) + NET_C(H_SYNCQ, IC_E13.3, IC_A14.10) + NET_C(H_INFO, IC_A14.11) + NET_C(H64Q, IC_A14.9) + NET_C(IC_A14.8, IC_A14.3, IC_A14.4, IC_A14.5) + NET_C(IC_A14.6, IC_B11.5) + NET_C(H8, IC_B11.3) + NET_C(H16, IC_B11.2) + NET_C(IC_B11.1, IC_B12.2) + NET_C(H2, IC_B12.13) + NET_C(IC_E13.4, IC_B12.1) + ALIAS(H_SYNC, IC_E13.4) + ALIAS(H_COUNTQ, IC_B12.12) + + // Vertical Timing + NET_C(V8, IC_J13.5) + NET_C(V512, IC_J13.4) + NET_C(IC_J13.6, IC_K12.12) + NET_C(H_RESET, IC_K12.11) + NET_C(VCC, IC_K12.10, IC_K12.13) + ALIAS(V_RESETQ, IC_K12.9) + ALIAS(V_RESET, IC_K12.8) + NET_C(V_RESET, IC_F12.2, IC_F12.3, IC_H12.2, IC_H12.3, IC_B11.12) + NET_C(H_BLANK, IC_F12.14) + NET_C(IC_F12.12, IC_F12.1) + NET_C(IC_F12.11, IC_H12.14) + NET_C(IC_H12.12, IC_H12.1) + NET_C(IC_H12.11, IC_J12.12) + NET_C(VCC, IC_J12.1, IC_J12.4, IC_J12.8, IC_J12.11) + NET_C(IC_J12.3, IC_J12.9) + NET_C(V_RESETQ, IC_J12.13, IC_J12.10) + ALIAS(V1, IC_F12.12) + ALIAS(V2, IC_F12.9) + ALIAS(V4, IC_F12.8) + ALIAS(V8, IC_F12.11) + ALIAS(V16, IC_H12.12) + ALIAS(V32, IC_H12.9) + ALIAS(V64, IC_H12.8) + ALIAS(V128, IC_H12.11) + ALIAS(V256, IC_J12.3) + ALIAS(V256Q, IC_J12.2) + ALIAS(V512, IC_J12.5) + ALIAS(V512Q, IC_J12.6) + NET_C(V8, IC_B11.8) + NET_C(IC_B11.10, IC_B11.11) + NET_C(IC_B11.13, IC_B11.9) + ALIAS(V_SYNC, IC_B11.10) + NET_C(V_SYNC, IC_B11.6) + ALIAS(COMP_SYNC, IC_B11.4) + + // Out-of-Bounds Detection + NET_C(RESET2, IC_D13.10) + NET_C(H16, IC_D13.12) + NET_C(H128, IC_D13.9, IC_C13.4) + NET_C(H32, IC_D13.13, IC_C13.3) + NET_C(H452Q, IC_C13.5) + NET_C(IC_D13.8, IC_B13.9) + NET_C(IC_C13.6, IC_B13.12) + NET_C(IC_B13.8, IC_B13.13) + NET_C(IC_B13.11, IC_B13.10, IC_E14.5) + NET_C(V_INFOQ, IC_E14.4) + ALIAS(OOB, IC_E14.6) + + // Tank Resets + NET_C(OOB, IC_K8.1, IC_K8.12) + NET_C(TANK2, IC_K8.2) + NET_C(STARTQ, IC_L8.1, IC_L8.13) + NET_C(IC_K8.3, IC_L8.2) + NET_C(IC_L8.3, IC_L12.1, IC_L12.13) + NET_C(VCC, IC_L12.2, IC_L12.4, IC_L12.10, IC_L12.12) + NET_C(RESET2, IC_L12.3) + NET_C(V256, IC_L12.11) + ALIAS(HRST2Q, IC_L12.5) + ALIAS(VRST2Q, IC_L12.9) + + NET_C(TANK1, IC_K8.13) + NET_C(IC_K8.11, IC_L8.12) + NET_C(IC_L8.11, IC_L9.1, IC_L9.13) + NET_C(VCC, IC_L9.2, IC_L9.4, IC_L9.10, IC_L9.12) + NET_C(H_INFOQ, IC_L9.11) + NET_C(V_RESET, IC_L9.3) + ALIAS(HRST1Q, IC_L9.9) + ALIAS(VRST1Q, IC_L9.5) + + // HMCE + NET_C(GND, IC_K9.12) + NET_C(VCC, IC_K9.4, IC_K9.13, IC_K9.1) + NET_C(VLD2, IC_K9.11) + NET_C(H452Q, IC_K9.3) + NET_C(IC_K9.5, IC_K9.10) + NET_C(IC_K9.9, IC_K9.2) + ALIAS(HMCEQ, IC_K9.5) + ALIAS(HMCE, IC_K9.6) + + // Blo-Up 1 & Blo-Up 2 + NET_C(V5, R28.1, R29.1) + NET_C(GND, C19.2, C18.2, C15.2, C16.2) + NET_C(R28.2, IC_C11.2, IC_C11.1, C19.1) + NET_C(R29.2, IC_C11.12, IC_C11.13, C18.1) + NET_C(C15.1, IC_C11.3) + NET_C(C16.1, IC_C11.11) + NET_C(HT1Q, IC_C11.4, IC_C11.6) + NET_C(HT2Q, IC_C11.8, IC_C11.10) + ALIAS(BLO_UP1, IC_C11.5) + ALIAS(BLO_UP2, IC_C11.9) + + // Flash & TM1 + NET_C(GND, IC_A12.6, IC_A12.7) + NET_C(V_RESETQ, IC_A12.14) + NET_C(IC_A12.12, IC_A12.1, IC_B12.10) + NET_C(IC_A12.11, IC_B12.9) + HINT(IC_A12.9, NC) + NET_C(VLD2, IC_B12.11) + NET_C(ATTRACTQ, IC_M13.1) + NET_C(IC_M13.2, IC_A13.2) + NET_C(IC_B12.8, IC_A13.3) + ALIAS(FLASH, IC_A12.8) + ALIAS(TM1, IC_A13.1) + + // Tank 1 Control + NET_C(GND, P1_RIGHT_UP.1, P1_RIGHT_DOWN.1, P1_LEFT_UP.1, P1_LEFT_DOWN.1) + NET_C(GND, C39.2, C40.2, C41.2, C42.2) + NET_C(VCC, R56B.1, R57.1, R58.1, R59B.1, CR9.K, CR10.K, CR11.K, CR12.K) + + NET_C(P1_RIGHT_UP.2, R63B.1) + NET_C(R63B.2, R59B.2, CR9.A, C42.1, IC_E15.2, IC_E15.12) + NET_C(P1_RIGHT_DOWN.2, R61.1) + NET_C(R61.2, R57.2, CR11.A, C40.1, IC_E15.6, IC_E15.9) + NET_C(P1_LEFT_UP.2, R62.1) + NET_C(R62.2, R58.2, CR10.A, C41.1, IC_E15.8, IC_E15.3) + NET_C(P1_LEFT_DOWN.2, R60B.1) + NET_C(R60B.2, R56B.2, CR12.A, C39.1, IC_E15.11, IC_E15.5) + + ALIAS(ACC1, IC_E15.1) + ALIAS(STOP1, IC_E15.4) + ALIAS(RR1, IC_E15.10) + ALIAS(RL1, IC_E15.13) + + NET_C(TM1, IC_E14.2, IC_C14.10, IC_E14.12, IC_E14.9) + NET_C(STOP1, IC_E14.1) + NET_C(ACC1, IC_C14.11) + NET_C(RR1, IC_E14.13) + NET_C(RL1, IC_E14.10) + + NET_C(BOUNCE1Q, IC_F14.5) + NET_C(ATTRACTQ, IC_F14.4) + NET_C(IC_E14.3, IC_F14.3) + NET_C(IC_F14.6, IC_J14.2, IC_J14.3) + NET_C(IC_C14.8, IC_J14.1) + NET_C(IC_J14.9, IC_K13.9, IC_H14.4) + NET_C(IC_J14.8, IC_K13.10, IC_L13.9, IC_H14.5) + NET_C(IC_J14.11, IC_K13.11, IC_L13.10, IC_H14.6) + NET_C(IC_L13.8, IC_C14.9) + + NET_C(GND, IC_H14.3) + NET_C(VCC, IC_H14.10, IC_H14.7) + NET_C(VLD1, IC_H14.2) + NET_C(IC_K13.8, IC_M13.5) + NET_C(IC_M13.6, IC_H14.1) + NET_C(IC_H14.15, IC_M13.11) + NET_C(IC_H14.9, IC_M13.10, IC_L13.4) + NET_C(BOUNCE1Q, IC_L13.5) + ALIAS(G01, IC_L13.6) + + NET_C(HIT2Q, IC_H11.5) + NET_C(IC_E14.11, IC_H11.4) + NET_C(IC_H11.6, IC_H10.5) + NET_C(IC_E14.8, IC_H10.4) + NET_C(STARTQ, IC_H10.11) + NET_C(VCC, IC_H10.9) + NET_C(GND, IC_H10.15, IC_H10.1, IC_H10.10, IC_H10.14) + NET_C(IC_H10.12, IC_H11.10) + NET_C(IC_H10.13, IC_H11.9) + NET_C(IC_H11.8, IC_D8.12) + NET_C(VCC, IC_D8.1, IC_D8.4) + NET_C(STARTQ, IC_D8.13) + HINT(IC_D8.3, NC) + ALIAS(P1D0, IC_H10.3) + ALIAS(P1D1, IC_H10.2) + ALIAS(P1D2, IC_H10.6) + ALIAS(P1D3, IC_H10.7) + ALIAS(P1D4, IC_D8.2) + ALIAS(P1SP0, IC_J14.9) + ALIAS(P1SP1, IC_J14.8) + ALIAS(P1SP2, IC_J14.11) + + // Tank 2 Control + NET_C(GND, P2_RIGHT_UP.1, P2_RIGHT_DOWN.1, P2_LEFT_UP.1, P2_LEFT_DOWN.1) + NET_C(GND, C33C.2, C34C.2, C35C.2, C36C.2) + NET_C(VCC, R48B.1, R49B.1, R50B.1, R51B.1, CR5.K, CR6.K, CR7.K, CR8.K) + + NET_C(P2_RIGHT_UP.2, R55B.1) + NET_C(R55B.2, R51B.2, CR5.A, C36C.1, IC_D15.2, IC_D15.12) + NET_C(P2_RIGHT_DOWN.2, R53B.1) + NET_C(R53B.2, R49B.2, CR7.A, C34C.1, IC_D15.6, IC_D15.9) + NET_C(P2_LEFT_UP.2, R54B.1) + NET_C(R54B.2, R50B.2, CR6.A, C35C.1, IC_D15.8, IC_D15.3) + NET_C(P2_LEFT_DOWN.2, R52B.1) + NET_C(R52B.2, R48B.2, CR8.A, C33C.1, IC_D15.11, IC_D15.5) + + ALIAS(ACC2, IC_D15.1) + ALIAS(STOP2, IC_D15.4) + ALIAS(RR2, IC_D15.10) + ALIAS(RL2, IC_D15.13) + + NET_C(TM1, IC_D14.2, IC_C14.4, IC_D14.12, IC_D14.9) + NET_C(STOP2, IC_D14.1) + NET_C(ACC2, IC_C14.3) + NET_C(RR2, IC_D14.13) + NET_C(RL2, IC_D14.10) + + NET_C(BOUNCE2Q, IC_F14.9) + NET_C(ATTRACTQ, IC_F14.10) + NET_C(IC_D14.3, IC_F14.11) + NET_C(IC_F14.8, IC_L14.2, IC_L14.3) + NET_C(IC_C14.6, IC_L14.1) + NET_C(IC_L14.9, IC_K13.4, IC_K14.4) + NET_C(IC_L14.8, IC_K13.5, IC_L13.12, IC_K14.5) + NET_C(IC_L14.11, IC_K13.3, IC_L13.13, IC_K14.6) + NET_C(IC_L13.11, IC_C14.5) + + NET_C(GND, IC_K14.3) + NET_C(VCC, IC_K14.10, IC_K14.7) + NET_C(VLD2, IC_K14.2) + NET_C(IC_K13.6, IC_M13.9) + NET_C(IC_M13.8, IC_K14.1) + NET_C(IC_K14.15, IC_M13.13) + NET_C(IC_K14.9, IC_M13.12, IC_L13.2) + NET_C(BOUNCE2Q, IC_L13.1) + ALIAS(G02, IC_L13.3) + + NET_C(HIT1Q, IC_H11.2) + NET_C(IC_D14.11, IC_H11.1) + NET_C(IC_H11.3, IC_F11.5) + NET_C(IC_D14.8, IC_F11.4) + NET_C(STARTQ, IC_F11.11) + NET_C(VCC, IC_F11.9) + NET_C(GND, IC_F11.15, IC_F11.1, IC_F11.10, IC_F11.14) + NET_C(IC_F11.12, IC_H11.12) + NET_C(IC_F11.13, IC_H11.13) + NET_C(IC_H11.11, IC_D8.9) + NET_C(VCC, IC_D8.8, IC_D8.11) + NET_C(STARTQ, IC_D8.10) + HINT(IC_D8.6, NC) + ALIAS(P2D0, IC_F11.3) + ALIAS(P2D1, IC_F11.2) + ALIAS(P2D2, IC_F11.6) + ALIAS(P2D3, IC_F11.7) + NET_C(IC_D8.5, IC_E8.10) + ALIAS(P2D4, IC_D8.5) + NET_C(BOUNCE2, IC_E8.9) + ALIAS(P2D4S, IC_E8.8) + ALIAS(P2SP0, IC_L14.9) + ALIAS(P2SP1, IC_L14.8) + ALIAS(P2SP2, IC_L14.11) + + // Shell 1 Control + NET_C(GND, P1_FIRE.1, C31.2, C100.2, IC_C9.12, IC_C9.4) + NET_C(P1_FIRE.2, R43.1) + NET_C(R43.2, C31.1, R41.2, CR2.A, IC_B15.1) + NET_C(VCC, R41.1, CR2.K) + NET_C(BLO_UP2, IC_N7.5) + NET_C(SRS1, IC_N7.6) + NET_C(IC_N7.4, IC_A15.1) + NET_C(HMCEQ, IC_A15.3) + NET_C(ATTRACTQ, IC_A15.2) + NET_C(VCC, IC_A15.4, RUNK1.2, FIRE1_ADJUST.3, FIRE1_ADJUST.2, IC_C9.3, IC_A8.1, IC_A8.4) + NET_C(V_RESET, IC_A8.3, IC_A8.11) + NET_C(IC_A15.5, IC_B15.13) + NET_C(IC_B15.11, IC_C9.11, IC_B15.2) + NET_C(IC_B15.3, IC_B15.12) + NET_C(PLAYFIELD, IC_B9.8, IC_B7.4, C100.1) + NET_C(SHELL1, IC_B7.5) + NET_C(IC_B7.6, IC_B9.6) + NET_C(HIT2, IC_B9.5) + NET_C(IC_B9.4, IC_C9.13) + NET_C(C11.1, IC_C9.15) + NET_C(C11.2, IC_C9.14, FIRE1_ADJUST.1) + NET_C(C12.1, IC_C9.1) + NET_C(C12.2, IC_C9.2, RUNK1.1) + NET_C(IC_C9.10, IC_C9.5) + ALIAS(FIRE1, IC_C9.10) + ALIAS(FIRE1Q, IC_C9.9) + ALIAS(EXPL1, IC_C9.6) + ALIAS(EXPL1Q, IC_C9.7) + NET_C(TANK2, IC_B9.9) + NET_C(IC_B9.10, IC_B9.11) + NET_C(TANK1, IC_B10.9) + NET_C(IC_B10.8, IC_B9.12) + ALIAS(TANK1Q, IC_B10.8) + NET_C(HT1Q, IC_B10.5) + NET_C(IC_B10.6, IC_B9.2) + NET_C(IC_B9.13, IC_B9.3) + NET_C(IC_B9.1, IC_A9.1) + NET_C(IC_A9.3, IC_A9.12, IC_A8.2) + NET_C(IC_A9.11, IC_A9.2) + NET_C(IC_A8.5, IC_E8.5) + ALIAS(BOUNCE1, IC_A8.5) + NET_C(IC_A8.6, IC_A9.13) + ALIAS(BOUNCE1Q, IC_A8.6) + NET_C(P1D4, IC_E8.4) + ALIAS(P1D4S, IC_E8.6) + + // Shell 2 Control + NET_C(GND, P2_FIRE.1, C30.2, IC_C8.12, IC_C8.4) + NET_C(P2_FIRE.2, R42.1) + NET_C(R42.2, C30.1, R40.2, CR3.A, IC_B15.4) + NET_C(VCC, R40.1, CR3.K) + NET_C(BLO_UP1, IC_N7.3) + NET_C(SRS2, IC_N7.2) + NET_C(IC_N7.1, IC_A15.13) + NET_C(HMCEQ, IC_A15.11) + NET_C(ATTRACTQ, IC_A15.12) + NET_C(VCC, IC_A15.10, R16.2, R15.2, IC_C8.3, IC_A8.10, IC_A8.13) + NET_C(IC_A15.9, IC_B15.10) + NET_C(IC_B15.8, IC_C8.11, IC_B15.5) + NET_C(IC_B15.6, IC_B15.9) + NET_C(PLAYFIELD, IC_B8.8, IC_B7.1) + NET_C(SHELL2, IC_B7.2) + NET_C(IC_B7.3, IC_B8.6) + NET_C(HIT1, IC_B8.5) + NET_C(IC_B8.4, IC_C8.13) + NET_C(C8.1, IC_C8.15) + NET_C(C8.2, IC_C8.14, R16.1) + NET_C(C9.1, IC_C8.1) + NET_C(C9.2, IC_C8.2, R15.1) + NET_C(IC_C8.10, IC_C8.5) + ALIAS(FIRE2, IC_C8.10) + ALIAS(FIRE2Q, IC_C8.9) + ALIAS(EXPL2, IC_C8.6) + ALIAS(EXPL2Q, IC_C8.7) + NET_C(TANK1, IC_B8.9) + NET_C(IC_B8.10, IC_B8.12) + NET_C(TANK2, IC_B10.11) + NET_C(IC_B10.10, IC_B8.11) + ALIAS(TANK2Q, IC_B10.10) + NET_C(HT2Q, IC_B10.3) + NET_C(IC_B10.4, IC_B8.2) + NET_C(IC_B8.13, IC_B8.3) + NET_C(IC_B8.1, IC_A9.4) + NET_C(IC_A9.6, IC_A9.9, IC_A8.12) + NET_C(IC_A9.8, IC_A9.5) + ALIAS(BOUNCE2, IC_A8.9) + NET_C(IC_A8.8, IC_A9.10) + ALIAS(BOUNCE2Q, IC_A8.8) + + // Score + NET_C(VCC, IC_J8.1, IC_J8.13) + NET_C(GND, IC_J8.2, IC_J8.12) + NET_C(TANK2, IC_K8.4) + NET_C(SHELL1, IC_K8.5) + NET_C(IC_K8.6, IC_J8.4) + NET_C(V_RESET, IC_J8.3, IC_J8.11) + NET_C(IC_J8.5, IC_J7.2) + NET_C(MTK2, IC_J7.3) + NET_C(IC_J7.1, IC_C10.14) + NET_C(START, IC_C10.2, IC_C10.3, IC_D11.2, IC_D11.3, IC_E11.2, IC_E11.3) + ALIAS(HIT2, IC_J8.5) + ALIAS(HIT2Q, IC_J8.6) + ALIAS(HIT1, IC_J8.9) + ALIAS(HIT1Q, IC_J8.8) + ALIAS(HT1Q, IC_J7.13) + ALIAS(HT2Q, IC_J7.1) + NET_C(IC_C10.12, IC_C10.1) + ALIAS(SCR1A, IC_C10.12) + ALIAS(SCR1B, IC_C10.9) + ALIAS(SCR1C, IC_C10.8) + ALIAS(SCR1D, IC_C10.11) + NET_C(TANK1, IC_K8.10) + NET_C(SHELL2, IC_K8.9) + NET_C(IC_K8.8, IC_J8.10) + NET_C(IC_J8.9, IC_J7.12) + NET_C(MTK1, IC_J7.11) + NET_C(IC_J7.13, IC_D11.1) + NET_C(SCR1D, IC_D11.14) + NET_C(IC_D11.12, IC_E11.1) + NET_C(IC_D11.11, IC_E11.14) + ALIAS(SCR1E, IC_D11.11) + ALIAS(SCR2A, IC_D11.9) + ALIAS(SCR2B, IC_D11.8) + ALIAS(SCR2C, IC_D11.11) + ALIAS(SCR1F, IC_E11.12) + ALIAS(SCR2D, IC_E11.9) + ALIAS(SCR2E, IC_E11.8) + ALIAS(SCR2F, IC_E11.11) + + // Memory + TTL_9322_DIP(IC_F10) + TTL_9322_DIP(IC_F8) + TTL_9322_DIP(IC_D10) + TTL_9322_DIP(IC_E10) + NET_C(VCC, IC_F10.16, IC_F8.16, IC_D10.16, IC_E10.16) + NET_C(GND, IC_F10.8, IC_F8.8, IC_D10.8, IC_E10.8, IC_F10.15, IC_F8.15, IC_D10.15, IC_E10.15) + + TTL_7400_DIP(IC_H8) + NET_C(VCC, IC_H8.14) + NET_C(GND, IC_H8.7) + + NET_C(H64, IC_F10.1, IC_F8.1, IC_H8.2) + NET_C(H64Q, IC_H8.12) + NET_C(H452Q, IC_D10.1, IC_E10.1) + NET_C(P1D0, IC_F10.2) + NET_C(P2D0, IC_F10.3) + NET_C(P1D1, IC_F10.5) + NET_C(P2D1, IC_F10.6) + NET_C(P1D2, IC_F10.14) + NET_C(P2D2, IC_F10.13) + NET_C(P1D3, IC_F10.11) + NET_C(P2D3, IC_F10.10) + + NET_C(P1D4, IC_F8.2) + NET_C(P2D4, IC_F8.3) + NET_C(P1D4S, IC_F8.5) + NET_C(P2D4S, IC_F8.6) + NET_C(P1T2, IC_F8.14) + NET_C(P1T2, IC_F8.13) + NET_C(P1T3, IC_F8.11) + NET_C(P1T3, IC_F8.10) + + NET_C(P1T4, IC_H8.13) + NET_C(P2T4, IC_H8.1) + NET_C(IC_H8.11, IC_H8.10) + NET_C(IC_H8.3, IC_H8.9) + + NET_C(SCR1A, IC_D10.2) + NET_C(SCR2A, IC_D10.3) + NET_C(SCR1B, IC_D10.5) + NET_C(SCR2B, IC_D10.6) + NET_C(SCR1C, IC_D10.14) + NET_C(SCR2C, IC_D10.13) + NET_C(SCR1D, IC_D10.11) + NET_C(SCR2D, IC_D10.10) + + NET_C(SCR1E, IC_E10.2) + NET_C(SCR2E, IC_E10.3) + NET_C(SCR1F, IC_E10.5) + NET_C(SCR2F, IC_E10.6) + NET_C(GND, IC_E10.14, IC_E10.13, IC_E10.11, IC_E10.10) + + ALIAS(D0, IC_F10.4) + ALIAS(D1, IC_F10.7) + ALIAS(D2, IC_F10.12) + ALIAS(D3, IC_F10.9) + + ALIAS(D4, IC_F8.4) + ALIAS(D4S, IC_F8.7) + ALIAS(T2, IC_F8.12) + ALIAS(T3, IC_F8.9) + + ALIAS(T4, IC_H8.8) + + ALIAS(SCRA, IC_D10.4) + ALIAS(SCRB, IC_D10.7) + ALIAS(SCRC, IC_D10.12) + ALIAS(SCRD, IC_D10.9) + + ALIAS(SCRE, IC_E10.4) + ALIAS(SCRF, IC_E10.7) + HINT(IC_E10.12, NC) + HINT(IC_E10.9, NC) + + TTL_74153_DIP(IC_D9) + TTL_74153_DIP(IC_E9) + TTL_74153_DIP(IC_J9) + TTL_74153_DIP(IC_H9) + TTL_74153_DIP(IC_F9) + NET_C(VCC, IC_D9.16, IC_E9.16, IC_J9.16, IC_H9.16, IC_F9.16) + NET_C(GND, IC_D9.8, IC_E9.8, IC_J9.8, IC_H9.8, IC_F9.8) + NET_C(GND, IC_D9.1, IC_E9.1, IC_J9.1, IC_H9.1, IC_F9.1) + NET_C(GND, IC_D9.15, IC_E9.15, IC_J9.15, IC_H9.15, IC_F9.15) + + NET_C(VCC, R13.1) + + NET_C(R13.2, IC_D9.6) + NET_C(GND, IC_D9.5) + NET_C(VCC, IC_D9.4) + NET_C(R13.2, IC_D9.3) + NET_C(V256, IC_D9.10) + NET_C(SCRF, IC_D9.11) + NET_C(D3, IC_D9.12) + NET_C(V256, IC_D9.13) + + NET_C(V128, IC_E9.6) + NET_C(SCRE, IC_E9.5) + NET_C(D3, IC_E9.4) + NET_C(V128, IC_E9.3) + NET_C(V64, IC_E9.10) + NET_C(SCRD, IC_E9.11) + NET_C(D1, IC_E9.12) + NET_C(V64, IC_E9.13) + + NET_C(GND, IC_J9.6) + NET_C(SCRC, IC_J9.5) + NET_C(D0, IC_J9.4) + NET_C(V32, IC_J9.3) + NET_C(D4S, IC_J9.10) + NET_C(SCRB, IC_J9.11) + NET_C(H32Q, IC_J9.12) + NET_C(V16, IC_J9.13) + + NET_C(D3, IC_H9.6) + NET_C(SCRA, IC_H9.5) + NET_C(D4, IC_H9.4) + NET_C(H452, IC_H9.3) + NET_C(D2, IC_H9.10) + NET_C(V16, IC_H9.11) + NET_C(T4, IC_H9.12) + NET_C(H256, IC_H9.13) + + NET_C(D1, IC_F9.6) + NET_C(V8, IC_F9.5) + NET_C(T3, IC_F9.4) + NET_C(H128, IC_F9.3) + NET_C(D0, IC_F9.10) + NET_C(V4, IC_F9.11) + NET_C(T2, IC_F9.12) + NET_C(H64, IC_F9.13) + + NET_C(H_INFOQ, IC_D9.14, IC_E9.14, IC_J9.14, IC_H9.14, IC_F9.14, IC_E8.13) + NET_C(V_INFOQ, IC_D9.2, IC_E9.2, IC_J9.2, IC_H9.2, IC_F9.2, IC_E8.12) + + PROM_MK28000_DIP(IC_R10) + PARAM(IC_R10.ROM, "gfx") + NET_C(VCC, IC_R10.1, IC_R10.14, IC_R10.24) + NET_C(GND, IC_R10.9) + NET_C(H16, IC_R10.13) + NET_C(IC_E8.11, IC_R10.15) + NET_C(IC_D9.7, IC_R10.8) + NET_C(IC_D9.9, IC_R10.10) + NET_C(IC_E9.7, IC_R10.11) + NET_C(IC_E9.9, IC_R10.12) + NET_C(IC_J9.7, IC_R10.7) + NET_C(IC_J9.9, IC_R10.6) + NET_C(IC_H9.7, IC_R10.5) + NET_C(IC_H9.9, IC_R10.4) + NET_C(IC_F9.7, IC_R10.3) + NET_C(IC_F9.9, IC_R10.2) + + TTL_7406_DIP(IC_M10) + TTL_7406_DIP(IC_N13) + NET_C(VCC, IC_M10.14, IC_N13.14) + NET_C(GND, IC_M10.7, IC_N13.7, R19.2, R20.2, R21.2, R22.2, R23.2, R24.2, R25.2, R26.2) + NET_C(IC_R10.16, R19.1, IC_M10.9) + NET_C(IC_R10.17, R20.1, IC_M10.5) + NET_C(IC_R10.18, R21.1, IC_M10.11) + NET_C(IC_R10.19, R22.1, IC_M10.13) + NET_C(IC_R10.20, R23.1, IC_M10.1) + NET_C(IC_R10.21, R24.1, IC_M10.3) + NET_C(IC_R10.22, R25.1, IC_N13.11) + NET_C(IC_R10.23, R26.1, IC_N13.9) + ALIAS(ROM_D7, IC_M10.8) + ALIAS(ROM_D6, IC_M10.6) + ALIAS(ROM_D5, IC_M10.10) + ALIAS(ROM_D4, IC_M10.12) + ALIAS(ROM_D3, IC_M10.2) + ALIAS(ROM_D2, IC_M10.4) + ALIAS(ROM_D1, IC_N13.10) + ALIAS(ROM_D0, IC_N13.8) + + // Video Summing + NET_C(VCC, IC_N10.10) + NET_C(GND, IC_N10.15) + NET_C(H4Q, IC_N10.2) + NET_C(PFLDQ, IC_N10.1) + ALIAS(FIELD, IC_N10.7) + NET_C(ROM_D0, IC_N10.11) + NET_C(ROM_D1, IC_N10.12) + NET_C(ROM_D2, IC_N10.13) + NET_C(ROM_D3, IC_N10.14) + NET_C(ROM_D4, IC_N10.3) + NET_C(ROM_D5, IC_N10.4) + NET_C(ROM_D6, IC_N10.5) + NET_C(ROM_D7, IC_N10.6) + + NET_C(IC_N10.9, IC_K13.2) + NET_C(V512, IC_K13.13) + NET_C(MINEFIELD, IC_K13.1) + ALIAS(PLAYFIELD, IC_K13.12) + + NET_C(GNE, IC_C14.2) + NET_C(V_INFO, IC_C14.1) + NET_C(FLASH, IC_C14.13) + + NET_C(IC_K13.12, IC_A11.4) + NET_C(IC_C14.12, IC_A11.5) + ALIAS(PLAYFIELD_VIDEO, IC_A11.6) + + NET_C(PLAYFIELD_VIDEO, IC_F14.13, IC_D11V.9) + NET_C(TANK1Q, IC_B10.1) + NET_C(V_INFO, IC_F14.1) + NET_C(H452Q,IC_F14.2) + NET_C(SHELL1, IC_L7.11) + NET_C(BLAST1, IC_L7.12) + NET_C(IC_L7.13, IC_H8.5) + NET_C(IC_D11V.8, IC_H8.4) + NET_C(TANK2, IC_D7.12) + NET_C(MINE, IC_D7.11) + NET_C(SHELL2, IC_N7.8) + NET_C(BLAST2, IC_N7.9) + NET_C(IC_D7.13, IC_B7.10) + NET_C(IC_N7.10, IC_B7.9) + + NET_C(IC_B10.2, R5V.1) + NET_C(IC_F14.12, R34V.1) + NET_C(IC_H8.6, R6V.1) + NET_C(IC_B7.8, R4V.1) + + NET_C(VCC, R7V.1) + NET_C(R7V.2, R3V.1, C2.1) + NET_C(GND, C2.2) + NET_C(R5V.2, R34V.2, R6V.2, R3V.2, R4V.2, CR1.A, C29.1) + NET_C(CR1.K, COMP_SYNC) + ALIAS(VIDEO_OUT, C29.2) + + // Playfield & Score Load + NET_C(V_INFO, IC_H13.1) + NET_C(V32, IC_H13.2) + NET_C(H256, C23.1) + NET_C(C23.2, R32.1, IC_H13.13) + NET_C(V_INFOQ, IC_A10.2) + NET_C(H32, C17.1) + NET_C(C17.2, R27.1, IC_A10.1) + NET_C(GND, R32.2, R27.2) + NET_C(IC_H13.12, IC_A10.5) + NET_C(IC_A10.3, IC_A10.4) + NET_C(IC_A10.6, IC_A10.9) + NET_C(H_INFOQ, IC_A10.10) + ALIAS(PFLDQ, IC_A10.8) + + // Mine Matrix + TTL_7400_DIP(IC_A10) + TTL_7486_DIP(IC_F13) + NET_C(VCC, IC_A10.14, IC_F13.14) + NET_C(GND, IC_A10.7, IC_F13.7) + + NET_C(V8, IC_A10.13) + NET_C(H8, IC_A10.12) + ALIAS(SQUARES, IC_A10.11) + NET_C(V4, IC_F13.10) + NET_C(V2, IC_F13.9) + NET_C(H4, IC_F13.12) + NET_C(H2, IC_F13.13) + NET_C(IC_F13.8, IC_F13.5) + NET_C(IC_F13.11, IC_F13.4) + ALIAS(CHECKERBOARD, IC_F13.6) + NET_C(SQUARES, IC_D7.3) + NET_C(CHECKERBOARD, IC_D7.2) + ALIAS(MINE_MATRIX, IC_D7.1) + + // Minefield + TTL_7410_DIP(IC_H13) + NET_C(VCC, IC_H13.14) + NET_C(GND, IC_H13.7) + + NET_C(V256Q, IC_H13.5) + NET_C(V128, IC_H13.4, IC_H13.10) + NET_C(V32, IC_H13.3, IC_H13.11) + NET_C(V256, IC_A11.12) + NET_C(H_SYNC, IC_A11.13) + NET_C(IC_A11.11, IC_H13.9) + NET_C(H452, IC_C13.9) + NET_C(H452Q, IC_C13.1) + NET_C(H256, IC_C13.2) + NET_C(H128, IC_C13.10, IC_C13.13) + NET_C(H16, IC_C13.11) + NET_C(IC_H13.6, IC_B14.9) + NET_C(IC_H13.8, IC_B14.13) + ALIAS(MEV, IC_B14.8) + ALIAS(MEVQ, IC_B14.11) + NET_C(MEV, IC_B14.12) + NET_C(IC_C13.8, IC_B13.5) + NET_C(IC_C13.12, IC_B13.2) + ALIAS(MEH, IC_B13.3) + ALIAS(MEHQ, IC_B13.6) + NET_C(MEH, IC_B13.4) + NET_C(MEVQ, IC_B14.10, IC_A13.5) + NET_C(MEHQ, IC_B13.1, IC_A13.6) + ALIAS(MINEFIELD, IC_A13.4) + + // Mine Control + TTL_7400_DIP(IC_K7) + TTL_7420_DIP(IC_E7) + TTL_7474_DIP(IC_H7) + TTL_8277_DIP(IC_F7) + NET_C(VCC, IC_K7.14, IC_E7.14, IC_H7.14, IC_F7.16, IC_F7.12, IC_F7.6) + NET_C(GND, IC_K7.7, IC_E7.7, IC_H7.7, IC_F7.8, IC_H7.2, IC_H7.12, IC_F7.7, IC_F7.10, IC_F7.5, IC_F7.11) + + NET_C(IC_F7.3, IC_F7.13) + NET_C(MEV, IC_A11.10) + NET_C(V8, IC_A11.9) + NET_C(IC_A11.8, IC_F7.9, IC_H7.3, IC_H7.11) + NET_C(STARTQ, IC_H7.1, IC_H7.13, IC_F7.1) + NET_C(TANK1, IC_K7.13) + NET_C(TANK2, IC_K7.1) + NET_C(MINE, IC_K7.12, IC_K7.2) + NET_C(IC_K7.11, IC_H7.4) + NET_C(IC_K7.3, IC_H7.10) + ALIAS(MTK1, IC_H7.5) + ALIAS(MTK1Q, IC_H7.6) + ALIAS(MTK2, IC_H7.9) + ALIAS(MTK2Q, IC_H7.8) + + NET_C(MTK1Q, IC_K7.10) + NET_C(MTK2Q, IC_K7.9) + NET_C(IC_K7.8, IC_J7.8) + NET_C(IC_F7.14, IC_J7.9) + NET_C(IC_J7.10, IC_F7.4, IC_E7.5) + NET_C(FIELD, IC_E7.4) + NET_C(MINE_MATRIX, IC_E7.2) + NET_C(MINEFIELD, IC_E7.1) + NET_C(IC_E7.6, IC_E7.9, IC_E7.10, IC_E7.12, IC_E7.13) + ALIAS(MINE, IC_E7.8) + + // Horizontal & Vertical Load + TTL_7404_DIP(IC_J11) + TTL_7402_DIP(IC_K11) + TTL_9321_DIP(IC_L11) + NET_C(VCC, IC_J11.14, IC_K11.14, IC_L11.16) + NET_C(GND, IC_J11.7, IC_K11.7, IC_L11.8, C21.2) + + NET_C(V_RESET, IC_K11.8) + NET_C(V2, IC_K11.12) + NET_C(IC_K11.10, IC_K11.11) + NET_C(IC_K11.13, IC_K11.9, IC_J11.3) + NET_C(IC_J11.4, IC_K11.5, IC_K11.2) + NET_C(H16, IC_D14.5) + NET_C(H_INFO, IC_D14.4) + NET_C(IC_D14.6, IC_L11.1) + NET_C(H32, IC_L11.2) + NET_C(H64, IC_L11.3) + NET_C(IC_L11.4, C21.1) + NET_C(IC_L11.5, IC_K11.6) + NET_C(IC_L11.7, IC_K11.3) + ALIAS(LDH2BQ, IC_L11.7) + ALIAS(LDH2AQ, IC_L11.6) + ALIAS(LDH1BQ, IC_L11.5) + ALIAS(LDH1AQ, IC_L11.4) + NET_C(IC_K11.4, IC_J11.5) + NET_C(IC_K11.1, IC_J11.1) + ALIAS(VLD1, IC_K11.4) + ALIAS(VLD1Q, IC_J11.6) + ALIAS(VLD2, IC_K11.1) + ALIAS(VLD2Q, IC_J11.2) + + // Horizontal & Vertical Motion Latches + TTL_7474_DIP(IC_M8) + TTL_7474_DIP(IC_N8) + TTL_7474_DIP(IC_M12) + TTL_7474_DIP(IC_N12) + TTL_7474_DIP(IC_M9) + TTL_7474_DIP(IC_N9) + TTL_7474_DIP(IC_M11) + TTL_7474_DIP(IC_N11) + NET_C(VCC, IC_M8.14, IC_N8.14, IC_M12.14, IC_N12.14, IC_M9.14, IC_N9.14, IC_M11.14, IC_N11.14) + NET_C(GND, IC_M8.7, IC_N8.7, IC_M12.7, IC_N12.7, IC_M9.7, IC_N9.7, IC_M11.7, IC_N11.7) + NET_C(VCC, IC_M8.10, IC_M8.4, IC_N8.10, IC_N8.4, IC_M12.10, IC_M12.4, IC_N12.10, IC_N12.4, IC_N9.4) + NET_C(VCC, IC_M9.13, IC_M9.1, IC_N9.13, IC_M11.13, IC_M11.1, IC_N11.13, IC_N11.4) + + NET_C(VLD1Q, IC_M8.11, IC_M8.3, IC_N8.11, IC_N8.3, IC_M9.11, IC_M9.3, IC_N9.11, IC_N9.3) + NET_C(VLD2Q, IC_M12.11, IC_M12.3, IC_N12.11, IC_N12.3, IC_M11.11, IC_M11.3, IC_N11.11, IC_N11.3) + NET_C(G01, IC_L8.5, IC_M9.10, IC_M9.4, IC_N9.10, IC_N9.1) + NET_C(G02, IC_L8.9, IC_M11.10, IC_M11.4, IC_N11.10, IC_N11.1) + NET_C(H_COUNTQ, IC_L8.4, IC_L8.10) + NET_C(IC_L8.6, IC_M8.13, IC_M8.1, IC_N8.13, IC_N8.1) + NET_C(IC_L8.8, IC_M12.13, IC_M12.1, IC_N12.13, IC_N12.1) + NET_C(ROM_D0, IC_M8.12, IC_M12.12) + NET_C(ROM_D1, IC_M8.2, IC_M12.2) + NET_C(ROM_D2, IC_N8.12, IC_N12.12) + NET_C(ROM_D3, IC_N8.2, IC_N12.2) + NET_C(ROM_D4, IC_M9.12, IC_M11.12) + NET_C(ROM_D5, IC_M9.2, IC_M11.2) + NET_C(ROM_D6, IC_N9.12, IC_N11.12) + NET_C(ROM_D7, IC_N9.2, IC_N11.2) + + ALIAS(HA1, IC_M8.9) + ALIAS(HB1, IC_M8.5) + ALIAS(HC1, IC_N8.9) + ALIAS(HD1, IC_N8.5) + ALIAS(HA2, IC_M12.9) + ALIAS(HB2, IC_M12.5) + ALIAS(HC2, IC_N12.9) + ALIAS(HD2, IC_N12.5) + + ALIAS(VA1, IC_M9.9) + ALIAS(VB1, IC_M9.5) + ALIAS(VC1, IC_N9.9) + ALIAS(VD1, IC_N9.5) + ALIAS(VA2, IC_M11.9) + ALIAS(VB2, IC_M11.5) + ALIAS(VC2, IC_N11.9) + ALIAS(VD2, IC_N11.5) + + // Tank 1 Motion + TTL_9316_DIP(IC_A1) + TTL_9316_DIP(IC_B1) + TTL_9316_DIP(IC_A2) + TTL_9316_DIP(IC_B2) + TTL_9316_DIP(IC_C2) + TTL_74165_DIP(IC_A3) + TTL_74165_DIP(IC_B3) + TTL_74107_DIP(IC_N1) + NET_C(VCC, IC_A1.16, IC_B1.16, IC_A2.16, IC_B2.16, IC_C2.16, IC_A3.16, IC_B3.16, IC_N1.14) + NET_C(GND, IC_A1.8, IC_B1.8, IC_A2.8, IC_B2.8, IC_C2.8, IC_A3.8, IC_B3.8, IC_N1.7) + + TTL_7420_DIP(IC_M1) + TTL_7410_DIP(IC_M2) + TTL_7400_DIP(IC_C1) + TTL_7404_DIP(IC_J3) + TTL_7404_DIP(IC_A6) + TTL_7486_DIP(IC_K3) + TTL_7402_DIP(IC_L3) + TTL_7474_DIP(IC_F3) + NET_C(VCC, IC_M1.14, IC_M2.14, IC_C1.14, IC_J3.14, IC_A6.14, IC_K3.14, IC_L3.14, IC_F3.14) + NET_C(GND, IC_M1.7, IC_M2.7, IC_C1.7, IC_J3.7, IC_A6.7, IC_K3.7, IC_L3.7, IC_F3.7) + + NET_C(HA1, IC_A1.3) + NET_C(HB1, IC_A1.4) + NET_C(HC1, IC_A1.5) + NET_C(HD1, IC_A1.6) + + NET_C(VA1, IC_A2.3) + NET_C(VB1, IC_A2.4) + NET_C(VC1, IC_A2.5) + NET_C(VD1, IC_A2.6) + + NET_C(HRST1Q, IC_A1.1, IC_B1.1, IC_N1.10, IC_N1.13) + NET_C(VRST1Q, IC_A2.1, IC_B2.1, IC_C2.1) + + NET_C(CLOCKQ, IC_A6.9) + NET_C(IC_A6.8, IC_A1.2, IC_B1.2, IC_A3.2, IC_B3.2, IC_F3.11) + ALIAS(CLOCK1, IC_A6.8) + + NET_C(H_COUNTQ, IC_A6.1) + NET_C(IC_A6.2, IC_A2.2, IC_B2.2, IC_C2.2) + ALIAS(H_COUNT1, IC_A6.2) + + NET_C(VCC, IC_A1.7, IC_A1.10, IC_B1.10, IC_B1.3, IC_B1.4, IC_B1.5) + NET_C(VCC, IC_N1.1, IC_N1.4, IC_N1.8, IC_N1.11) + NET_C(VCC, IC_A2.7, IC_A2.10, IC_B2.10, IC_B2.3, IC_B2.4, IC_B2.5, IC_B2.6, IC_C2.3, IC_C2.5, IC_C2.6) + NET_C(VCC, IC_F3.13, IC_A3.10) + NET_C(GND, IC_B1.6, IC_C2.4) + + NET_C(IC_A1.15, IC_B1.7, IC_M1.5) + NET_C(IC_B1.15, IC_N1.12, IC_M2.5, IC_M1.1) + NET_C(IC_N1.3, IC_N1.9, IC_M2.4, IC_M1.2) + NET_C(IC_N1.6, IC_M2.3, IC_M1.4) + NET_C(IC_M1.6, IC_A1.9, IC_B1.9) + ALIAS(THR1Q, IC_M1.6) + ALIAS(THW1Q, IC_M2.6) + + NET_C(IC_A2.15, IC_B2.7, IC_C2.7, IC_C1.12) + NET_C(IC_B2.15, IC_C2.10) + NET_C(IC_C2.15, IC_C1.13, IC_F3.10) + NET_C(IC_C1.11, IC_A2.9, IC_B2.9, IC_C2.9) + ALIAS(TVR1Q, IC_C1.11) + + NET_C(THW1Q, IC_F3.12) + ALIAS(WINDO1, IC_F3.8) + NET_C(IC_F3.9, IC_A3.15, IC_B3.15, IC_L3.11) + NET_C(IC_A3.9, IC_B3.10) + NET_C(IC_B3.7, IC_K3.1) + + NET_C(FLASH, IC_C1.10, IC_J3.3) + NET_C(BLO_UP1, IC_C1.9) + ALIAS(FLASHQ, IC_J3.4) + NET_C(IC_C1.8, IC_K3.2) + NET_C(IC_K3.3, IC_L3.12) + ALIAS(TANK1, IC_L3.13) + + NET_C(LDH1AQ, IC_A3.1) + NET_C(LDH1BQ, IC_B3.1) + + NET_C(ROM_D0, IC_A3.11, IC_B3.11) + NET_C(ROM_D1, IC_A3.12, IC_B3.12) + NET_C(ROM_D2, IC_A3.13, IC_B3.13) + NET_C(ROM_D3, IC_A3.14, IC_B3.14) + NET_C(ROM_D4, IC_A3.3, IC_B3.3) + NET_C(ROM_D5, IC_A3.4, IC_B3.4) + NET_C(ROM_D6, IC_A3.5, IC_B3.5) + NET_C(ROM_D7, IC_A3.6, IC_B3.6) + + ALIAS(P1T2, IC_A2.13) + ALIAS(P1T3, IC_A2.12) + ALIAS(P1T4, IC_A2.11) + + // Tank 2 Motion Circuit + TTL_9316_DIP(IC_A5) + TTL_9316_DIP(IC_B5) + TTL_9316_DIP(IC_A4) + TTL_9316_DIP(IC_B4) + TTL_9316_DIP(IC_C4) + TTL_74165_DIP(IC_C3) + TTL_74165_DIP(IC_D3) + TTL_74107_DIP(IC_N5) + NET_C(VCC, IC_A5.16, IC_B5.16, IC_A4.16, IC_B4.16, IC_C4.16, IC_C3.16, IC_D3.16, IC_N5.14) + NET_C(GND, IC_A5.8, IC_B5.8, IC_A4.8, IC_B4.8, IC_C4.8, IC_C3.8, IC_D3.8, IC_N5.7) + + TTL_7402_DIP(IC_C6) + TTL_7420_DIP(IC_M5) + TTL_7410_DIP(IC_M4) + TTL_7400_DIP(IC_C5) + NET_C(VCC, IC_C6.14, IC_M5.14, IC_M4.14, IC_C5.14) + NET_C(GND, IC_C6.7, IC_M5.7, IC_M4.7, IC_C5.7) + + NET_C(CLOCKQ, IC_A6.5) + ALIAS(CLOCK2, IC_A6.5) + NET_C(IC_A6.6, IC_A5.2, IC_B5.2, IC_F3.3, IC_C3.2, IC_D3.2) + NET_C(HRST2Q, IC_A5.1, IC_B5.1, IC_N5.10, IC_N5.13) + NET_C(VCC, IC_B5.10, IC_B5.3, IC_B5.4, IC_B5.5, IC_N5.1, IC_N5.4, IC_N5.8, IC_N5.11, IC_C3.10, IC_F3.1, IC_A5.7, IC_A5.10) + NET_C(GND, IC_B5.6) + + NET_C(IC_B4.15, IC_C4.10) + NET_C(IC_C3.9, IC_D3.10) + NET_C(THW2Q, IC_F3.2) + NET_C(TVW2, IC_F3.4) + + NET_C(IC_F3.5, IC_C3.15, IC_D3.15, IC_C6.3) + + NET_C(HA2, IC_A5.3) + NET_C(HB2, IC_A5.4) + NET_C(HC2, IC_A5.5) + NET_C(HD2, IC_A5.6) + NET_C(IC_A5.15, IC_B5.7, IC_M5.1) + NET_C(IC_B5.15, IC_N5.12, IC_M5.2, IC_M4.5) + NET_C(IC_N5.3, IC_N5.9, IC_M5.5, IC_M4.3) + NET_C(IC_N5.6, IC_M5.4, IC_M4.4) + ALIAS(THR2Q, IC_M5.6) + ALIAS(THW2Q, IC_M4.6) + NET_C(THR2Q, IC_A5.9, IC_B5.9) + + NET_C(ROM_D0, IC_C3.11, IC_D3.11) + NET_C(ROM_D1, IC_C3.12, IC_D3.12) + NET_C(ROM_D2, IC_C3.13, IC_D3.13) + NET_C(ROM_D3, IC_C3.14, IC_D3.14) + NET_C(ROM_D4, IC_C3.3, IC_D3.3) + NET_C(ROM_D5, IC_C3.4, IC_D3.4) + NET_C(ROM_D6, IC_C3.5, IC_D3.5) + NET_C(ROM_D7, IC_C3.6, IC_D3.6) + + ALIAS(WINDO2, IC_F3.6) + NET_C(LDH2AQ, IC_C3.1) + NET_C(LDH2BQ, IC_D3.1) + + NET_C(BLO_UP2, IC_C5.13) + NET_C(FLASH, IC_C5.12) + NET_C(IC_C5.11, IC_K3.10) + NET_C(IC_D3.9, IC_K3.9) + NET_C(IC_K3.2, IC_C6.2) + ALIAS(TANK2, IC_C6.1) + + NET_C(VA2, IC_A4.3) + NET_C(VB2, IC_A4.4) + NET_C(VC2, IC_A4.5) + NET_C(VD2, IC_A4.6) + + NET_C(VCC, IC_A4.7, IC_A4.10, IC_B4.10, IC_B4.3, IC_B4.4, IC_B4.5, IC_B4.6, IC_C4.3, IC_C4.5, IC_C4.6) + NET_C(GND, IC_C4.4) + + NET_C(H_COUNTQ, IC_A6.3) + NET_C(IC_A6.4, IC_A4.2, IC_B4.2, IC_C4.2) + ALIAS(HCOUNT2, IC_A6.4) + + NET_C(VRST2Q, IC_A4.1, IC_B4.1, IC_C4.1) + ALIAS(P2T2, IC_A4.13) + ALIAS(P2T3, IC_A4.12) + ALIAS(P2T4, IC_A4.11) + + NET_C(IC_A4.15, IC_B4.7, IC_C4.7, IC_C5.10) + NET_C(IC_C4.15, IC_C5.9) + NET_C(IC_C5.8, IC_A4.9, IC_B4.9, IC_C4.9) + ALIAS(TVR2Q, IC_C5.8) + ALIAS(TVW2, IC_C4.15) + + // Shell 1 Motion + TTL_7474_DIP(IC_D1) + TTL_7474_DIP(IC_E1) + TTL_9316_DIP(IC_H1) + TTL_9316_DIP(IC_J1) + TTL_9316_DIP(IC_F1) + TTL_9316_DIP(IC_H2) + TTL_9316_DIP(IC_J2) + TTL_74107_DIP(IC_L1) + TTL_7408_DIP(IC_F2) + NET_C(VCC, IC_D1.14, IC_E1.14, IC_H1.16, IC_J1.16, IC_F1.16, IC_H2.16, IC_J2.16, IC_L1.14, IC_F2.14, IC_F1.1) + NET_C(GND, IC_D1.7, IC_E1.7, IC_H1.8, IC_J1.8, IC_F1.8, IC_H2.8, IC_J2.8, IC_L1.7, IC_F2.7) + + TTL_7402_DIP(IC_K1) + TTL_7404_DIP(IC_N4) + TTL_7420_DIP(IC_L2) + TTL_7486_DIP(IC_K2) + TTL_7474_DIP(IC_N3) + TTL_7408_DIP(IC_M3) + TTL_7474_DIP(IC_D2) + TTL_7474_DIP(IC_E2) + NET_C(VCC, IC_K1.14, IC_N4.14, IC_L2.14, IC_K2.14, IC_N3.14, IC_M3.14, IC_D2.14, IC_E2.14) + NET_C(GND, IC_K1.7, IC_N4.7, IC_L2.7, IC_K2.7, IC_N3.7, IC_M3.7, IC_D2.7, IC_E2.7) + + NET_C(VCC, R4.1, R5.1, R6.1, R7.1, R8.1, R9.1, R10.1, R11.1) + NET_C(VCC, IC_H2.7, IC_H2.10, IC_J2.10, IC_J2.3, IC_J2.4, IC_J2.5, IC_L1.1, IC_L1.4, IC_L1.8, IC_L1.11, IC_N3.1) + NET_C(VCC, IC_F1.7, IC_F1.10, IC_H1.10, IC_H1.3, IC_H1.4, IC_H1.5, IC_H1.6, IC_J1.3, IC_J1.5, IC_J1.6) + NET_C(VCC, IC_D1.1, IC_D1.13, IC_E1.1, IC_H2.1, IC_J2.1, IC_D2.4, IC_D2.10, IC_E2.4, IC_E2.10, IC_E1.10) + NET_C(VCC, IC_H1.1, IC_J1.1) + NET_C(GND, C110.2, IC_N3.2, IC_J2.6, IC_J1.4) + + NET_C(VLD1, IC_M2.1, IC_M2.2) + NET_C(FIRE1Q, IC_M2.13) + NET_C(IC_M2.12, IC_D2.3, IC_D2.11, IC_E2.3, IC_E2.11, IC_D1.3, IC_D1.11, IC_E1.3, IC_E1.11) + NET_C(EXPL1, IC_J3.13) + NET_C(IC_J3.12, IC_D2.1, IC_D2.13, IC_E2.1, IC_E2.13, IC_D1.4, IC_D1.10, IC_E1.4, IC_E1.13) + NET_C(HMCE, IC_F2.12, IC_F2.5, IC_F2.9, IC_C1.1) + NET_C(IC_D2.5, IC_F2.13) + NET_C(IC_E2.5, IC_F2.4) + NET_C(IC_D2.9, IC_F2.10) + NET_C(IC_E2.9, IC_C1.2) + + NET_C(FIRE1Q, C110.1, IC_C1.4) + NET_C(EXPL1Q, IC_C1.5) + ALIAS(FPE1, IC_C1.6) + NET_C(IC_C1.6, IC_L3.2) + NET_C(THW1Q, IC_L3.3) + NET_C(IC_L3.1, IC_J3.1) + NET_C(IC_J3.2, IC_M3.4, IC_N3.4) + NET_C(IC_M3.6, IC_H2.9, IC_J2.9) + NET_C(IC_M1.8, IC_M3.5) + + NET_C(IC_F2.11, IC_H2.3) + NET_C(IC_F2.6, IC_H2.4) + NET_C(IC_F2.8, IC_H2.5) + NET_C(IC_C1.3, IC_H2.6) + + NET_C(CLOCK1, IC_H2.2, IC_J2.2) + NET_C(H_COUNT1, IC_F1.2, IC_H1.2, IC_J1.2) + + NET_C(IC_H2.15, IC_J2.7, IC_M1.13, IC_N3.3) + NET_C(IC_J2.15, IC_L1.12, IC_M1.12, IC_M2.9) + NET_C(IC_L1.3, IC_L1.9, IC_M1.10, IC_M2.10) + NET_C(IC_L1.5, IC_M1.9, IC_M2.11) + NET_C(IC_N3.6, IC_L1.10, IC_L1.13) + + NET_C(IC_D1.5, IC_F1.3) + NET_C(IC_D1.9, IC_F1.4) + NET_C(IC_E1.5, IC_F1.5) + NET_C(IC_E1.9, IC_F1.6) + + NET_C(IC_F1.15, IC_H1.7, IC_J1.7, IC_F2.2) + NET_C(IC_H1.15, IC_J1.10) + NET_C(IC_J1.15, IC_J3.11, IC_F2.1) + NET_C(IC_F2.3, IC_K1.12) + NET_C(FPE1, IC_K1.9) + NET_C(TVR1Q, IC_K1.8) + ALIAS(SRS1, IC_K1.10) + NET_C(IC_K1.10, IC_K1.11) + NET_C(IC_K1.13, IC_J1.9, IC_H1.9, IC_F1.9) + + NET_C(IC_J3.10, IC_L3.5) + NET_C(IC_M2.8, IC_L3.6) + NET_C(IC_L3.4, IC_L2.1, IC_L2.9) + NET_C(FIRE1Q, IC_J3.5) + NET_C(IC_J3.6, IC_L2.2) + NET_C(S4V1, IC_L3.9) + NET_C(S8H1, IC_L3.8) + NET_C(IC_L3.10, IC_L2.4) + NET_C(S4H1, IC_M3.9) + NET_C(S8V1, IC_M3.10) + NET_C(IC_M3.8, IC_L2.5) + NET_C(IC_L2.6, IC_N4.5) + ALIAS(SHELL1, IC_N4.6) + + NET_C(S4V1, IC_K2.5) + NET_C(S8V1, IC_K2.4) + NET_C(S4H1, IC_K2.10) + NET_C(S8H1, IC_K2.9) + NET_C(S2V1, IC_K2.12) + NET_C(S2H1, IC_K2.13) + NET_C(IC_K2.6, IC_K2.2, IC_K1.2) + NET_C(IC_K2.8, IC_K2.1, IC_K1.3) + NET_C(FLASHQ, IC_K3.4) + NET_C(IC_K3.3, IC_K3.5) + NET_C(IC_K3.6, IC_L2.12) + NET_C(IC_K1.1, IC_K1.6) + NET_C(IC_K2.11, IC_K1.5) + NET_C(IC_K1.4, IC_L2.13) + NET_C(EXPL1, IC_L2.10) + NET_C(IC_L2.8, IC_N4.9) + ALIAS(BLAST1, IC_N4.8) + + ALIAS(S2H1, IC_H2.13) + ALIAS(S4H1, IC_H2.12) + ALIAS(S8H1, IC_H2.11) + + ALIAS(S2V1, IC_F1.13) + ALIAS(S4V1, IC_F1.12) + ALIAS(S8V1, IC_F1.11) + + NET_C(ROM_D0, R4.2, IC_D2.2) + NET_C(ROM_D1, R6.2, IC_E2.2) + NET_C(ROM_D2, R8.2, IC_E2.12) + NET_C(ROM_D3, R10.2, IC_D2.12) + NET_C(ROM_D4, R11.2, IC_D1.2) + NET_C(ROM_D5, R9.2, IC_D1.12) + NET_C(ROM_D6, R7.2, IC_E1.2) + NET_C(ROM_D7, R5.2, IC_E1.12) + + // Shell 2 Motion + TTL_7474_DIP(IC_E4) + TTL_7474_DIP(IC_D4) + TTL_7474_DIP(IC_D5) + TTL_7474_DIP(IC_E5) + TTL_9316_DIP(IC_H4) + TTL_9316_DIP(IC_J4) + TTL_9316_DIP(IC_F5) + TTL_9316_DIP(IC_H5) + TTL_9316_DIP(IC_J5) + NET_C(VCC, IC_E4.14, IC_D4.14, IC_D5.14, IC_E5.14, IC_H4.16, IC_J4.16, IC_F5.16, IC_H5.16, IC_J5.16) + NET_C(GND, IC_E4.7, IC_D4.7, IC_D5.7, IC_E5.7, IC_H4.8, IC_J4.8, IC_F5.8, IC_H5.8, IC_J5.8) + + TTL_74107_DIP(IC_L5) + TTL_7486_DIP(IC_K4) + TTL_7402_DIP(IC_K5) + TTL_7408_DIP(IC_F4) + TTL_7420_DIP(IC_L4) + NET_C(VCC, IC_L5.14, IC_K4.14, IC_K5.14, IC_F4.14, IC_L4.14) + NET_C(GND, IC_L5.7, IC_K4.7, IC_K5.7, IC_F4.7, IC_L4.7) + + NET_C(VCC, IC_E4.4, IC_D4.4, IC_E4.10, IC_D4.10, IC_D5.1, IC_D5.13, IC_E5.1) + NET_C(VCC, IC_J4.10, IC_J4.3, IC_J4.4, IC_J4.5, IC_H5.10, IC_H5.3, IC_H5.4, IC_H5.5, IC_H5.6, IC_J5.3, IC_J5.5, IC_J5.6) + NET_C(VCC, IC_H4.1, IC_H4.7, IC_H4.10, IC_J4.1, IC_F5.1, IC_F5.7, IC_F5.10, IC_H5.1, IC_J5.1, IC_N3.13, IC_L5.8, IC_L5.11, IC_L5.1, IC_L5.4, IC_E5.10) + NET_C(GND, C111.2, IC_J4.6, IC_J5.4, IC_N3.12) + + NET_C(FIRE2Q, IC_M4.1, IC_M4.2) + NET_C(VLD2, IC_M4.13) + NET_C(IC_M4.12, IC_E4.3, IC_D4.3, IC_E4.11, IC_D4.11, IC_D5.3, IC_D5.11, IC_E5.3, IC_E5.11) + + NET_C(EXPL2, IC_H3.11) + NET_C(IC_H3.10, IC_E4.1, IC_D4.1, IC_E4.13, IC_D4.13, IC_E5.13, IC_D5.4, IC_D5.10, IC_E5.4) + + NET_C(IC_E4.5, IC_F4.2) + NET_C(IC_D4.5, IC_F4.5) + NET_C(IC_E4.9, IC_F4.9) + NET_C(IC_D4.9, IC_C5.5) + NET_C(HMCE, IC_F4.1, IC_F4.4, IC_F4.10, IC_C5.4) + + NET_C(IC_F4.3, IC_H4.3) + NET_C(IC_F4.6, IC_H4.4) + NET_C(IC_F4.8, IC_H4.5) + NET_C(IC_C5.6, IC_H4.6) + + NET_C(HCOUNT2, IC_F5.2, IC_H5.2, IC_J5.2) + NET_C(IC_H5.15, IC_J5.10) + NET_C(IC_J5.15, IC_H3.13, IC_F4.12) + NET_C(IC_F5.15, IC_H5.7, IC_J5.7, IC_F4.13) + NET_C(IC_F4.11, IC_C6.12) + NET_C(FPE2, IC_C6.8) + NET_C(TVR2Q, IC_C6.9) + NET_C(IC_C6.10, IC_C6.11) + ALIAS(SRS2, IC_C6.10) + NET_C(IC_C6.13, IC_F5.9, IC_H5.9, IC_J5.9) + + NET_C(IC_D5.5, IC_F5.3) + NET_C(IC_D5.9, IC_F5.4) + NET_C(IC_E5.5, IC_F5.5) + NET_C(IC_E5.9, IC_F5.6) + + NET_C(CLOCK2, IC_H4.2, IC_J4.2) + NET_C(IC_H4.15, IC_J4.7, IC_M5.9, IC_N3.11) + NET_C(IC_J4.15, IC_L5.9, IC_M5.10, IC_M4.11) + NET_C(IC_L5.5, IC_L5.12, IC_M5.12, IC_M4.10) + NET_C(IC_L5.3, IC_M5.13, IC_M4.9) + NET_C(IC_M4.8, IC_K5.11) + NET_C(IC_H3.12, IC_K5.12) + + NET_C(FIRE2Q, C111.1, IC_C5.1) + NET_C(EXPL2Q, IC_C5.2) + NET_C(IC_C5.3, IC_C6.6) + ALIAS(FPE2, IC_C5.3) + NET_C(THW2Q, IC_C6.5) + NET_C(IC_C6.4, IC_H3.1) + NET_C(IC_H3.2, IC_N3.10, IC_M3.2) + NET_C(IC_M5.8, IC_M3.1) + NET_C(IC_M3.3, IC_H4.9, IC_J4.9) + NET_C(IC_N3.8, IC_L5.10, IC_L5.13) + + NET_C(S4H2, IC_M3.12) + NET_C(S8V2, IC_M3.13) + NET_C(S4V2, IC_K5.3) + NET_C(S8H2, IC_K5.2) + NET_C(IC_M3.11, IC_L4.5) + NET_C(IC_K5.1, IC_L4.2) + NET_C(FIRE2Q, IC_H3.9) + NET_C(IC_H3.8, IC_L4.4) + + NET_C(IC_K5.13, IC_L4.13, IC_L4.1) + NET_C(IC_L4.6, IC_N4.11) + ALIAS(SHELL2, IC_N4.10) + + NET_C(S4V2, IC_K4.1) + NET_C(S8V2, IC_K4.2) + NET_C(S4H2, IC_K4.10) + NET_C(S8H2, IC_K4.9) + NET_C(S2H2, IC_K4.12) + NET_C(S2V2, IC_K4.13) + NET_C(IC_K4.3, IC_K4.4, IC_K5.6) + NET_C(IC_K4.8, IC_K4.5, IC_K5.5) + NET_C(FLASHQ, IC_K3.12) + NET_C(IC_K4.6, IC_K3.13) + NET_C(IC_K5.4, IC_K5.9) + NET_C(IC_K5.11, IC_K5.8) + NET_C(IC_K3.11, IC_L4.12) + NET_C(IC_K5.10, IC_L4.10) + NET_C(EXPL2, IC_L4.9) + NET_C(IC_L4.8, IC_N4.13) + ALIAS(BLAST2, IC_N4.12) + + ALIAS(S2H2, IC_H4.13) + ALIAS(S4H2, IC_H4.12) + ALIAS(S8H2, IC_H4.11) + ALIAS(S2V2, IC_F5.13) + ALIAS(S4V2, IC_F5.12) + ALIAS(S8V2, IC_F5.11) + + NET_C(ROM_D0, IC_E4.2) + NET_C(ROM_D1, IC_D4.2) + NET_C(ROM_D2, IC_E4.12) + NET_C(ROM_D3, IC_D4.12) + NET_C(ROM_D4, IC_D5.2) + NET_C(ROM_D5, IC_D5.12) + NET_C(ROM_D6, IC_E5.2) + NET_C(ROM_D7, IC_E5.12) + + // Boom Com + TTL_9602_DIP(IC_N14) + NET_C(VCC, IC_N14.16, IC_N14.3, IC_N14.5, IC_N14.13, R38.2) + NET_C(GND, IC_N14.8, R10A.2, R9A.2) + NET_C(MTK1, IC_L7.5) + NET_C(EXPL1, C5.1) + NET_C(C5.2, R10A.1, IC_L7.6) + NET_C(MTK2, IC_L7.9) + NET_C(EXPL2, C6.1) + NET_C(C6.2, R9A.1, IC_L7.8) + NET_C(IC_L7.4, IC_K7.4) + NET_C(IC_L7.10, IC_K7.5) + NET_C(IC_K7.6, IC_N14.4) + NET_C(IC_N14.1, C27.1) + NET_C(IC_N14.2, C27.2, R38.1) + NET_C(IC_N14.6, IC_N13.5) + ALIAS(BOOM_COM, IC_N13.6) + + // HLE Noise Gen + CLOCK(NOISE_CLOCK, 10000) + NET_C(NOISE_CLOCK.GND, GND) + NET_C(NOISE_CLOCK.VCC, V12) + + SYS_NOISE_MT_N(HLE_NOISE, 0.05) + NET_C(HLE_NOISE.I, NOISE_CLOCK.Q) + + // Noise Generation + OPAMP(IC_NOISE_OP, "UA741") + NET_C(V12, IC_NOISE_OP.VCC, R71A.1, R70A.1, C34A.1) + NET_C(R71A.2, C40A.1, HLE_NOISE.1) + NET_C(C40A.2, C43A.1, R70A.2, R73A.1, IC_NOISE_OP.GND) + NET_C(GND, HLE_NOISE.2, C43A.2, R73A.2, C38A.1, C34A.2) + NET_C(C38A.2, R69.1, C39A.1, IC_NOISE_OP.MINUS) + NET_C(IC_NOISE_OP.PLUS, R69.2, C39A.2) + ALIAS(NOISE, IC_NOISE_OP.OUT) + + // Shot Sound + MC3340_DIP(IC_K6) + NET_C(V12, IC_K6.8) + NET_C(GND, SHOT_NOISE_VOL.1, C32A.2, IC_K6.3, C27A.2, C28A.2, Q7.C) + NET_C(NOISE, SHOT_NOISE_VOL.3) + NET_C(SHOT_NOISE_VOL.2, C32A.1, C31A.1) + NET_C(C31A.2, IC_K6.2) + NET_C(IC_K6.6, C27A.1) + NET_C(VCC, R64A.1) + NET_C(SHOT_COM, CR19.K) + NET_C(CR19.A, R64A.2, Q7.B, C28A.1) + NET_C(IC_K6.2, Q7.E) + ALIAS(SHOT, IC_K6.7) + + // Shot Com + NET_C(FIRE1, C7.1) + NET_C(FIRE2, C4.1) + NET_C(C7.2, R8A.1, IC_L7.2) + NET_C(C4.2, R11A.1, IC_L7.3) + NET_C(GND, IC_N14.12, R8A.2, R11A.2) + NET_C(IC_L7.1, IC_N14.11) + NET_C(IC_N14.15, C26.1) + NET_C(IC_N14.14, C26.2, R37A.1) + NET_C(R37A.2, VCC) + NET_C(IC_N14.10, IC_N13.3) + ALIAS(SHOT_COM, IC_N13.4) + + // Boom Sound + MC3340_DIP(IC_L6) + NET_C(V12, IC_L6.8) + NET_C(NOISE, BOOM_NOISE_VOL.3) + NET_C(GND, BOOM_NOISE_VOL.1, C36A.2, C41A.2, Q6.C, C30A.2) + NET_C(BOOM_NOISE_VOL.2, C36A.1, C35A.1) + NET_C(C35A.2, IC_L6.1) + NET_C(BOOM_COM, CR22.K) + NET_C(CR22.A, R72A.2, C41A.1, Q6.B) + NET_C(V5, R72A.1) + NET_C(Q6.E, IC_L6.2) + NET_C(IC_L6.6, C30A.1) + ALIAS(BOOM, IC_L6.7) + + // Motor 1 Sound + TTL_7406_DIP(IC_K15) + NE555_DIP(IC_L15) + NE566_DIP(IC_M15) + MC3340_DIP(IC_N15) + NET_C(VCC, IC_K15.14, IC_L15.8, IC_L15.4, Q29.C) + NET_C(V12, IC_M15.8, IC_N15.8, R73M1.1, Q27.C, R100M1.1, Q30.E, R36M1.1) + NET_C(GND, IC_K15.7, C54M1.2, C51M1.2, C53M1.2, C55M1.2, R78M1.2, IC_L15.1) + NET_C(P1SP2, IC_K15.13) + NET_C(P1SP1, IC_K15.11) + NET_C(P1SP0, IC_K15.9) + NET_C(IC_K15.12, R74M1.2) + NET_C(IC_K15.10, R75M1.2) + NET_C(IC_K15.8, R76M1.2) + NET_C(R73M1.2, R74M1.1, R75M1.1, R76M1.1, C54M1.1, Q27.B) + NET_C(C54M1.2, MOTOR1_VOL.1) + NET_C(MOTOR1_VOL.3, Q27.E, Q28.B, C52M1.1, IC_M15.5) + NET_C(R100M1.2, MOTOR1_VOL2.3, MOTOR1_VOL2.2) + NET_C(MOTOR1_VOL2.1, Q28.E) + NET_C(MOTOR1_VOL.2, R101M1.1) + NET_C(CR14M1.A, IC_L15.2) + NET_C(Q28.C, R77M1.1, IC_L15.7) + NET_C(IC_L15.6, C51M1.1, CR14M1.K, R77M1.2, Q29.B) + NET_C(Q29.E, R78M1.1, C56M1.2) + NET_C(C56M1.1, IC_N15.3) + NET_C(IC_M15.7, C53M1.1) + NET_C(C52M1.2, R36M1.2, IC_M15.6) + NET_C(IC_M15.4, R80M1.1, R79M1.1) + NET_C(R80M1.2, GND) + NET_C(R101M1.2, R79M1.2, Q30.C, IC_N15.2) + NET_C(ATTRACT, IC_N13.1) + NET_C(IC_N13.2, R81M1.1) + NET_C(R81M1.2, Q30.B) + NET_C(IC_N15.6, C55M1.1) + RES(R555OUT1, RES_K(1)) + NET_C(R555OUT1.1, IC_L15.3) + NET_C(GND, R555OUT1.2) + ALIAS(MOTOR1, IC_N15.7) + + // Motor 2 Sound + NE555_DIP(IC_J15) + NE566_DIP(IC_H15) + MC3340_DIP(IC_F15) + NET_C(VCC, IC_J15.8, IC_J15.4, Q33.C) + NET_C(V12, IC_H15.8, IC_F15.8, R72M2.1, Q31.C, R102M2.1, Q31.E, R35M2.1) + NET_C(GND, C49M2.2, C50M2.2, C48M2.2, C43M2.2, R68M2.2, IC_J15.1) + NET_C(P2SP2, IC_K15.1) + NET_C(P2SP1, IC_K15.3) + NET_C(P2SP0, IC_K15.5) + NET_C(IC_K15.2, R69M2.2) + NET_C(IC_K15.4, R70M2.2) + NET_C(IC_K15.6, R71M2.2) + NET_C(R72M2.2, R71M2.1, R70M2.1, R69M2.1, C49M2.1, Q31.B) + NET_C(C49M2.2, MOTOR2_VOL.1) + NET_C(MOTOR2_VOL.3, Q31.E, Q32.B, C47M2.1, IC_H15.5) + NET_C(R102M2.2, MOTOR2_VOL2.3, MOTOR2_VOL2.2) + NET_C(MOTOR2_VOL2.1, Q32.E) + NET_C(MOTOR2_VOL.2, R103M2.1) + NET_C(CR13M2.A, IC_J15.2) + NET_C(Q32.C, R67M2.1, IC_J15.7) + NET_C(IC_J15.6, C50M2.1, CR13M2.K, R67M2.2, Q33.B) + NET_C(Q33.E, R68M2.1, C44M2.2) + NET_C(C44M2.1, IC_F15.3) + NET_C(IC_H15.7, C48M2.1) + NET_C(C47M2.2, R35M2.2, IC_H15.6) + NET_C(IC_H15.4, R66M2.1, R65M2.1) + NET_C(GND, R66M2.2) + NET_C(R103M2.2, R65M2.2, Q34.C, IC_F15.2) + NET_C(ATTRACT, IC_N13.13) + NET_C(IC_N13.12, R64M2.1) + NET_C(R64M2.2, Q34.B) + NET_C(IC_F15.6, C43M2.1) + RES(R555OUT2, RES_K(1)) + NET_C(R555OUT2.1, IC_J15.3) + NET_C(GND, R555OUT2.2) + ALIAS(MOTOR2, IC_F15.7) + + // Mixer + NET_C(MOTOR1, R102MX.1) + NET_C(MOTOR2, R106MX.1) + NET_C(BOOM, R103MX.1, R107MX.1) + NET_C(SHOT, R104MX.1, R108MX.1) + NET_C(R102MX.2, R103MX.2, R104MX.2, C101.1) + NET_C(R106MX.2, R107MX.2, R108MX.2, C106.1) + ALIAS(OUT1, C101.2) + ALIAS(OUT2, C106.2) + NET_C(C101.2, GND) + NET_C(C106.2, GND) + + // Unused Gates / Pins + NET_C(GND, IC_E8.1, IC_E8.2) + NET_C(GND, IC_E13.1) + NET_C(GND, IC_A7.5, IC_A7.9, IC_A7.11, IC_A7.13) + NET_C(GND, IC_J14.14) + NET_C(GND, IC_E12.3, IC_E12.4, IC_E12.5, IC_E12.6) + NET_C(GND, IC_D12.3, IC_D12.4, IC_D12.5, IC_D12.6) + NET_C(GND, IC_N7.11, IC_N7.12) + NET_C(GND, IC_B7.12, IC_B7.13) + NET_C(GND, IC_D7.5, IC_D7.6, IC_D7.8, IC_D7.9) + NET_C(GND, IC_L14.14) + NET_C(GND, IC_A14.1, IC_A14.2, IC_A14.13) + NET_C(GND, IC_B10.13) + NET_C(GND, IC_D11V.1, IC_D11V.3, IC_D11V.5, IC_D11V.11, IC_D11V.13) + NET_C(GND, IC_M13.3) + NET_C(GND, IC_L11.13, IC_L11.14) + NET_C(VCC, IC_L11.15) + NET_C(VCC, IC_N4.1, IC_N4.3) + NET_C(GND, IC_A6.11, IC_A6.13) + NET_C(GND, IC_N6.11, IC_N6.12) + NET_C(GND, IC_J7.5, IC_J7.6) + NET_C(GND, IC_F13.1, IC_F13.2) + NET_C(VCC, IC_J11.9, IC_J11.11, IC_J11.13) + NET_C(VCC, IC_B6.9, IC_B6.3) + NET_C(VCC, IC_J3.9) + +NETLIST_END() \ No newline at end of file diff --git a/src/mame/machine/nl_tank.h b/src/mame/machine/nl_tank.h new file mode 100644 index 00000000000..fd480c03810 --- /dev/null +++ b/src/mame/machine/nl_tank.h @@ -0,0 +1,12 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +#ifndef MAME_MACHINE_NL_TANK_H +#define MAME_MACHINE_NL_TANK_H + +#pragma once + +#include "netlist/nl_setup.h" + +NETLIST_EXTERNAL(tank) + +#endif // MAME_MACHINE_NL_TANK_H \ No newline at end of file