// license:BSD-3-Clause
// copyright-holders:Ryan Holtz
//
// Netlist for Tank Battalion
//
// Derived from the schematics in the manual.
//
// Known problems/issues:
//
// * None.
//
#include "netlist/devices/net_lib.h"
//
// Main netlist
//
NETLIST_START(tankbatt)
SOLVER(Solver, 48000)
ANALOG_INPUT(V5, 5)
ALIAS(VCC, V5)
CLOCK(2V, 4000) // 18.432MHz / (3 * 384 * 2)
CLOCK(4V, 2000) // 18.432MHz / (3 * 384 * 4)
TTL_INPUT(S1, 0) // active high
TTL_INPUT(S2, 0) // active high
TTL_INPUT(OFF, 1) // active high
TTL_INPUT(ENGINE_HI, 0) // active high
TTL_INPUT(SHOOT, 0) // active high
TTL_INPUT(HIT, 0) // active high
RES(R31, 470)
RES(R32, 470)
RES(R35, RES_K(4.7))
RES(R36, RES_K(4.7))
RES(R37, RES_K(6.8))
RES(R38, RES_K(10))
//RES(R41, RES_K(22))
RES(R42, RES_K(22))
RES(R43, RES_K(22))
RES(R44, RES_K(33))
RES(R45, RES_K(47))
RES(R46, RES_K(4.7)) // Possible schematic or scan-quality error: Schematic says 47K
RES(R47, RES_K(4.7))
RES(R48, RES_K(4.7))
RES(R49, RES_K(4.7)) // Possible schematic or scan-quality error: Schematic says 47K
RES(R50, RES_K(150))
RES(R51, RES_K(150))
RES(R52, RES_K(220))
RES(R53, RES_K(470))
RES(R54, RES_K(470))
RES(R56_1, RES_K(1))
RES(R56_2, RES_K(1))
RES(R57, RES_K(10))
RES(R58, RES_K(1))
RES(R59, RES_K(1))
RES(R60, RES_K(1))
RES(R61, RES_K(1))
CAP(C10, CAP_U(2.2))
CAP(C11, CAP_U(2.2))
CAP(C12, CAP_U(2.2))
CAP(C13, CAP_U(2.2))
CAP(C14, CAP_U(0.1))
CAP(C15, CAP_U(0.01))
CAP(C16, CAP_U(0.01))
CAP(C17, CAP_U(0.01))
CAP(C18, CAP_U(0.01))
CAP(C42, CAP_U(0.1))
DIODE(D8, "D") // Generic diodes, types not listed on schematic
DIODE(D9, "D")
DIODE(D10, "D")
DIODE(D11, "D")
CD4006(_6F)
CD4066_DIP(_6L)
LM324_DIP(_6J)
TTL_7486_DIP(_6K)
TTL_7492_DIP(_5K)
NET_C(VCC, _5K.5, _6F.VDD, _6J.4, _6K.7, _6L.14, S1.VCC, S2.VCC, OFF.VCC, ENGINE_HI.VCC, SHOOT.VCC, HIT.VCC, 2V.VCC, 4V.VCC)
NET_C(GND, _5K.10, _6F.VSS, _6J.11, _6K.14, _6L.7, S1.GND, S2.GND, OFF.GND, ENGINE_HI.GND, SHOOT.GND, HIT.GND, 2V.GND, 4V.GND)
// Noise generation (presumably)
NET_C(_6F.CLOCK, 2V)
NET_C(_6F.D1P4, _6F.D3)
NET_C(_6F.D3P4, _6F.D4, _6L.12, _6L.6)
NET_C(_6F.D1, _6F.D2P5, _6K.A.A)
NET_C(_6F.D4P4, _6K.A.B)
NET_C(_6K.A.Q, R38.1)
NET_C(_6F.D2, R38.2, D9.K)
NET_C(_6F.D4P5, D8.A, R53.1)
NET_C(D8.K, R53.2, C42.1, _6J.2)
NET_C(_6J.1, C42.2, D9.A)
NET_C(_6J.3, C12.1, R43.1, R44.1, _6J.12, _6J.10)
NET_C(C12.2, GND)
NET_C(R43.2, GND)
NET_C(R44.2, V5)
// S1
NET_C(S1.Q, _6L.5)
NET_C(4V, _6L.4)
NET_C(_6L.3, R35.1)
// S2
NET_C(S2.Q, _6L.13)
NET_C(2V, _6L.1)
NET_C(_6L.2, R36.1)
// Hit
NET_C(HIT.Q, R31.1)
NET_C(R31.2, D10.A)
NET_C(D10.K, C10.1, _6L.8)
NET_C(C10.2, GND)
NET_C(_6L.9, R50.1)
NET_C(R50.2, R42.1, C15.1, C16.1)
NET_C(R42.2, GND)
NET_C(C16.2, R54.1, _6J.9)
NET_C(C15.2, R54.2, _6J.8, R56_1.1)
// Shoot
NET_C(SHOOT.Q, R32.1)
NET_C(R32.2, D11.A)
NET_C(D11.K, C11.1, _6L.11)
NET_C(C11.2, GND)
NET_C(_6L.10, R45.1)
NET_C(R45.2, R37.1, C17.1, C18.1)
NET_C(R37.2, GND)
NET_C(C18.2, R51.1, _6J.13)
NET_C(C17.2, R51.2, _6J.14, R56_2.1)
// Engine Rumble
NET_C(ENGINE_HI.Q, _6K.B.A)
NET_C(_6K.B.B, _6K.C.Q)
NET_C(_6K.B.Q, R52.1, _5K.1)
NET_C(R52.2, R46.1, _6J.6, C14.1)
NET_C(C14.2, GND)
NET_C(_6J.5, R47.1, R48.1, R49.1)
NET_C(R47.2, V5)
NET_C(R48.2, GND)
NET_C(R49.2, R57.1, _6J.7, R46.2, _6K.C.A)
NET_C(R57.2, GND)
NET_C(_6K.C.B, VCC)
NET_C(_5K.7, VCC)
NET_C(_5K.6, OFF.Q)
NET_C(_5K.11, R60.1, _6K.D.A)
NET_C(_5K.8, R58.1, _6K.D.B)
NET_C(_6K.D.Q, _5K.14)
NET_C(_5K.12, R61.1)
NET_C(R58.2, R60.2, R61.2, C13.1, R59.1)
NET_C(C13.2, GND)
// Mixing
//NET_C(R56_1.2, R56_2.2)
//NET_C(R35.2, R36.2)
//NET_C(R56_2.2, R59.2)
NET_C(R35.2, R36.2, R56_1.2, R56_2.2, R59.2)
//NET_C(R41.2, GND)
NETLIST_END()