diff options
author | Sergey Svishchev <shattered@users.noreply.github.com> | 2019-01-24 18:08:52 +0300 |
---|---|---|
committer | R. Belmont <rb6502@users.noreply.github.com> | 2019-01-24 10:08:52 -0500 |
commit | 012a045fe2d7717d875f8b7b23c35f1166ed982b (patch) | |
tree | 8fd54287d4b5545dac3f0fa24d8884c1abadb211 | |
parent | 60eddf43674a08c3d2d73952b57b78af4e36182e (diff) |
nl_palestra: netlist for a (future) Palestra-02 driver. not_working. (#4543)
* nl_palestra: netlist for a (future) Palestra-02 driver. not_working currently. (nw)
* palestra: new skeleton (nw)
-rw-r--r-- | scripts/target/mame/mess.lua | 2 | ||||
-rw-r--r-- | src/mame/drivers/palestra.cpp | 95 | ||||
-rw-r--r-- | src/mame/machine/nl_palestra.cpp | 710 | ||||
-rw-r--r-- | src/mame/machine/nl_palestra.h | 4 | ||||
-rw-r--r-- | src/mame/mame.lst | 3 | ||||
-rw-r--r-- | src/mame/mess.flt | 1 |
6 files changed, 815 insertions, 0 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index b5ed41db728..5cae6e3dc38 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -3942,6 +3942,8 @@ files { MAME_DIR .. "src/mame/drivers/testpat.cpp", MAME_DIR .. "src/mame/machine/nl_tp1983.cpp", MAME_DIR .. "src/mame/machine/nl_tp1985.cpp", + MAME_DIR .. "src/mame/drivers/palestra.cpp", + MAME_DIR .. "src/mame/machine/nl_palestra.cpp", } end diff --git a/src/mame/drivers/palestra.cpp b/src/mame/drivers/palestra.cpp new file mode 100644 index 00000000000..587a1d7a53f --- /dev/null +++ b/src/mame/drivers/palestra.cpp @@ -0,0 +1,95 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev + +/*************************************************************************** + + Palestra-02 (a Pong clone) + + https://www.mobygames.com/game/dedicated-console/palestra-02 + database entry + http://www.ccjvq.com/slydc/palestra02.rar + schematics + http://discreteconsoles.blogspot.com/2015/10/emulation-of-ay-3-8500-1-and-clones-soon.html + photos + https://www.youtube.com/watch?v=3XZxkTvOF4Y + gameplay video + + To do: + - write 74H53 device + - trace the boards (schematic contains several errors) + - hook up inputs + +***************************************************************************/ + +#include "emu.h" + +#include "machine/netlist.h" + +#include "video/fixfreq.h" + +#include "netlist/devices/net_lib.h" + +#include "machine/nl_palestra.h" + +#include "screen.h" + +#include <cmath> + + +#define MASTER_CLOCK (4000000) +#define V_TOTAL_PONG 315 +#define H_TOTAL_PONG 256 // tbc + +class palestra_state : public driver_device +{ +public: + palestra_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_video(*this, "fixfreq") + { + } + + // devices + required_device<netlist_mame_device> m_maincpu; + required_device<fixedfreq_device> m_video; + + void palestra(machine_config &config); + +protected: + // driver_device overrides + virtual void machine_start() override { }; + virtual void machine_reset() override { }; + + virtual void video_start() override { }; + +private: +}; + + +static INPUT_PORTS_START(palestra) +INPUT_PORTS_END + + +MACHINE_CONFIG_START(palestra_state::palestra) + MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) + MCFG_NETLIST_SETUP(palestra) + + MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", fixedfreq_device, update_composite_monochrome, "fixfreq") + + SCREEN(config, "screen", SCREEN_TYPE_RASTER); + FIXFREQ(config, m_video).set_screen("screen"); + m_video->set_monitor_clock(MASTER_CLOCK); + m_video->set_horz_params(H_TOTAL_PONG-64,H_TOTAL_PONG-40,H_TOTAL_PONG-8,H_TOTAL_PONG); + m_video->set_vert_params(V_TOTAL_PONG-19,V_TOTAL_PONG-16,V_TOTAL_PONG-12,V_TOTAL_PONG); + m_video->set_fieldcount(1); + m_video->set_threshold(1); + m_video->set_gain(0.36); +MACHINE_CONFIG_END + + +ROM_START( palestra ) /* dummy to satisfy game entry*/ + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) +ROM_END + +GAME( 1978, palestra, 0, palestra, palestra, palestra_state, empty_init, ROT0, "LPO", "Palestra-02", MACHINE_IS_SKELETON) diff --git a/src/mame/machine/nl_palestra.cpp b/src/mame/machine/nl_palestra.cpp new file mode 100644 index 00000000000..0d601341fd5 --- /dev/null +++ b/src/mame/machine/nl_palestra.cpp @@ -0,0 +1,710 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev + +/*************************************************************************** + + Netlist (palestra) to be included from palestra.cpp + + https://www.mobygames.com/game/dedicated-console/palestra-02 + database entry + http://www.ccjvq.com/slydc/palestra02.rar + schematics + http://discreteconsoles.blogspot.com/2015/10/emulation-of-ay-3-8500-1-and-clones-soon.html + photos + https://www.youtube.com/watch?v=3XZxkTvOF4Y + gameplay video + + To do: + - write 74H53 device + - trace the boards (schematic contains several errors) + - hook up inputs + +***************************************************************************/ + +#ifndef __PLIB_PREPROCESSOR__ + #define NL_PROHIBIT_BASEH_INCLUDE 1 + #include "netlist/devices/net_lib.h" +#endif + +#define SLOW_BUT_ACCURATE 0 + +NETLIST_START(palestra) + +// SOLVER(Solver, 10000000) to maintain accuracy when SLOW is set and CAP()s are connected + SOLVER(Solver, 50000) +// PARAM(Solver.PARALLEL, 0) // Don't do parallel solvers + PARAM(Solver.ACCURACY, 1e-5) // ??? +// PARAM(Solver.LTE, 1e-4) // Default is not enough for paddle control if using LTE + PARAM(NETLIST.USE_DEACTIVATE, 1) + + ANALOG_INPUT(V5, 5) + + TTL_INPUT(high, 1) + TTL_INPUT(low, 0) + +/* + * board A2 -- score display + */ + + TTL_7410_NAND(A2D1_1, N0X3, N1X4, N0X5) + TTL_7410_NAND(A2D1_2, A2D1_1.Q, A2D1_1.Q, A2D1_1.Q) + + TTL_7410_NAND(A2D1_3, N1X3, N0X4, N0X5) + TTL_7400_NAND(A2D9_1, A2D1_3.Q, A2D1_3.Q) + TTL_7400_NAND(A2D9_2, P_EX, a2x28) + TTL_7400_NAND(A2D9_3, A2D9_2.Q, A2D9_2.Q) + + TTL_7410_NAND(A2D2_1, N1X3, N1X4, N0X5) + TTL_7410_NAND(A2D2_2, N0X3, N0X4, N1X5) + TTL_7410_NAND(A2D2_3, N1X3, N0X4, N1X5) + TTL_7410_NAND(A2D10_1, A2D2_1.Q, A2D2_2.Q, A2D2_3.Q) + TTL_7400_NAND(A2D9_4, A2D2_2.Q, A2D2_2.Q) + + TTL_7410_NAND(A2D3_1, N1Y3, N1Y4, N0Y5) + TTL_7410_NAND(A2D3_2, N0Y3, N0Y4, N1Y5) + TTL_7410_NAND(A2D4_1, N1Y3, N0Y4, N1Y5) + TTL_7410_NAND(A2D4_2, N0Y3, N1Y4, N1Y5) + TTL_7410_NAND(A2D4_3, N1Y3, N1Y4, N1Y5) + TTL_7400_NAND(A2D11_1, A2D3_1.Q, A2D3_1.Q) + TTL_7400_NAND(A2D11_2, A2D4_1.Q, A2D4_1.Q) + TTL_7400_NAND(A2D11_3, A2D4_3.Q, A2D4_3.Q) + TTL_7400_NAND(A2D11_4, A2D2_1.Q, A2D2_1.Q) + TTL_7400_NAND(A2D12_1, A2D2_3.Q, A2D2_3.Q) + TTL_7400_NAND(A2D12_2, A2D4_2.Q, A2D4_3.Q) + TTL_7410_NAND(A2D3_3, A2D4_1.Q, A2D3_1.Q, A2D3_2.Q) + + // player 1 score counter + TTL_7493(A2D5, SCORE1, A2D5.QA, A2D8_2.Q, A2D8_2.Q) + TTL_7400_NAND(A2D8_1, A2D5.QD, A2D5.QB) + TTL_7400_NAND(A2D8_2, A2D8_1.Q, RESET) + TTL_7474(A2D6_1, A2D8_2.Q, A2D6_1.QQ, high, RESET) + + // player 2 score counter + TTL_7493(A2D7, SCORE2, A2D7.QA, A2D8_4.Q, A2D8_4.Q) + TTL_7400_NAND(A2D8_3, A2D7.QD, A2D7.QB) + TTL_7400_NAND(A2D8_4, A2D8_3.Q, RESET) + TTL_7474(A2D6_2, A2D8_4.Q, A2D6_2.QQ, high, RESET) + + TTL_7450_ANDORINVERT(A2D13_1, a2x3, N0X6, a2x4, N1X6) + TTL_7450_ANDORINVERT(A2D13_2, a2x5, N0X6, a2x6, N1X6) + TTL_7450_ANDORINVERT(A2D14_1, a2x7, N0X6, a2x8, N1X6) + TTL_7450_ANDORINVERT(A2D14_2, a2x10, N0X6, a2x9, N1X6) + TTL_7450_ANDORINVERT(A2D15_1, A2D6_1.Q, N0X6, A2D6_2.Q, N1X6) +// NET_C(A2D17_1.A, a2x21) // XXX typo in schematics? + + TTL_7400_NAND(A2D16_1, A2D13_1.Q, A2D13_1.Q) + TTL_7400_NAND(A2D16_2, A2D13_2.Q, A2D13_2.Q) + TTL_7400_NAND(A2D16_3, A2D14_1.Q, A2D14_1.Q) + TTL_7400_NAND(A2D16_4, A2D14_2.Q, A2D14_2.Q) + + TTL_7420_NAND(A2D17_1, A2D13_1.Q, A2D13_2.Q, A2D14_1.Q, A2D14_2.Q) + TTL_7420_NAND(A2D17_2, A2D13_2.Q, A2D14_1.Q, a2x17, A2D14_2.Q) + TTL_7420_NAND(A2D18_1, A2D13_1.Q, A2D14_1.Q, A2D14_2.Q, a2x18) + TTL_7420_NAND(A2D18_2, a2x17, A2D14_1.Q, a2x18, A2D14_2.Q) + TTL_7410_NAND(A2D19_1, A2D13_1.Q, a2x19, A2D13_2.Q) + TTL_7410_NAND(A2D19_2, a2x17, A2D13_2.Q, a2x19) + TTL_7410_NAND(A2D19_3, A2D13_1.Q, a2x18, a2x19) + TTL_7410_NAND(A2D10_2, a2x19, a2x18, a2x17) + TTL_7400_NAND(A2D12_4, a2x17, a2x20) + +// + + TTL_7450_ANDORINVERT(A2D15_2, a2x16, A2D9_3.Q, A2D9_3.Q, a2x15) + TTL_7420_NAND(A2D20_1, a2x11, a2x12, a2x22, a2x25) + TTL_7410_NAND(A2D21_1, a2x11, a2x22, a2x29) + TTL_7400_NAND(A2D12_3, A2D21_1.Q, A2D21_1.Q) + TTL_7410_NAND(A2D21_2, A2D12_3.Q, a2x13, a2x21) + TTL_7410_NAND(A2D21_3, A2D12_3.Q, a2x14, a2x25) + TTL_7430_NAND(A2D22, a2x15, a2x22, a2x23, a2x24, a2x29, P_CX, P_CX, P_CX) + TTL_7420_NAND(A2D20_2, a2x15, P_AX, a2x26, a2x27) + TTL_7430_NAND(A2D23, P_CX, a2x16, a2x22, a2x24, a2x25, a2x26, a2x29, a2x30) + TTL_7410_NAND(A2D10_3, P_AX, a2x16, a2x23) + TTL_7430_NAND(A2D24, A2D15_2.Q, A2D20_1.Q, A2D21_2.Q, A2D21_3.Q, A2D22.Q, A2D20_2.Q, A2D23.Q, A2D10_3.Q) + + TTL_7400_NAND(A2D25_1, a2x26, a2x26) + TTL_7400_NAND(A2D25_2, A2D25_1.Q, a2x28) +#if 1 + CAP(A2Cx, CAP_P(11)) // XXX value not specified + NET_C(a2x28, A2Cx.1) + NET_C(A2Cx.2, A2D25_2.Q) +#endif + + // inputs + ALIAS(RESET, N1X7) + + // outputs + ALIAS(P_CYRG_X, A2D1_2.Q) + ALIAS(P_CYRD_X, A2D9_1.Q) + ALIAS(P_CYRW_X, A2D11_4.Q) + ALIAS(P_CYRB_X, A2D9_4.Q) + ALIAS(P_CYRA_X, A2D12_1.Q) + ALIAS(P_AX, P_CYRA_X) + ALIAS(P_BX, P_CYRB_X) + ALIAS(P_CX, P_CYRW_X) + ALIAS(P_DX, P_CYRG_X) + ALIAS(P_EX, P_CYRD_X) + ALIAS(GAME_OVER, A2D25_2.Q) + ALIAS(SCORE_OUT, A2D24.Q) + + // test points + ALIAS(a2x3, A2D5.QA) + ALIAS(a2x4, A2D7.QA) + ALIAS(a2x5, A2D5.QB) + ALIAS(a2x6, A2D7.QB) + ALIAS(a2x7, A2D5.QC) + ALIAS(a2x8, A2D7.QC) + ALIAS(a2x9, A2D7.QD) + ALIAS(a2x10, A2D5.QD) + ALIAS(a2x11, A2D10_1.Q) + ALIAS(a2x12, A2D11_1.Q) + ALIAS(a2x13, A2D11_2.Q) + ALIAS(a2x14, A2D11_3.Q) + ALIAS(a2x15, A2D3_3.Q) + ALIAS(a2x16, A2D12_2.Q) + ALIAS(a2x17, A2D16_1.Q) + ALIAS(a2x18, A2D16_2.Q) + ALIAS(a2x19, A2D16_3.Q) + ALIAS(a2x20, A2D16_4.Q) + ALIAS(a2x21, A2D17_1.Q) + ALIAS(a2x22, A2D17_2.Q) + ALIAS(a2x23, A2D18_1.Q) + ALIAS(a2x24, A2D18_2.Q) + ALIAS(a2x25, A2D19_1.Q) + ALIAS(a2x26, A2D19_2.Q) + ALIAS(a2x27, A2D19_3.Q) + ALIAS(a2x28, A2D15_1.Q) + ALIAS(a2x29, A2D10_2.Q) + ALIAS(a2x30, A2D12_4.Q) + +/* + * board A3 -- sync generator + */ + +#if SLOW_BUT_ACCURATE + TTL_7400_NAND(A3D1_3, A3D5.QA, A3D5.QA) + TTL_7400_NAND(A3D1_4, A3D1_3.Q, A3D2_1.Q) +#else + TTL_7400_NAND(A3D1_4, N0X1, A3D2_1.Q) +#endif + TTL_7420_NAND(A3D2_1, MOVE_LEFT, STOP_BALL, P_SPEED_X, GAME_OVER) + TTL_7420_NAND(A3D2_2, MOVE_RIGHT, GAME_OVER, P_SPEED_X, STOP_BALL) + + // CLK1, CLK2, R1, R2 [14, 1, 2, 3] +#if SLOW_BUT_ACCURATE + TTL_7493(A3D5, clk, A3D5.QA, A3D1_4.Q, a3x3) +#else + TTL_7493(A3D5, low, N1X1, A3D1_4.Q, a3x3) +#endif + TTL_7493(A3D6, A3D5.QD, A3D6.QA, A3D1_4.Q, a3x3) + TTL_7400_NAND(A3D4_3, A3D5.QB, A3D5.QB) + TTL_7400_NAND(A3D4_4, A3D5.QC, A3D5.QC) + TTL_7400_NAND(A3D12_3, A3D4_3.Q, A3D4_4.Q) + TTL_7430_NAND(A3D15, A3D12_3.Q, A3D12_3.Q, A3D5.QD, A3D6.QA, A3D6.QB, A3D6.QC, A3D6.QD, P_MY) + TTL_7430_NAND(A3D16, A3D5.QD, A3D6.QA, A3D6.QB, A3D6.QC, A3D6.QD, A3D5.QC, A3D5.QB, A3D2_2.Q) + TTL_7400_NAND(A3D12_4, N_M, N_M) + TTL_7400_NAND(A3D17_1, N_M, N_M) + TTL_7400_NAND(A3D20_1, A3D16.Q, A3D16.Q) + + TTL_7400_NAND(A3D1_1, MOVE_UP, P_SPEED_Y) + TTL_7400_NAND(A3D1_2, P_SPEED_Y, MOVE_DOWN) + TTL_7400_NAND(A3D4_1, N0X8, A3D1_1.Q) + TTL_7410_NAND(A3D7_1, N1X7, A3D4_1.Q, A3D1_2.Q) + // CLK, D, CLRQ, PREQ [3, 2, 1, 4] + TTL_7474(A3D8_1, A3D7_1.Q, A3D8_1.QQ, high, high) + // CLK1, CLK2, R1, R2 [14, 1, 2, 3] + TTL_7493(A3D13, A3D8_1.Q, A3D13.QA, a3x4, low) //A3D14.QD) XXX + TTL_7493(A3D14, A3D13.QD, A3D14.QA, a3x4, low) //A3D14.QD) XXX + TTL_7410_NAND(A3D7_2, A3D13.QC, A3D14.QA, A3D13.QD) + TTL_7400_NAND(A3D26_4, A3D7_2.Q, A3D7_2.Q) + TTL_7420_NAND(A3D3_2, A3D13.QB, A3D14.QB, a3x4, A3D14.QC) + TTL_7400_NAND(A3D20_2, A3D3_2.Q, A3D3_2.Q) + + // outputs + ALIAS(N_M, A3D15.Q) + ALIAS(P_M1, A3D12_4.Q) + ALIAS(P_M2, A3D17_1.Q) + ALIAS(P_MY, A3D20_2.Q) + + // test points + ALIAS(a3x3, A3D20_1.Q) + ALIAS(a3x4, A3D26_4.Q) + +// hsync + +#if SLOW_BUT_ACCURATE + MAINCLOCK(clk, 4000000.0) + +#if 1 + CAP(A3C5, CAP_P(200)) + NET_C(clk, A3C5.1) + NET_C(N1X1, A3C5.2) +// NET_C(A3C5.2, A3D21.CLKB) +#endif + + // CLK1, CLK2, R1, R2 [14, 1, 2, 3] + TTL_7493(A3D21, clk, N1X1, a3x6, a3x6) + TTL_7493(A3D22, N1X4, N1X5, a3x6, a3x6) + TTL_7400_NAND(A3D20_3, N1X1, N1X1) + TTL_7400_NAND(A3D25_2, N1X2, N1X2) + TTL_7400_NAND(A3D20_4, N1X3, N1X3) + TTL_7400_NAND(A3D25_3, N1X4, N1X4) + TTL_7400_NAND(A3D23_1, N1X5, N1X5) + TTL_7400_NAND(A3D25_4, N1X6a, N1X6a) + TTL_7400_NAND(A3D23_2, N1X6a, N1X6a) + TTL_7400_NAND(A3D26_1, N0X6b, N0X6b) + TTL_7400_NAND(A3D23_3, N1X7a, N1X7a) + TTL_7400_NAND(A3D26_2, N0X7, N0X7) + TTL_7400_NAND(A3D23_4, N1X8, N1X8) + TTL_7430_NAND(A3D24, N1X1, N1X2, N1X3, N1X4, N1X5, N1X6a, N1X7a, N1X8) + TTL_7400_NAND(A3D25_1, A3D24.Q, A3D24.Q) +#else + ALIAS(clk, low) + CLOCK(N1X1, 2000000.0) + CLOCK(N1X2, 1000000.0) + CLOCK(N1X3, 500000.0) + CLOCK(N1X4, 250000.0) + CLOCK(N1X5, 125000.0) + CLOCK(N1X6a, 62500.0) + CLOCK(N1X7a, 31250.0) + CLOCK(N1X8, 15625.0) + ALIAS(N1X6b, N1X6a) + ALIAS(N1X7b, N1X7a) + EXTCLOCK(N0X1, 2000000.0, "1,1") + EXTCLOCK(N0X2, 1000000.0, "1,1") + EXTCLOCK(N0X3, 500000.0, "1,1") + EXTCLOCK(N0X4, 250000.0, "1,1") + EXTCLOCK(N0X5, 125000.0, "1,1") + EXTCLOCK(N0X6a, 62500.0, "1,1") + EXTCLOCK(N0X7, 31250.0, "1,1") + EXTCLOCK(N0X8, 15625.0, "1,1") + PARAM(N0X1.OFFSET, -2.5e-7) + PARAM(N0X2.OFFSET, -5e-7) + PARAM(N0X3.OFFSET, -1e-6) + PARAM(N0X4.OFFSET, -2e-6) + PARAM(N0X5.OFFSET, -4e-6) + PARAM(N0X6a.OFFSET, -8e-6) + PARAM(N0X7.OFFSET, -1.6e-5) + PARAM(N0X8.OFFSET, -3.2e-5) + ALIAS(N0X6b, N0X6a) +#endif + ALIAS(N1X7, N1X7a) + ALIAS(N1X6, N1X6a) + ALIAS(N0X6, N0X6a) + TTL_7420_NAND(A3D27_1, N1X5, N0X6b, N0X7, N0X8) + TTL_7420_NAND(A3D27_2, N1X5, N1X6a, N0X7, N0X8) + TTL_7400_NAND(A3D26_3, A3D27_2.Q, A3D27_2.Q) + + // outputs +#if SLOW_BUT_ACCURATE + ALIAS(N1X1, A3D21.QA) + ALIAS(N1X2, A3D21.QB) + ALIAS(N1X3, A3D21.QC) + ALIAS(N1X4, A3D21.QD) + ALIAS(N1X5, A3D22.QA) + ALIAS(N1X6a, A3D22.QB) + ALIAS(N1X7a, A3D22.QC) + ALIAS(N1X8, A3D22.QD) + ALIAS(N1X6b, A3D26_1.Q) + ALIAS(N1X7b, A3D26_2.Q) + + ALIAS(N0X1, A3D20_3.Q) + ALIAS(N0X2, A3D25_2.Q) + ALIAS(N0X3, A3D20_4.Q) + ALIAS(N0X4, A3D25_3.Q) + ALIAS(N0X5, A3D23_1.Q) + ALIAS(N0X6a, A3D25_4.Q) + ALIAS(N0X6b, A3D23_2.Q) + ALIAS(N0X7, A3D23_3.Q) + ALIAS(N0X8, A3D23_4.Q) + + ALIAS(a3x6, A3D25_1.Q) +#endif + + ALIAS(HSYNC, A3D27_1.Q) + ALIAS(STOPSOUND, A3D26_3.Q) + +// vsync + + // CLK, D, CLRQ, PREQ [3, 2, 1, 4] + TTL_7474(A3D8_2, N0X8, A3D8_2.QQ, high, high) + // CLK1, CLK2, R1, R2 [14, 1, 2, 3] + TTL_7493(A3D10, A3D8_2.QQ, N1Y2, A3D12_1.Q, low) // N1Y9) XXX + TTL_7493(A3D11, N1Y5, N1Y6, A3D12_1.Q, low) // N1Y9) XXX + TTL_7400_NAND(A3D18_1, N1Y2, N1Y2) + TTL_7400_NAND(A3D18_2, N1Y3, N1Y3) + TTL_7400_NAND(A3D18_3, N1Y4, N1Y4) + TTL_7400_NAND(A3D18_4, N1Y5, N1Y5) + TTL_7400_NAND(A3D19_1, N1Y6, N1Y6) + TTL_7400_NAND(A3D19_2, N1Y7, N1Y7) + TTL_7400_NAND(A3D19_3, N1Y8, N1Y8) + TTL_7400_NAND(A3D19_4, N1Y9, N1Y9) + TTL_7410_NAND(A3D7_3, N1Y6, N1Y5, N1Y4) + TTL_7400_NAND(A3D12_1, A3D7_3.Q, A3D7_3.Q) + + TTL_7420_NAND(A3D3_1, N0Y4, N0Y5, N1Y3, N1Y2) + TTL_7400_NAND(A3D4_2, A3D3_1.Q, A3D3_1.Q) + TTL_7430_NAND(A3D9, N0Y8, N0Y7, N0Y6, N0Y5, N0Y4, A3D3_1.Q, N0Y9, N0Y9) + TTL_7400_NAND(A3D12_2, N_6LINES, N_6LINES) + + // outputs + ALIAS(N1Y1, A3D8_2.Q) + ALIAS(N1Y2, A3D10.QA) + ALIAS(N1Y3, A3D10.QB) + ALIAS(N1Y4, A3D10.QC) + ALIAS(N1Y5, A3D10.QD) + ALIAS(N1Y6, A3D11.QA) + ALIAS(N1Y7, A3D11.QB) + ALIAS(N1Y8, A3D11.QC) + ALIAS(N1Y9, A3D11.QD) + ALIAS(N0Y2, A3D18_1.Q) + ALIAS(N0Y3, A3D18_2.Q) + ALIAS(N0Y4, A3D18_3.Q) + ALIAS(N0Y5, A3D18_4.Q) + ALIAS(N0Y6, A3D19_1.Q) + ALIAS(N0Y7, A3D19_2.Q) + ALIAS(N0Y8, A3D19_3.Q) + ALIAS(N0Y9, A3D19_4.Q) + + ALIAS(P_EY, A3D4_2.Q) + ALIAS(N_6LINES, A3D9.Q) + ALIAS(P_6LINES, A3D12_2.Q) + + // test points + ALIAS(a3x5, clk) + +/* + * board A4 -- game logic + */ + +// player 1 + + // CLK, D, CLRQ, PREQ [3, 2, 1, 4] + TTL_7474(A4D1_1, A4D16_2.Q, a4x3, high, high) + TTL_7400_NAND(A4D4_1, A4D1_2.QQ, A4D1_1.QQ) + TTL_7400_NAND(A4D4_2, A4D4_1.Q, A4D4_1.Q) + TTL_7474(A4D1_2, A4D7_2.Q, A4D1_2.Q, high, A4D1_1.QQ) + + TTL_7400_NAND(A4D2_1, tbc, G_SIZE) + TTL_7400_NAND(A4D2_2, N1X8, A4D2_1.Q) + // CLK1, CLK2, R1, R2 [14, 1, 2, 3] + TTL_7493(A4D5, A4D2_2.Q, A4D5.QA, A4D4_1.Q, A4D4_1.Q) + TTL_7400_NAND(A4D7_1, A4D5.QC, A4D5.QC) + TTL_7400_NAND(A4D7_2, A4D5.QD, A4D5.QD) + +// player 2 + + // CLK, D, CLRQ, PREQ [3, 2, 1, 4] + TTL_7474(A4D3_1, A4D16_2.Q, a4x4, high, high) + TTL_7400_NAND(A4D4_3, A4D3_2.QQ, A4D3_1.QQ) + TTL_7400_NAND(A4D4_4, A4D4_3.Q, A4D4_3.Q) + TTL_7474(A4D3_2, A4D7_4.Q, A4D3_2.Q, high, A4D3_1.QQ) + + TTL_7400_NAND(A4D2_3, tbc, G_SIZE2) + TTL_7400_NAND(A4D2_4, N1X8, A4D2_3.Q) + // CLK1, CLK2, R1, R2 [14, 1, 2, 3] + TTL_7493(A4D6, A4D2_4.Q, A4D6.QA, A4D4_3.Q, A4D4_3.Q) + TTL_7400_NAND(A4D7_3, A4D6.QC, A4D6.QC) + TTL_7400_NAND(A4D7_4, A4D6.QD, A4D6.QD) + +// + + TTL_7420_NAND(A4D9_1, P_M2, P_I1, A4D7_2.Q, A4D7_1.Q) + TTL_7420_NAND(A4D9_2, P_M2, P_I1, A4D7_1.Q, A4D5.QC) + TTL_7420_NAND(A4D10_1, P_M2, P_I1, A4D5.QD, A4D7_1.Q) + TTL_7420_NAND(A4D10_2, P_M2, P_I1, A4D5.QC, A4D5.QD) + + TTL_7420_NAND(A4D11_1, P_M2, P_I2, A4D7_4.Q, A4D7_3.Q) + TTL_7420_NAND(A4D11_2, P_M2, P_I2, A4D6.QC, A4D7_4.Q) + TTL_7420_NAND(A4D12_1, P_M2, P_I2, A4D6.QD, A4D7_3.Q) + TTL_7420_NAND(A4D12_2, P_M2, P_I2, A4D6.QC, A4D6.QD) + + TTL_7400_NAND(A4D8_1, P_BOTTOM_BORDER, P_MY) + TTL_7400_NAND(A4D8_2, P_MY, P_TOP_BORDER) + TTL_7400_NAND(A4D8_3, P_M2, P_I) + + // four RS flip-flops + TTL_7410_NAND(A4D13_1, a4x5, A4D11_1.Q, A4D14_1.Q) + TTL_7400_NAND(A4D14_1, A4D13_1.Q, A4D16_4.Q) + TTL_7410_NAND(A4D13_2, a4x6, a4x9, A4D14_2.Q) + TTL_7400_NAND(A4D14_2, A4D13_2.Q, A4D16_4.Q) + TTL_7410_NAND(A4D15_1, a4x7, a4x10, A4D14_3.Q) + TTL_7400_NAND(A4D14_3, A4D15_1.Q, A4D16_4.Q) + TTL_7410_NAND(A4D15_2, a4x8, a4x11, A4D14_4.Q) + TTL_7400_NAND(A4D14_4, A4D15_2.Q, A4D16_4.Q) + + TTL_7400_NAND(A4D16_1, N0Y3, P_6LINES) + TTL_7400_NAND(A4D16_2, HSYNC, A4D16_1.Q) + TTL_7400_NAND(A4D16_3, A4D16_1.Q, A4D16_1.Q) + TTL_7400_NAND(A4D16_4, N0Y2, A4D16_3.Q) + + // five RS flip-flops + TTL_7400_NAND(A4D8_4, a4x12, A4D13_3.Q) + TTL_7410_NAND(A4D13_3, A4D8_4.Q, A4D14_4.Q, A4D14_1.Q) + TTL_7400_NAND(A4D17_1, a4x12, A4D17_2.Q) + TTL_7400_NAND(A4D17_2, A4D17_1.Q, A4D14_2.Q) + TTL_7400_NAND(A4D17_3, a4x12, A4D17_4.Q) + TTL_7400_NAND(A4D17_4, A4D17_3.Q, A4D14_3.Q) + TTL_7420_NAND(A4D18_1, A4D14_1.Q, A4D14_2.Q, A4D8_1.Q, A4D18_2.Q) + TTL_7420_NAND(A4D18_2, A4D18_1.Q, A4D14_3.Q, A4D14_4.Q, A4D8_2.Q) + TTL_7400_NAND(A4D19_1, a4x12, A4D19_2.Q) + TTL_7400_NAND(A4D19_2, A4D19_1.Q, a4x14) + +// speed Y + + TTL_7400_NAND(A4D24_1, A4D16_4.Q, A4D16_4.Q) + TTL_7400_NAND(A4D24_2, N1Y1, A4D24_1.Q) + TTL_7400_NAND(A4D24_3, A4D24_2.Q, P_6LINES) + TTL_7400_NAND(A4D24_4, A4D24_2.Q, A4D16_3.Q) + TTL_7400_NAND(A4D21_1, A4D17_1.Q, A4D17_4.Q) + TTL_7400_NAND(A4D21_2, A4D17_2.Q, A4D17_3.Q) + TTL_7400_NAND(A4D21_3, A4D21_1.Q, A4D21_2.Q) + TTL_7400_NAND(A4D21_4, A4D24_4.Q, G_ANGLE) + TTL_7400_NAND(A4D25_2, A4D16_4.Q, G_ANGLE) + TTL_7400_NAND(A4D25_3, A4D24_2.Q, G_ANGLE) + + TTL_7420_NAND(A4D28_1, P_6LINES, A4D17_1.Q, A4D17_3.Q, A4D21_4.Q) + TTL_7420_NAND(A4D28_2, A4D16_3.Q, A4D13_3.Q, a4x13, A4D25_2.Q) + TTL_7420_NAND(A4D20_2, A4D24_1.Q, A4D8_4.Q, a4x13, A4D25_3.Q) + TTL_7410_NAND(A4D29_1, A4D28_1.Q, A4D28_2.Q, A4D20_2.Q) + +// speed X + + // CLK1, CLK2, R1, R2 [14, 1, 2, 3] + TTL_7493(A4D31, SOUND_GATE, A4D31.QA, SOUND_GATE, SOUND_GATE) + TTL_7400_NAND(A4D30_3, A4D31.QB, A4D31.QB) + TTL_7400_NAND(A4D30_4, A4D31.QD, A4D31.QD) + TTL_7410_NAND(A4D29_3, A4D31.QC, A4D31.QB, A4D31.QD) + + TTL_7400_NAND(A4D25_1, A4D30_4.Q, G_SPEED_AUTO) + TTL_7400_NAND(A4D25_4, G_SPEED_3, A4D25_1.Q) + TTL_7400_NAND(A4D27_1, A4D30_3.Q, G_SPEED_AUTO) + TTL_7400_NAND(A4D27_3, A4D27_1.Q, G_SPEED_4) + TTL_7400_NAND(A4D27_4, A4D29_3.Q, G_SPEED_4) +// TTL_74H53_AND_OR_INVERT(A4D32, tbc, tbc, A4D24_3.Q, A4D27_3.Q, A4D16_1.Q, A4D25_4.Q, A4D16_4.Q, A4D27_4.Q, G_SPEED_1) + +// sound + + // CLK, D, CLRQ, PREQ [3, 2, 1, 4] + TTL_7474(A4D22_1, N1Y5, A4D22_1.QQ, high, A4D19_1.Q) + TTL_7474(A4D22_2, A4D22_1.Q, A4D22_2.QQ, high, A4D19_1.Q) + TTL_7400_NAND(A4D19_3, A4D22_2.QQ, A4D22_1.QQ) + + TTL_7420_NAND(A4D20_1, A4D8_2.Q, A4D8_1.Q, REFLECT_LEFT, REFLECT_RIGHT) + TTL_7410_NAND(A4D15_3, A4D20_1.Q, A4D20_1.Q, A4D20_1.Q) + TTL_7474(A4D23_1, low, low, A4D15_3.Q, A4D27_2.Q) + TTL_7474(A4D23_2, N1Y5, A4D23_2.QQ, high, SOUND_GATE) + TTL_7474(A4D26_1, N1Y5, A4D23_1.QQ, high, A4D26_1.QQ) + TTL_7474(A4D26_2, A4D26_1.Q, A4D26_2.QQ, high, A4D23_1.QQ) + TTL_7400_NAND(A4D27_2, A4D26_2.QQ, A4D26_1.QQ) + + TTL_7400_NAND(A4D19_4, A4D22_1.QQ, N0Y9) + TTL_7400_NAND(A4D30_1, A4D26_1.QQ, N1Y4) + TTL_7400_NAND(A4D30_2, N0Y3, A4D23_2.QQ) + TTL_7410_NAND(A4D29_2, A4D19_4.Q, A4D30_1.Q, A4D30_2.Q) + + // outputs + ALIAS(MOVE_UP, A4D18_1.Q) + ALIAS(MOVE_DOWN, A4D18_2.Q) +// ALIAS(P_SPEED_X, A4D32.Q) + ALIAS(P_SPEED_X, low) + ALIAS(P_SPEED_Y, A4D29_1.Q) + ALIAS(P_I1Y, A4D4_2.Q) + ALIAS(P_I2Y, A4D4_4.Q) + ALIAS(SYNC_MIX, A4D16_2.Q) + ALIAS(soundmix, A4D29_2.Q) + + // hacks + ALIAS(G_SIZE, low) + ALIAS(G_SIZE2, low) + ALIAS(G_ANGLE, low) + ALIAS(G_SPEED_1, low) + ALIAS(G_SPEED_3, low) + ALIAS(G_SPEED_4, low) + ALIAS(G_SPEED_AUTO, low) + + // test points + ALIAS(a4x3, N1Y1) // XXX player 1 input + ALIAS(a4x4, N1Y1) // XXX player 2 input + ALIAS(a4x5, A4D9_1.Q) + ALIAS(a4x6, A4D9_2.Q) + ALIAS(a4x7, A4D10_1.Q) + ALIAS(a4x8, A4D10_2.Q) + ALIAS(a4x9, A4D11_1.Q) + ALIAS(a4x10, A4D12_1.Q) + ALIAS(a4x11, A4D12_2.Q) + ALIAS(a4x12, A4D8_3.Q) + ALIAS(a4x13, A4D21_3.Q) + ALIAS(a4x14, A4D19_2.Q) + +/* + * board A5 -- playfield composer + */ + + TTL_7410_NAND(A5D6_1, N1Y6, N0Y7, N0Y8) + TTL_7400_NAND(A5D15_1, A5D6_1.Q, A5D6_1.Q) + TTL_7410_NAND(A5D6_2, tbc, N0Y9, A5D15_1.Q) + TTL_7410_NAND(A5D6_3, A5D15_1.Q, N1Y9, P_EY) + TTL_7420_NAND(A5D5_2, A5D5_1.Q, SCORE_OUT, N0X1, A5D15_1.Q) + TTL_7420_NAND(A5D7_1, N1Y8, N1Y6, N1Y7, tbc) + TTL_7420_NAND(A5D7_2, tbc, N1Y7, N1Y6, N0Y8) + TTL_7430_NAND(A5D8, N1X3, N1X4, N1X5, RESET, N0X1, N1Y1, A5D3_1.Q, A5D3_1.Q) + +// + + TTL_7400_NAND(A5D1_1, N0X2, N0X1) + TTL_7400_NAND(A5D1_3, N1X2, N1X1) +#if 0 + CAP(A5Cx, CAP_P(390)) + NET_C(N1X1, A5Cx.1) + NET_C(A5Cx.2, A5D1_3.Q) +#endif + + TTL_7400_NAND(A5D2_1, G_TRAINING, G_RIGHT_LEFT) + TTL_7400_NAND(A5D2_2, A5D2_1.Q, G_TRAINING) + TTL_7400_NAND(A5D2_3, G_RIGHT_LEFT, G_SQUASH) + TTL_7400_NAND(A5D2_4, A5D2_3.Q, G_SQUASH) + + TTL_7400_NAND(A5D3_1, G_TENNIS, G_VOLLEYBALL) + TTL_7400_NAND(A5D3_2, G_VOLLEYBALL, A5D2_1.Q) + TTL_7400_NAND(A5D3_3, G_FOOSBALL, A5D2_4.Q) + TTL_7400_NAND(A5D3_4, G_FOOSBALL, A5D2_3.Q) + TTL_7400_NAND(A5D4_1, G_VOLLEYBALL, A5D2_2.Q) + TTL_7400_NAND(A5D4_2, G_FOOSBALL, A5D2_2.Q) + TTL_7400_NAND(A5D4_3, A5D2_2.Q, N1X6) + TTL_7400_NAND(A5D4_4, G_FOOSBALL, A5D2_1.Q) + TTL_7400_NAND(A5D1_2, A5D2_1.Q, RESET) + TTL_7420_NAND(A5D5_1, A5D4_3.Q, A5D2_3.Q, A5D2_4.Q, A5D1_2.Q) + +// + + TTL_7420_NAND(A5D9_1, A5D16_1.Q, P_AX, P_I1Y, A5D3_2.Q) + TTL_7420_NAND(A5D9_2, N0X8, N1X7, N1X6, N0X2) + TTL_7420_NAND(A5D10_1, A5D16_1.Q, N1Y1, P_I2Y, A5D3_4.Q) + TTL_7420_NAND(A5D10_2, N1X8, N1X7, RESET, N1X2) + TTL_7420_NAND(A5D11_1, A5D16_2.Q, P_DX, P_I1Y, A5D3_3.Q) + TTL_7420_NAND(A5D11_2, A5D4_1.Q, P_I2Y, P_EX, A5D16_2.Q) + TTL_7430_NAND(A5D12, A5D1_1.Q, N1Y1, RESET, N1X7, N0X8, P_I1Y, A5D3_1.Q, A5D3_1.Q) + TTL_7430_NAND(A5D13, A5D1_3.Q, P_DX, N1X6, N1X7, N1X8, P_I2Y, A5D3_1.Q, A5D3_1.Q) + TTL_7420_NAND(A5D14_1, N0X8, RESET, N1X7, P_CX) + TTL_7420_NAND(A5D14_2, N1X8, N1X6, N1X7, P_CX) + + TTL_7400_NAND(A5D15_2, A5D6_2.Q, A5D6_3.Q) + TTL_7400_NAND(A5D15_3, A5D15_2.Q, N0X3) + TTL_7410_NAND(A5D17_2, A5D7_1.Q, A5D3_1.Q, A5D1_4.Q) + TTL_7400_NAND(A5D1_4, A5D17_2.Q, A5D7_2.Q) + + CAP(A5C5, CAP_P(390)) + TTL_7400_NAND(A5D16_1, A5D9_2.Q, A5D9_2.Q) + NET_C(A5D9_2.Q, A5C5.1) + NET_C(A5D16_1.Q, A5C5.2) + TTL_7400_NAND(A5D16_2, A5D10_2.Q, A5D10_2.Q) + + TTL_7410_NAND(A5D17_1, A5D13.Q, A5D11_2.Q, A5D10_1.Q) + TTL_7400_NAND(A5D16_4, A5D17_1.Q, A5D17_1.Q) + TTL_7420_NAND(A5D18_1, A5D19_1.Q, N1Y1, A5D17_2.Q, A5D4_2.Q) + TTL_7400_NAND(A5D19_1, A5D14_1.Q, A5D14_1.Q) + TTL_7400_NAND(A5D19_2, A5D14_2.Q, A5D14_2.Q) + + CAP(A5C6, CAP_P(390)) + NET_C(A5C6.2, GND) + NET_C(N_6LINES, A5C6.1) + TTL_7400_NAND(A5D20_1, A5D6_2.Q, A5D20_2.Q) + TTL_7400_NAND(A5D20_2, A5D20_1.Q, N_6LINES) + TTL_7400_NAND(A5D20_3, N_6LINES, A5D20_4.Q) + TTL_7400_NAND(A5D20_4, A5D20_3.Q, A5D6_3.Q) + TTL_7400_NAND(A5D15_4, A5D6_3.Q, A5D20_4.Q) + + TTL_7410_NAND(A5D17_3, A5D9_1.Q, A5D11_1.Q, a5x3) + TTL_7400_NAND(A5D16_3, P_I1, P_I1) + + TTL_7400_NAND(A5D21_1, A5D18_1.Q, A5D18_1.Q) + TTL_7420_NAND(A5D18_2, A5D4_4.Q, A5D19_2.Q, N1Y1, A5D17_2.Q) + TTL_7400_NAND(A5D19_3, A5D14_2.Q, A5D19_4.Q) + TTL_7400_NAND(A5D19_4, A5D19_3.Q, A5D14_1.Q) + TTL_7400_NAND(A5D21_2, A5D18_2.Q, A5D18_2.Q) + TTL_7400_NAND(A5D22_2, A5D19_3.Q, A5D14_2.Q) + + CAP(A5C4, CAP_P(150)) + NET_C(SCORE_OUT, A5C4.1) + NET_C(A5C4.2, A5D5_2.Q) + TTL_7430_NAND(A5D23, A5C4.2, A5D8.Q, A5D16_3.Q, N_M, A5D15_3.Q, A5D18_1.Q, A5D18_2.Q, A5D16_4.Q) + TTL_7400_NAND(A5D22_1, A5D2_4.Q, A5D2_4.Q) + TTL_7400_NAND(A5D22_3, A5D2_3.Q, A5D2_3.Q) + TTL_7410_NAND(A5D24_1, A5D16_3.Q, A5D16_4.Q, A5D16_4.Q) + TTL_7400_NAND(A5D25_1, A5D21_1.Q, P_M1) + TTL_7400_NAND(A5D25_2, A5D21_2.Q, P_M1) + TTL_7400_NAND(A5D25_3, SERVE, A5D25_4.Q) + TTL_7400_NAND(A5D25_4, A5D25_3.Q, A5D27_2.Q) + + TTL_7410_NAND(A5D26_1, SYNC_MIX, P_M1, tbc) + TTL_7410_NAND(A5D26_2, P_M1, SYNC_MIX, STOPSOUND) + TTL_7410_NAND(A5D24_2, SYNC_MIX, P_M1, MOVE_LEFT) + TTL_7410_NAND(A5D24_3, P_M1, tbc, STOPSOUND) + TTL_7410_NAND(A5D26_3, A5D27_2.Q, A5D26_2.Q, A5D26_1.Q) + TTL_7420_NAND(A5D27_2, A5D26_3.Q, A5D24_3.Q, A5D24_2.Q, N0X6) + + TTL_7420_NAND(A5D27_1, a5x9, a5x7, a5x8, a5x5) + TTL_7420_NAND(A5D28_1, A5D2_4.Q, A5D33_1.Q, P_I1, P_M1) // possible typo in schematic + TTL_7420_NAND(A5D28_2, P_I2, P_M1, A5D31_3.Q, A5D22_3.Q) + TTL_7420_NAND(A5D29_1, A5D22_1.Q, A5D33_1.Q, P_I1, P_M1) + TTL_7420_NAND(A5D29_2, P_M1, A5D2_3.Q, A5D31_3.Q, P_I2) + + TTL_7420_NAND(A5D30_1, a5x14, a5x10, REFLECT_LEFT, MOVE_LEFT) + TTL_7420_NAND(A5D30_2, A5D30_1.Q, A5D29_1.Q, a5x11, A5D25_2.Q) + TTL_7410_NAND(A5D31_1, a5x14, A5D29_1.Q, REFLECT_RIGHT) + TTL_7420_NAND(A5D32_1, A5D31_1.Q, REFLECT_LEFT, REFLECT_RIGHT, A5D32_2.Q) + TTL_7420_NAND(A5D32_2, REFLECT_RIGHT, REFLECT_LEFT, A5D25_2.Q, A5D31_2.Q) + TTL_7410_NAND(A5D31_2, a5x10, a5x11, A5D32_2.Q) + + TTL_7400_NAND(A5D21_3, MOVE_LEFT, A5D2_3.Q) + TTL_7400_NAND(A5D21_4, tbc, A5D2_4.Q) + TTL_7400_NAND(A5D22_4, A5D2_4.Q, A5D2_3.Q) + TTL_7410_NAND(A5D31_3, REFLECT_RIGHT, A5D22_4.Q, A5D33_1.Q) + TTL_7410_NAND(A5D33_1, A5D22_4.Q, A5D32_2.Q, A5D31_3.Q) + TTL_7410_NAND(A5D33_2, A5D21_4.Q, SOUND_GATE, A5D33_1.Q) + TTL_7410_NAND(A5D33_3, SOUND_GATE, A5D21_3.Q, A5D31_3.Q) + + ALIAS(tbc, low) + ALIAS(G_TRAINING, low) + ALIAS(G_RIGHT_LEFT, low) + ALIAS(G_VOLLEYBALL, low) + ALIAS(G_SQUASH, low) + ALIAS(G_FOOSBALL, low) + ALIAS(G_TENNIS, low) + ALIAS(SERVE, low) + + // outputs + ALIAS(videomix, A5D27_1.Q) + ALIAS(P_I, A5D24_1.Q) + ALIAS(P_I1, A5D17_3.Q) + ALIAS(P_I2, A5D17_1.Q) + ALIAS(P_TOP_BORDER, A5D20_2.Q) + ALIAS(P_BOTTOM_BORDER, A5D20_3.Q) + ALIAS(STOP_BALL, A5D25_3.Q) + ALIAS(REFLECT_LEFT, A5D25_1.Q) + ALIAS(MOVE_LEFT, A5D30_2.Q) + ALIAS(REFLECT_RIGHT, A5D32_1.Q) + ALIAS(MOVE_RIGHT, tbc) + ALIAS(SOUND_GATE, A5D26_3.Q) + ALIAS(SCORE1, A5D33_3.Q) + ALIAS(SCORE2, A5D33_2.Q) + + // test points + ALIAS(a5x3, A5D12.Q) + ALIAS(a5x5, A5D22_2.Q) + ALIAS(a5x6, A5D17_3.Q) + ALIAS(a5x7, A5D15_4.Q) + ALIAS(a5x8, A5D23.Q) + ALIAS(a5x9, A5D20_1.Q) + ALIAS(a5x10, A5D28_2.Q) + ALIAS(a5x11, A5D29_2.Q) + ALIAS(a5x12, A5D27_2.Q) + ALIAS(a5x13, A5D28_2.Q) + ALIAS(a5x14, A5D28_1.Q) + +#if 0 + HINT(clk, NO_DEACTIVATE) +#endif + +NETLIST_END() + diff --git a/src/mame/machine/nl_palestra.h b/src/mame/machine/nl_palestra.h new file mode 100644 index 00000000000..5f618c5bc78 --- /dev/null +++ b/src/mame/machine/nl_palestra.h @@ -0,0 +1,4 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev + +NETLIST_EXTERNAL(palestra) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index afcbf25aebb..9b87da3fb10 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -40199,6 +40199,9 @@ zx97 // tp1983 tp1985 +@source:palestra.cpp +palestra + @source:vgmplay.cpp vgmplay diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 082c7b03a19..e290576b13a 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -527,6 +527,7 @@ p2000t.cpp p8k.cpp palm.cpp palmz22.cpp +palestra.cpp partner.cpp paso1600.cpp pasogo.cpp |