diff --git a/src/emu/netlist/devices/net_lib.c b/src/emu/netlist/devices/net_lib.c index c0a0ef3ac2b..ed2f7ae8d27 100644 --- a/src/emu/netlist/devices/net_lib.c +++ b/src/emu/netlist/devices/net_lib.c @@ -58,13 +58,21 @@ NETLIST_START(diode_models) NET_MODEL(".model LedGreen D(IS=93.2p RS=42M N=4.61 BV=4 IBV=10U CJO=2.97P VJ=.75 M=.333 TT=4.32U Iave=40m Vpk=4 type=LED)") NET_MODEL(".model LedBlue D(IS=93.2p RS=42M N=7.47 BV=5 IBV=10U CJO=2.97P VJ=.75 M=.333 TT=4.32U Iave=40m Vpk=5 type=LED)") NET_MODEL(".model LedWhite D(Is=0.27n Rs=5.65 N=6.79 Cjo=42p Iave=30m Vpk=5 type=LED)") + NET_MODEL(".model 1N4001 D(Is=14.11n N=1.984 Rs=33.89m Ikf=94.81 Xti=3 Eg=1.11 Cjo=25.89p M=.44 Vj=.3245 Fc=.5 Bv=75 Ibv=10u Tt=5.7u Iave=1 Vpk=50 mfg=GI type=silicon)") NETLIST_END() NETLIST_START(bjt_models) - NET_MODEL(".MODEL BC237B NPN(IS=1.8E-14 ISE=5.0E-14 ISC=1.72E-13 XTI=3 BF=400 BR=35.5 IKF=0.14 IKR=0.03 XTB=1.5 VAF=80 VAR=12.5 VJE=0.58 VJC=0.54 RE=0.6 RC=0.25 RB=0.56 CJE=13E-12 CJC=4E-12 XCJC=0.75 FC=0.5 NF=0.9955 NR=1.005 NE=1.46 NC=1.27 MJE=0.33 MJC=0.33 TF=0.64E-9 TR=50.72E-9 EG=1.11 KF=0 AF=1 VCEO=45V ICRATING=100M MFG=ZETEX)") + NET_MODEL(".model BC237B NPN(IS=1.8E-14 ISE=5.0E-14 ISC=1.72E-13 XTI=3 BF=400 BR=35.5 IKF=0.14 IKR=0.03 XTB=1.5 VAF=80 VAR=12.5 VJE=0.58 VJC=0.54 RE=0.6 RC=0.25 RB=0.56 CJE=13E-12 CJC=4E-12 XCJC=0.75 FC=0.5 NF=0.9955 NR=1.005 NE=1.46 NC=1.27 MJE=0.33 MJC=0.33 TF=0.64E-9 TR=50.72E-9 EG=1.11 KF=0 AF=1 VCEO=45V ICRATING=100M MFG=ZETEX)") NET_MODEL(".model BC556B PNP(IS=3.83E-14 NF=1.008 ISE=1.22E-14 NE=1.528 BF=344.4 IKF=0.08039 VAF=21.11 NR=1.005 ISC=2.85E-13 NC=1.28 BR=14.84 IKR=0.047 VAR=32.02 RB=1 IRB=1.00E-06 RBM=1 RE=0.6202 RC=0.5713 XTB=0 EG=1.11 XTI=3 CJE=1.23E-11 VJE=0.6106 MJE=0.378 TF=5.60E-10 XTF=3.414 VTF=5.23 ITF=0.1483 PTF=0 CJC=1.08E-11 VJC=0.1022 MJC=0.3563 XCJC=0.6288 TR=1.00E-32 CJS=0 VJS=0.75 MJS=0.333 FC=0.8027 Vceo=65 Icrating=100m mfg=Philips)") NET_MODEL(".model 2SA1015 PNP(Is=295.1E-18 Xti=3 Eg=1.11 Vaf=100 Bf=110 Xtb=1.5 Br=10.45 Rc=15 Cjc=66.2p Mjc=1.054 Vjc=.75 Fc=.5 Cje=5p Mje=.3333 Vje=.75 Tr=10n Tf=1.661n VCEO=45V ICrating=150M MFG=Toshiba)") NET_MODEL(".model 2SC1815 NPN(Is=2.04f Xti=3 Eg=1.11 Vaf=6 Bf=400 Ikf=20m Xtb=1.5 Br=3.377 Rc=1 Cjc=1p Mjc=.3333 Vjc=.75 Fc=.5 Cje=25p Mje=.3333 Vje=.75 Tr=450n Tf=20n Itf=0 Vtf=0 Xtf=0 VCEO=45V ICrating=150M MFG=Toshiba)") + NET_MODEL(".model 2N3643 NPN(IS=14.34E-15 ISE=14.34E-15 ISC=0 XTI=3 BF=255.9 BR=6.092 IKF=0.2847 IKR=0 XTB=1.5 VAF=74.03 VAR=28 VJE=0.65 VJC=0.65 RE=0.1 RC=1 RB=10 CJE=22.01E-12 CJC=7.306E-12 XCJC=0.75 FC=0.5 NF=1 NR=1 NE=1.307 NC=2 MJE=0.377 MJC=0.3416 TF=411.1E-12 TR=46.91E-9 ITF=0.6 VTF=1.7 XTF=3 EG=1.11 KF=0 AF=1 VCEO=30 ICRATING=500m MFG=NSC)") + NET_MODEL(".model 2N3645 PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 RE=0.15 RC=0.715 RB=10 CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 EG=1.11 KF=0 AF=1 VCEO=60 ICRATING=500m MFG=NSC)") + // 3644 = 3645 Difference between 3644 and 3645 is voltage rating. 3644: VCBO=45, 3645: VCBO=60 + NET_MODEL(".model 2N3644 PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 RE=0.15 RC=0.715 RB=10 CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 EG=1.11 KF=0 AF=1 VCEO=60 ICRATING=500m MFG=NSC)") + NET_MODEL(".model BC817-25 NPN(IS=9.198E-14 NF=1.003 ISE=4.468E-16 NE=1.65 BF=338.8 IKF=0.4913 VAF=107.9 NR=1.002 ISC=5.109E-15 NC=1.071 BR=29.48 IKR=0.193 VAR=25 RB=1 IRB=1000 RBM=1 RE=0.2126 RC=0.143 XTB=0 EG=1.11 XTI=3 CJE=3.825E-11 VJE=0.7004 MJE=0.364 TF=5.229E-10 XTF=219.7 VTF=3.502 ITF=7.257 PTF=0 CJC=1.27E-11 VJC=0.4431 MJC=0.3983 XCJC=0.4555 TR=7E-11 CJS=0 VJS=0.75 MJS=0.333 FC=0.905 Vceo=45 Icrating=500m mfg=Philips)") + // 2N5190 = BC817-25 + NET_MODEL(".model 2N5190 NPN(IS=9.198E-14 NF=1.003 ISE=4.468E-16 NE=1.65 BF=338.8 IKF=0.4913 VAF=107.9 NR=1.002 ISC=5.109E-15 NC=1.071 BR=29.48 IKR=0.193 VAR=25 RB=1 IRB=1000 RBM=1 RE=0.2126 RC=0.143 XTB=0 EG=1.11 XTI=3 CJE=3.825E-11 VJE=0.7004 MJE=0.364 TF=5.229E-10 XTF=219.7 VTF=3.502 ITF=7.257 PTF=0 CJC=1.27E-11 VJC=0.4431 MJC=0.3983 XCJC=0.4555 TR=7E-11 CJS=0 VJS=0.75 MJS=0.333 FC=0.905 Vceo=45 Icrating=500m mfg=Philips)") NETLIST_END() diff --git a/src/mame/drivers/nl_breakout.c b/src/mame/drivers/nl_breakout.c index a24c15b72ad..9768084d84c 100644 --- a/src/mame/drivers/nl_breakout.c +++ b/src/mame/drivers/nl_breakout.c @@ -91,70 +91,17 @@ static Astable555Desc b2_555_desc(OHM(560.0), M_OHM(1.8), U_FARAD(0.1)); static Mono555Desc c9_555_desc(OHM(47000.0), U_FARAD(1.0)); // R33, C21 -//check these values -//static Paddle1HorizontalDesc pad1_desc(15047.0, 47.0, &c9_555_desc); - static CapacitorDesc c32_desc(U_FARAD(0.1)); static CapacitorDesc c36_desc(N_FARAD(1.0)); //0.001uF = 1nF static CapacitorDesc c37_desc(P_FARAD(330.0)); -#if 0 -static BufferDesc pad_en_buf_desc(DELAY_NS(15.0), DELAY_NS(15.0)); // Prevents 12ns glitch on PAD_EN_n signal from resetting C9. TODO: is this accurate? -#endif - -#if 0 -static VIDEO_DESC( breakout ) - VIDEO_RESISTANCE(1, K_OHM(0.0)) - VIDEO_RESISTANCE(2, K_OHM(3.9)) - VIDEO_RESISTANCE(3, K_OHM(3.9)) - VIDEO_RESISTANCE(4, K_OHM(3.9)) - VIDEO_RESISTANCE(5, K_OHM(3.9)) - VIDEO_RESISTANCE(6, K_OHM(3.9)) - //VIDEO_RESISTANCE(Video::HBLANK_PIN, K_OHM(0.0)) - VIDEO_ORIENTATION(ROTATE_90) - VIDEO_CONTRAST(4.0) - - // Values guessed based on screenshots. TODO: Make more accurate - // X, Y, W, H, R, G, B - VIDEO_OVERLAY( 15.570e-6, 0.0, 1.911e-6, -1.0, 0.80, 0.15, 0.05 ) // Red Bricks - VIDEO_OVERLAY( 17.481e-6, 0.0, 1.956e-6, -1.0, 0.95, 0.65, 0.05 ) // Amber Bricks - VIDEO_OVERLAY( 19.437e-6, 0.0, 1.956e-6, -1.0, 0.05, 0.65, 0.25 ) // Green Bricks - VIDEO_OVERLAY( 21.393e-6, 0.0, 1.955e-6, -1.0, 0.95, 0.95, 0.20 ) // Yellow Bricks - VIDEO_OVERLAY( 51.345e-6, 0.0, 1.956e-6, -1.0, 0.05, 0.65, 0.95 ) // Blue Paddle - - // TODO: Different overlays for cocktail cabinet -VIDEO_DESC_END - -static AUDIO_DESC( breakout ) - AUDIO_RESISTANCE(1, K_OHM(47.0)) - AUDIO_RESISTANCE(2, K_OHM(47.0)) - AUDIO_RESISTANCE(3, K_OHM(47.0)) - AUDIO_RESISTANCE(4, K_OHM(47.0)) - AUDIO_GAIN(3.0) -VIDEO_DESC_END -#endif - static Mono9602Desc n8_desc(K_OHM(33.0), U_FARAD(100.0), K_OHM(5.6), P_FARAD(0)); // No capacitor on 2nd 9602 static Mono9602Desc f3_desc(K_OHM(47.0), U_FARAD(1.0), K_OHM(47.0), U_FARAD(1.0)); static Mono9602Desc a7_desc(K_OHM(68.0), U_FARAD(1.0), K_OHM(22.0), U_FARAD(10.0)); static Mono9602Desc a8_desc(K_OHM(27.0), U_FARAD(1.0), K_OHM(27.0), U_FARAD(1.0)); -#if 0 -static Dipswitch53137Desc dipswitch1_desc("bonus_credit", "Bonus Credit", 3, "None", "100", "200", "300", "400", "500", "600", "700", "800"); -#endif - -//static DipswitchDesc dipswitch2_desc("cabinet_type", "Cabinet Type", 0, "Normal", "Cocktail"); -//static DipswitchDesc dipswitch3_desc("coinage", "Coinage", 0, "1 Coin / 1 Credit", "1 Coin / 2 Credits"); -//static DipswitchDesc dipswitch4_desc("ball_count", "Ball Count", 0, "3", "5"); - CIRCUIT_LAYOUT( breakout ) -#if 0 - CHIP("S1", 53137, &dipswitch1_desc) - CHIP("S2", DIPSWITCH, &dipswitch2_desc) - CHIP("S3", DIPSWITCH, &dipswitch3_desc) - CHIP("S4", DIPSWITCH, &dipswitch4_desc) -#endif #if (SLOW_BUT_ACCURATE) SOLVER(Solver, 48000) @@ -165,8 +112,6 @@ CIRCUIT_LAYOUT( breakout ) PARAM(Solver.GS_THRESHOLD, 2) //PARAM(Solver.SOR_FACTOR, 1) #endif - //CHIP("CLOCK", CLOCK_14_318_MHZ) - MAINCLOCK(Y1, 14318000.0) // DIPSWITCH - Free game SWITCH(S1_1) @@ -188,17 +133,92 @@ CIRCUIT_LAYOUT( breakout ) ANALOG_INPUT(V5, 5) ALIAS(VCC, V5) -//#define VCC "V5", Q -#define GNDD "GND", Q - //CHIP("Y1", CLOCK_14_318_MHZ) //Y1 +#define GNDD "ttllow", Q +#define P "ttlhigh", Q + + //---------------------------------------------------------------- + // Clock circuit + //---------------------------------------------------------------- +#if 1 || (SLOW_BUT_ACCURATE) + MAINCLOCK(Y1, 14318000.0) + CHIP("F1", 9316) + NET_C(Y1.Q, F1.2) + + CONNECTION("F1", 14, "H1", 13) + CONNECTION("F1", 13, "H1", 12) + CONNECTION("F1", 15, "E1", 5) + CONNECTION(P, "F1", 1) + CONNECTION(P, "F1", 7) + CONNECTION(P, "F1", 10) + CONNECTION(GNDD, "F1", 3) + CONNECTION(P, "F1", 4) + CONNECTION(GNDD, "F1", 5) + CONNECTION(GNDD, "F1", 6) + CONNECTION("E1", 6, "F1", 9) + +#define CKBH "F1", 13 +#define DICECLOCK "H1", 11 +#else + /* This works with bugs. The DICECLOCK (Y2) duty cycles are out of sync. + * Speed gain is from 50% to 60% and not what would have been expected. + */ + MAINCLOCK(Y1, 14318000.0 / 2.0) +#define CKBH "Y1", Q + CLOCK(Y2, 14318000.0 / 3.5) +#define DICECLOCK "Y2", Q + + NET_C(ttlhigh, H1.13) + NET_C(ttlhigh, H1.12) + NET_C(ttlhigh, E1.5) +#endif + + //---------------------------------------------------------------- + // Startup / Antenna latch + //---------------------------------------------------------------- + + TTL_INPUT(antenna, 0) + + DIODE(CR3, "1N914") + DIODE(CR4, "1N914") + DIODE(CR5, "1N914") + DIODE(CR7, "1N914") + + QBJT_EB(Q1, "2N3644") + QBJT_EB(Q2, "2N3643") + QBJT_EB(Q3, "2N3643") + CAP(C19, CAP_U(0.1)) + CAP(C16, CAP_U(0.1)) + + RES(R25, 100) + RES(R26, 330) + RES(R27, 100) + RES(R31, 220) + RES(R32, 100) + + NET_C(GND, CR5.A, Q2.E, C16.2, R25.2, Q3.E) + NET_C(CR5.K, Q2.B, antenna) + NET_C(Q2.C, C16.1, R25.1, Q3.B, R27.2) + NET_C(R27.1, CR7.A, R31.2) //CR7.K == IN + NET_C(R31.1, Q1.C) + NET_C(Q3.C, R26.2, CR3.A, CR4.A, E9.5) // E9.6 = Q Q3.C=QQ CR3.K = COIN*1 CR4.K = COIN*2 + NET_C(R26.1, Q1.B, C19.2, R32.2) + NET_C(Q1.E, C19.1, R32.1, V5) + + #define LAT_Q "E9", 6 + #define Q_n "Q3", C + #define COIN1_n "F8", 5 + #define COIN2_n "H9", 5 + + CONNECTION("CR7", K, "D8", 11) //set + CONNECTION("CR3", K, COIN1_n) //reset + CONNECTION("CR4", K, COIN2_n) //reset + CHIP_CAPACITOR(C32, &c32_desc) CHIP_CAPACITOR(C36, &c36_desc) CHIP_CAPACITOR(C37, &c37_desc) -#if 0 - CHIP("PAD_EN_BUF", BUFFER, &pad_en_buf_desc) -#endif + CHIP("A3", 7474) CHIP("A4", 7408) CHIP("A5", 7400) @@ -243,7 +263,6 @@ CIRCUIT_LAYOUT( breakout ) CHIP("E8", 7474) CHIP("E9", 7404) - CHIP("F1", 9316) CHIP("F2", 7411) CHIP_9602_Mono(F3, &f3_desc) CHIP("F4", 7474) @@ -315,13 +334,6 @@ CIRCUIT_LAYOUT( breakout ) //LM380 //speaker amplifier //LM323 //regulator -#if 0 - CHIP("PAD1", PADDLE1_HORIZONTAL_INPUT, &pad1_desc) - PADDLE_CONNECTION("PAD1", "C9") -#endif - - CHIP_LATCH(LATCH) - //HSYNC and VSYNC #define H1_d "L1", 14 #define H2_d "L1", 13 @@ -380,19 +392,12 @@ CIRCUIT_LAYOUT( breakout ) #define SCORE "D3", 5 #define VERT_TRIG_n "H1", 8 - #define DICECLOCK "H1", 11 #define SCLOCK "K1", 15 - #define CKBH "F1", 13 #define PAD_n "K3", 8 #define PAD_EN_n "C2", 8 - //#define P VCC - #define P "ttlhigh", Q - #define COIN "L9", 6 - #define COIN1_n "F8", 5 - #define COIN2_n "H9", 5 #define CREDIT_1_OR_2 "L9", 3 #define CREDIT_1_OR_2_n "F9", 8 #define CREDIT2 "F9", 6 @@ -421,9 +426,6 @@ CIRCUIT_LAYOUT( breakout ) #define FREE_GAME_TONE "N7", 3 #define BONUS_COIN "L9", 11 - //#define Q "E9", 6 - #define LAT_Q "E9", 6 - #define Q_n "LATCH", 3 #define SBD_n "D2", 11 #define PLAY_CP "D2", 8 @@ -517,10 +519,6 @@ CIRCUIT_LAYOUT( breakout ) #define RH_SIDE "H2", 3 #define TOP_BOUND "K4", 6 -// CONNECTION(CREDIT_1_OR_2, "CREDIT_LIGHT1", 1) -// CONNECTION(CREDIT2, "CREDIT_LIGHT2", 1) -// CONNECTION(SERVE_WAIT_n, "SERVE_LIGHT", 1) - //Audio CONNECTION("M9", 2, "F6", 5) CONNECTION("M9", 2, "F7", 15) @@ -554,16 +552,6 @@ CIRCUIT_LAYOUT( breakout ) CONNECTION("A7", 6, "B9", 4) CONNECTION(VB_HIT_SOUND, "B9", 5) -#if 0 - CONNECTION(GND, "S1", 1) - CONNECTION(P, "S1", 2) - CONNECTION(GND, "S1", 4) - CONNECTION(P, "S1", 3) - CONNECTION(GND, "S1", 12) - CONNECTION(P, "S1", 11) - CONNECTION(GND, "S1", 9) - CONNECTION(P, "S1", 10) -#endif NET_C(S1_1.1, GND) NET_C(S1_2.1, GND) NET_C(S1_3.1, GND) @@ -1138,23 +1126,6 @@ CIRCUIT_LAYOUT( breakout ) CONNECTION(P_HIT_SOUND, "D7", 4) CONNECTION("B8", 15, "D7", 3) - //Clock Generator - CONNECTION(CKBH, "H1", 12) - CONNECTION("F1", 14, "H1", 13) - CONNECTION("F1", 15, "E1", 5) - - CONNECTION(P, "F1", 1) - CONNECTION(P, "F1", 7) - CONNECTION(P, "F1", 10) - CONNECTION(GNDD, "F1", 3) - CONNECTION(P, "F1", 4) - CONNECTION(GNDD, "F1", 5) - CONNECTION(GNDD, "F1", 6) - CONNECTION("E1", 6, "F1", 9) - - //CONNECTION("Y1", 1, "F1", 2) - NET_C(Y1.Q, F1.2) - // RH and LH Sides CONNECTION(V128, "N4", 1) CONNECTION(V64, "N4", 2) @@ -1212,25 +1183,15 @@ CIRCUIT_LAYOUT( breakout ) CONNECTION(V16_d, "J8", 14) CONNECTION("J8", 13, "J9", 10) -#if 0 - CONNECTION(P, "S3", 1) - CONNECTION(V4_d, "S3", 2) - CONNECTION("S3", 3, "J9", 11) -#else CONNECTION(V4_d, "S3", 1) CONNECTION("S3", 2, "J9", 11) RES(R15, RES_K(1)) NET_C(R15.1, V5) NET_C(R15.2, S3.2) -#endif CONNECTION("J9", 8, "L9", 5) CONNECTION("J9", 6, "L9", 4) - //COIN2 circuit - //CONNECTION("COIN2", 1, "F9", 1) - //CONNECTION(GNDD, "F9", 1) //TODO: coin2 not implemented - CONNECTION("COIN2", 2, "F9", 1) CONNECTION("COIN2", 1, "F9", 3) NET_C(COIN2.Q, GND) @@ -1311,10 +1272,6 @@ CIRCUIT_LAYOUT( breakout ) //TODO: hows this whole latch stuff work? what about Q_n going to COIN1_n and COIN2_n CONNECTION(CREDIT_1_OR_2_n, "D8", 13) CONNECTION(EGL, "D8", 12) - CONNECTION("LATCH", 1, "D8", 11) //set - CONNECTION("LATCH", 2, COIN1_n) //reset - //CONNECTION("LATCH", 3, COIN2_n) //set //TODO: coin2 here - CONNECTION( "LATCH", 3, "E9", 5) //output CONNECTION(LAT_Q, "D6", 1) @@ -1608,20 +1565,8 @@ CIRCUIT_LAYOUT( breakout ) CONNECTION(PSYNC, "B9", 1) CONNECTION(VSYNC_n, "B9", 2) -#if 0 - //CONNECTION("VIDEO", 1, "E2", 11) - CONNECTION("VIDEO", 2, PLAYFIELD) - CONNECTION("VIDEO", 3, BSYNC) - CONNECTION("VIDEO", 4, SCORE) - CONNECTION("VIDEO", 5, "B9", 3) - //CONNECTION("VIDEO", 6, P) - - CONNECTION("VIDEO", Video::HBLANK_PIN, HSYNC) - CONNECTION("VIDEO", Video::VBLANK_PIN, "E3", 10) -#else // VIDEO SUMMING RES(R41, RES_K(3.9)) - //RES(R42, RES_K(3.9)) RES(R42, RES_K(3.9)) RES(R43, RES_K(3.9)) RES(R51, RES_K(3.9)) @@ -1653,15 +1598,7 @@ CIRCUIT_LAYOUT( breakout ) ALIAS(videomix, R41.1) -#endif - -#if 0 // Audio Summing - CONNECTION("AUDIO", 1, "B9", 11) - CONNECTION("AUDIO", 2, "B9", 8) - CONNECTION("AUDIO", 3, FREE_GAME_TONE) - CONNECTION("AUDIO", 4, "B9", 6) -#else RES(R36, RES_K(47)) RES(R37, RES_K(47)) RES(R38, RES_K(47)) @@ -1673,26 +1610,6 @@ CIRCUIT_LAYOUT( breakout ) NET_C(R36.1, R37.1, R38.1, R39.1) ALIAS(sound, R36.1) -#endif - -#ifdef DEBUG - // RAM access - /*CONNECTION("LOG1", 3, H4) //A - CONNECTION("LOG1", 4, H8) //B - CONNECTION("LOG1", 5, H16) //C - CONNECTION("LOG1", 6, V32) //D - CONNECTION("LOG1", 7, V64) //E - CONNECTION("LOG1", 8, V128) //F - CONNECTION("LOG1", 9, V16) //G - CONNECTION("LOG1", 10, RAM_PLAYER1) //H - CONNECTION("LOG1", 11, H32) //I - CONNECTION("LOG1", 12, H128) //J - CONNECTION("LOG1", 13, "H4", 8) //K - CONNECTION("LOG1", 14, "E1", 4) //L - CONNECTION("LOG1", 15, "F2", 12) //M - CONNECTION("LOG1", 16, "L3", 6)*/ //N -#endif - // POTS POT2(POTP1, RES_K(5)) // 5k PARAM(POTP1.DIALLOG, 1) // Log Dial ... @@ -1745,6 +1662,28 @@ CIRCUIT_LAYOUT( breakout ) ALIAS(CON_CREDIT1, L9.3) // CREDIT_1_OR_2 ALIAS(CON_CREDIT2, F9.6) // CREDIT2 + //---------------------------------------------------------------- + // Coin Counter + //---------------------------------------------------------------- + + CONNECTION(CSW1, "E2", 1) + CONNECTION(CSW2, "E2", 2) + RES(R14, 150) + QBJT_SW(Q6, "2N5190") + DIODE(CR8, "1N4001") + NET_C(E2.3, R14.1) + NET_C(R14.2, Q6.B) + NET_C(GND, Q6.E) + NET_C(Q6.C, CR8.A) + NET_C(CR8.K, V5) + ALIAS(CON_T, Q6.C) + + // Not on PCB: Coincounter + + RES(CC_R, 20) // this is connected + NET_C(CC_R.1, CON_T) + NET_C(CC_R.2, V5) + //---------------------------------------------------------------- // Not connected pins //---------------------------------------------------------------- @@ -1759,7 +1698,6 @@ CIRCUIT_LAYOUT( breakout ) NET_C(ttlhigh, J6.3, J6.4, J6.5, J6.6) NET_C(ttlhigh, E1.9, E1.11) - NET_C(ttlhigh, E2.1, E2.2) NET_C(GND, D9.1, D9.2, D9.13, D9.3, D9.4, D9.5) diff --git a/src/mame/drivers/pong.c b/src/mame/drivers/pong.c index eb3a3263110..854c5d135c1 100644 --- a/src/mame/drivers/pong.c +++ b/src/mame/drivers/pong.c @@ -95,7 +95,6 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_video(*this, "fixfreq"), - m_dac(*this, "dac") /* just to have a sound device */ { } @@ -158,12 +157,23 @@ public: : ttl_mono_state(mconfig, type, tag), m_led_serve(*this, "maincpu:led_serve"), m_lamp_credit1(*this, "maincpu:lamp_credit1"), - m_lamp_credit2(*this, "maincpu:lamp_credit2") + m_lamp_credit2(*this, "maincpu:lamp_credit2"), + m_coin_counter(*this, "maincpu:coin_counter"), + m_sw1_1(*this, "maincpu:sw1_1"), + m_sw1_2(*this, "maincpu:sw1_2"), + m_sw1_3(*this, "maincpu:sw1_3"), + m_sw1_4(*this, "maincpu:sw1_4") { } required_device m_led_serve; required_device m_lamp_credit1; required_device m_lamp_credit2; + required_device m_coin_counter; + + required_device m_sw1_1; + required_device m_sw1_2; + required_device m_sw1_3; + required_device m_sw1_4; NETDEV_ANALOG_CALLBACK_MEMBER(serve_cb) { @@ -180,6 +190,19 @@ public: output_set_value("lamp_credit2", (data < 2.0) ? 0 : 1); } + NETDEV_ANALOG_CALLBACK_MEMBER(coin_counter_cb) + { + coin_counter_w(machine(), 0, (data > 2.0) ? 0 : 1); + } + + DECLARE_INPUT_CHANGED_MEMBER(cb_free_play) + { + m_sw1_1->write((newval>>0) & 1); + m_sw1_2->write((newval>>1) & 1); + m_sw1_3->write((newval>>2) & 1); + m_sw1_4->write((newval>>3) & 1); + } + protected: // driver_device overrides @@ -278,6 +301,8 @@ static INPUT_PORTS_START( breakout ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "startsw1") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "startsw2") PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "servesw") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Antenna") NETLIST_LOGIC_PORT_CHANGED("maincpu", "antenna") + PORT_START("DIPS") PORT_DIPNAME( 0x01, 0x00, "Balls" ) PORT_DIPLOCATION("SW4:1") NETLIST_LOGIC_PORT_CHANGED("maincpu", "sw4") @@ -286,18 +311,20 @@ static INPUT_PORTS_START( breakout ) PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW3:1") NETLIST_LOGIC_PORT_CHANGED("maincpu", "sw3") PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:1") NETLIST_LOGIC_PORT_CHANGED("maincpu", "sw2") + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:1") NETLIST_LOGIC_PORT_CHANGED("maincpu", "sw2") PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Upright ) ) + PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW1:1,2,3,4") PORT_CHANGED_MEMBER(DEVICE_SELF, breakout_state, cb_free_play, 0) + PORT_DIPSETTING( 0x00, "No Free Play" ) + PORT_DIPSETTING( 0x10, "100" ) + PORT_DIPSETTING( 0x20, "200" ) + PORT_DIPSETTING( 0x30, "300" ) + PORT_DIPSETTING( 0x40, "400" ) + PORT_DIPSETTING( 0x50, "500" ) + PORT_DIPSETTING( 0x60, "600" ) + PORT_DIPSETTING( 0x70, "700" ) + PORT_DIPSETTING( 0x80, "800" ) -#if 0 - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Antenna") NETLIST_LOGIC_PORT_CHANGED("maincpu", "antenna") - - PORT_START("VR1") - PORT_ADJUSTER( 50, "VR1 - 50k, Paddle 1 adjustment" ) NETLIST_ANALOG_PORT_CHANGED("maincpu", "vr0") - PORT_START("VR2") - PORT_ADJUSTER( 50, "VR2 - 50k, Paddle 2 adjustment" ) NETLIST_ANALOG_PORT_CHANGED("maincpu", "vr1") -#endif INPUT_PORTS_END static MACHINE_CONFIG_START( pong, pong_state ) @@ -340,16 +367,7 @@ static MACHINE_CONFIG_START( breakout, breakout_state ) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", NETLIST_CPU, NETLIST_CLOCK) MCFG_NETLIST_SETUP(breakout) -#if 0 - MCFG_NETLIST_ANALOG_INPUT("maincpu", "vr0", "ic_b9_R.R") - MCFG_NETLIST_ANALOG_MULT_OFFSET(1.0 / 100.0 * RES_K(50), RES_K(56) ) - MCFG_NETLIST_ANALOG_INPUT("maincpu", "vr1", "ic_a9_R.R") - MCFG_NETLIST_ANALOG_MULT_OFFSET(1.0 / 100.0 * RES_K(50), RES_K(56) ) - MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot0", "ic_b9_POT.DIAL") - MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot1", "ic_a9_POT.DIAL") - MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1a", "sw1a.POS", 0, 0x01) - MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1b", "sw1b.POS", 0, 0x01) -#endif + MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot1", "POTP1.DIAL") MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot2", "POTP2.DIAL") MCFG_NETLIST_LOGIC_INPUT("maincpu", "coinsw1", "COIN1.POS", 0, 0x01) @@ -360,9 +378,14 @@ static MACHINE_CONFIG_START( breakout, breakout_state ) MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw4", "S4.POS", 0, 0x01) MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw3", "S3.POS", 0, 0x01) MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw2", "S2.POS", 0, 0x01) -#if 0 + + MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1_1", "S1_1.POS", 0, 0x01) + MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1_2", "S1_2.POS", 0, 0x01) + MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1_3", "S1_3.POS", 0, 0x01) + MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1_4", "S1_4.POS", 0, 0x01) + MCFG_NETLIST_LOGIC_INPUT("maincpu", "antenna", "antenna.IN", 0, 0x01) -#endif + MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "snd0", "sound", breakout_state, sound_cb, "") MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "vid0", "videomix", fixedfreq_device, update_vid, "fixfreq") @@ -371,6 +394,7 @@ static MACHINE_CONFIG_START( breakout, breakout_state ) MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "led_serve", "CON_P", breakout_state, serve_cb, "") MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "lamp_credit1", "CON_CREDIT1", breakout_state, credit1_cb, "") MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "lamp_credit2", "CON_CREDIT2", breakout_state, credit2_cb, "") + MCFG_NETLIST_ANALOG_OUTPUT("maincpu", "coin_counter", "CON_T", breakout_state, coin_counter_cb, "") /* video hardware */ MCFG_FIXFREQ_ADD("fixfreq", "screen")