1 // license:CC0
2 // copyright-holders:Couriersud
3 #include "netlist/devices/net_lib.h"
4 
5 /*
6  * M51516L pins:
7  *
8  * pin
9  * 9 - power,
10  * 8 - output 1,
11  * 7 - output 2,
12  * 6 - ground (large signal),
13  * 5 - feedback 2,
14  * 4 - feedback 1,
15  * 3 - muting,
16  * 2 - ground (small signal),
17  * 1 - input
18  *
19  * on the block diagram, box to the right of pin 3 says "Muting"
20  * and then to the right of that "ASO protection, surge protection, heat barrier"
21  *
22  */
23 
24 //NL_CONTAINS konami2x konami1x
25 
26 static NETLIST_START(filter)
27 	CD4066_GATE(G1)
28 	PARAM(G1.BASER, 270.0)
29 	CD4066_GATE(G2)
30 	PARAM(G2.BASER, 270.0)
31 	RES(RI, RES_K(1))
32 	RES(RO, RES_K(5))
33 	CAP(C1, CAP_U(0.22))
34 	CAP(C2, CAP_U(0.047))
35 	NET_C(RI.2, RO.1, G1.R.1, G2.R.1)
36 	NET_C(G1.R.2, C1.1)
37 	NET_C(G2.R.2, C2.1)
38 
39 	NET_C(C1.2, C2.2, G1.VSS, G2.VSS)
40 	NET_C(G1.VDD, G2.VDD)
41 
42 	ALIAS(I, RI.1)
43 	ALIAS(O, RO.2)
44 
45 	ALIAS(CTL1, G1.CTL)
46 	ALIAS(CTL2, G2.CTL)
47 
48 	ALIAS(VDD, G1.VDD)
49 	ALIAS(VSS, G1.VSS)
50 NETLIST_END()
51 
52 static NETLIST_START(amp)
53 
54 	UA741_DIP8(X3A)
55 	RES(R1, RES_K(2.2))
56 	RES(R2, RES_K(4.7))
57 	RES(VR, 200)         // Actually a potentiometer
58 	CAP(C1, CAP_U(0.15))
59 	RES(RI, RES_K(100))
60 
61 	NET_C(X3A.2, R1.1)
62 	NET_C(X3A.6, R1.2, R2.1)
63 	NET_C(R2.2, VR.1)
64 	NET_C(VR.1, C1.1)    // 100% pot position
65 	NET_C(C1.2, RI.1)
66 
67 	NET_C(GND, VR.2, RI.2)
68 
69 	// Amplifier M51516L, assume input RI 100k
70 
71 	ALIAS(OPAMP, X3A.2)
72 	ALIAS(OUT, RI.1)
73 	ALIAS(VP, X3A.7)
74 	ALIAS(VM, X3A.4)
75 	ALIAS(GND, X3A.3)
76 
77 NETLIST_END()
78 
79 static NETLIST_START(AY1)
80 	TTL_INPUT(CTL0, 0)
81 	TTL_INPUT(CTL1, 0)
82 	TTL_INPUT(CTL2, 0)
83 	TTL_INPUT(CTL3, 0)
84 	TTL_INPUT(CTL4, 0)
85 	TTL_INPUT(CTL5, 0)
86 	/* AY 8910 internal resistors */
87 	RES(R_AY3D_A, 1000)
88 	RES(R_AY3D_B, 1000)
89 	RES(R_AY3D_C, 1000)
90 	NET_C(VP5, R_AY3D_A.1, R_AY3D_B.1, R_AY3D_C.1)
91 
92 	SUBMODEL(filter, FCHA1)
93 	NET_C(FCHA1.I, R_AY3D_A.2)
94 	SUBMODEL(filter, FCHB1)
95 	NET_C(FCHB1.I, R_AY3D_B.2)
96 	SUBMODEL(filter, FCHC1)
97 	NET_C(FCHC1.I, R_AY3D_C.2)
98 
99 	NET_C(FCHA1.CTL1, CTL0)
100 	NET_C(FCHA1.CTL2, CTL1)
101 	NET_C(FCHB1.CTL1, CTL2)
102 	NET_C(FCHB1.CTL2, CTL3)
103 	NET_C(FCHC1.CTL1, CTL4)
104 	NET_C(FCHC1.CTL2, CTL5)
105 
106 	NET_C(VP5, FCHA1.VDD, FCHB1.VDD, FCHC1.VDD)
107 	NET_C(GND, FCHA1.VSS, FCHB1.VSS, FCHC1.VSS)
108 
109 	NET_C(VP5, CTL0.VCC, CTL1.VCC, CTL2.VCC, CTL3.VCC, CTL4.VCC, CTL5.VCC)
110 	NET_C(GND, CTL0.GND, CTL1.GND, CTL2.GND, CTL3.GND, CTL4.GND, CTL5.GND)
111 
112 NETLIST_END()
113 
114 static NETLIST_START(AY2)
115 	TTL_INPUT(CTL6, 0)
116 	TTL_INPUT(CTL7, 0)
117 	TTL_INPUT(CTL8, 0)
118 	TTL_INPUT(CTL9, 0)
119 	TTL_INPUT(CTL10, 0)
120 	TTL_INPUT(CTL11, 0)
121 	/* AY 8910 internal resistors */
122 	RES(R_AY3C_A, 1000)
123 	RES(R_AY3C_B, 1000)
124 	RES(R_AY3C_C, 1000)
125 	NET_C(VP5, R_AY3C_A.1, R_AY3C_B.1, R_AY3C_C.1)
126 
127 	SUBMODEL(filter, FCHA2)
128 	NET_C(FCHA2.I, R_AY3C_A.2)
129 	SUBMODEL(filter, FCHB2)
130 	NET_C(FCHB2.I, R_AY3C_B.2)
131 	SUBMODEL(filter, FCHC2)
132 	NET_C(FCHC2.I, R_AY3C_C.2)
133 
134 	NET_C(FCHA2.CTL1, CTL6)
135 	NET_C(FCHA2.CTL2, CTL7)
136 	NET_C(FCHB2.CTL1, CTL8)
137 	NET_C(FCHB2.CTL2, CTL9)
138 	NET_C(FCHC2.CTL1, CTL10)
139 	NET_C(FCHC2.CTL2, CTL11)
140 
141 	NET_C(VP5, FCHA2.VDD, FCHB2.VDD, FCHC2.VDD)
142 	NET_C(GND, FCHA2.VSS, FCHB2.VSS, FCHC2.VSS)
143 
144 	NET_C(VP5, CTL6.VCC, CTL7.VCC, CTL8.VCC, CTL9.VCC, CTL10.VCC, CTL11.VCC)
145 	NET_C(GND, CTL6.GND, CTL7.GND, CTL8.GND, CTL9.GND, CTL10.GND, CTL11.GND)
146 
147 NETLIST_END()
148 
149 NETLIST_START(konami2x)
150 
151 	SOLVER(Solver, 48000)
152 
153 	ANALOG_INPUT(VP5, 5)
154 	ANALOG_INPUT(VM5, -5)
155 
156 	LOCAL_SOURCE(filter)
157 	LOCAL_SOURCE(amp)
158 	LOCAL_SOURCE(AY1)
159 	LOCAL_SOURCE(AY2)
160 
161 	INCLUDE(AY1)
162 	INCLUDE(AY2)
163 
164 	NET_C(FCHA1.O, FCHB1.O, FCHC1.O, FCHA2.O, FCHB2.O, FCHC2.O)
165 
166 	SUBMODEL(amp, AMP)
167 
168 	NET_C(VP5, AMP.VP)
169 	NET_C(GND, AMP.GND)
170 	NET_C(VM5, AMP.VM)
171 	NET_C(FCHA1.O, AMP.OPAMP)
172 
173 	ALIAS(OUT, AMP.OUT)
174 NETLIST_END()
175 
176 NETLIST_START(konami1x)
177 
178 	SOLVER(Solver, 48000)
179 
180 	ANALOG_INPUT(VP5, 5)
181 	ANALOG_INPUT(VM5, -5)
182 
183 	LOCAL_SOURCE(filter)
184 	LOCAL_SOURCE(amp)
185 	LOCAL_SOURCE(AY1)
186 	LOCAL_SOURCE(AY2)
187 
188 	INCLUDE(AY1)
189 
190 	NET_C(FCHA1.O, FCHB1.O, FCHC1.O)
191 
192 	SUBMODEL(amp, AMP)
193 
194 	NET_C(VP5, AMP.VP)
195 	NET_C(GND, AMP.GND)
196 	NET_C(VM5, AMP.VM)
197 	NET_C(FCHA1.O, AMP.OPAMP)
198 
199 	ALIAS(OUT, AMP.OUT)
200 NETLIST_END()
201