1 // license:CC0
2 // copyright-holders:Aaron Giles
3 
4 //
5 // Netlist for Astro Blaster
6 //
7 // Derived from the schematics in the Astro Blaster manual.
8 //
9 // Known problems/issues:
10 //
11 //    * All sounds work under the right conditions.
12 //
13 //    * SONAR and BONUS sounds fail to trigger after the first
14 //       few seconds. For some reason the triggering via CD4011
15 //       never actually fires the one-shot that controls the
16 //       duration of the sound.
17 //
18 //    * Performance is poor, primarily due to the SONAR sound
19 //       and its connection to the mixing net. All attempts at
20 //       separating the two have ended in failure so far.
21 //
22 
23 #include "netlist/devices/net_lib.h"
24 #include "nl_astrob.h"
25 
26 
27 //
28 // Optimizations
29 //
30 
31 #define HLE_LASER_1_VCO (1)
32 #define HLE_LASER_2_VCO (1)
33 #define SIMPLIFY_SONAR (0)                  // only use one oscillator
34 #define ENABLE_SONAR_ALT (1)                // use frontiers to separate oscillators, modify UGF
35 #define ENABLE_FRONTIERS (1)
36 #define UNDERCLOCK_NOISE_GEN (1)
37 
38 
39 
40 //
41 // Hacks
42 //
43 
44 #define ADD_CLIPPING_DIODES (1)
45 
46 
47 
48 #define D_1N5231(name) ZDIODE(name, "1N5231")
49 #define D_1N914(name) DIODE(name, "1N914")
50 
51 #define Q_2N4403(name) QBJT_EB(name, "2N4403")
52 
53 // JFET transistors not supported, but this should do the trick
54 #define Q_2N4093(name) MOSFET(name, "NMOS(VTO=-1 CAPMOD=0)")
55 
56 #define LM555_DIP NE555_DIP
57 #define LM566_DIP NE566_DIP
58 
59 #define TTL_74LS00_DIP TTL_7400_DIP
60 #define TTL_74LS04_DIP TTL_7404_DIP
61 
62 // Define some random factors (5%)
63 
64 #define FRND1   1.023
65 #define FRND2   1.017
66 #define FRND3   1.005
67 #define FRND4   1.014
68 #define FRND5   1.049
69 #define FRND6   1.044
70 #define FRND7   1.016
71 #define FRND8   1.037
72 #define FRND9   1.030
73 #define FRND10  1.001
74 #define FRND11  1.034
75 #define FRND12  1.043
76 #define FRND13  1.011
77 #define FRND14  1.016
78 #define FRND15  1.011
79 #define FRND16  1.006
80 #define FRND17  1.009
81 #define FRND18  1.007
82 #define FRND19  1.035
83 #define FRND20  1.004
84 
85 //
86 // Main netlist
87 //
88 
89 NETLIST_START(astrob)
90 
91 #if 1
92 	SOLVER(Solver, 1000)
93 	PARAM(Solver.DYNAMIC_TS, 1)
94 	PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 4e-5)
95 #if (SIMPLIFY_SONAR)
96 	PARAM(Solver.Solver_54.DYNAMIC_MIN_TIMESTEP, 4e-6)  // gets rid of NR loops failure
97 #else
98 #if !(ENABLE_SONAR_ALT)
99 	PARAM(Solver.Solver_41.DYNAMIC_MIN_TIMESTEP, 6e-6)  // gets rid of NR loops failure
100 #endif
101 #endif
102 #else
103 	SOLVER(Solver, 48000)
104 #endif
105 
106 	// Overwrite model - the default model uses minimum datasheet
107 	// specifications for 5V. These are for 10V and thus closer to the
108 	// 12V used in this circuit.
109 	NET_MODEL("CD4XXX FAMILY(TYPE=CMOS IVL=0.3 IVH=0.7 OVL=0.05 OVH=0.05 ORL=384 ORH=384)")
110 
111 	TTL_INPUT(I_LO_D0, 0)
112 	NET_C(I_LO_D0, U31.1)
113 	ALIAS(I_INVADER_1, U31.2)
114 	TTL_INPUT(I_LO_D1, 0)
115 	NET_C(I_LO_D1, U31.3)
116 	ALIAS(I_INVADER_2, U31.4)
117 	TTL_INPUT(I_LO_D2, 0)
118 	NET_C(I_LO_D2, U31.11)
119 	ALIAS(I_INVADER_3, U31.10)
120 	TTL_INPUT(I_LO_D3, 0)
121 	NET_C(I_LO_D3, U31.9)
122 	ALIAS(I_INVADER_4, U31.8)
123 	TTL_INPUT(I_LO_D4, 0)
124 	NET_C(I_LO_D4, U30.13)
125 	ALIAS(I_ASTROIDS, U30.12)
126 	TTL_INPUT(I_LO_D5, 0)
127 	ALIAS(I_MUTE, I_LO_D5)
128 	TTL_INPUT(I_LO_D6, 0)
129 	NET_C(I_LO_D6, U30.3, U29.11)
130 	ALIAS(I_REFILL, U29.10)
131 	ALIAS(I_REFILL_Q, U30.4)
132 	TTL_INPUT(I_LO_D7, 0)
133 	ALIAS(W, I_LO_D7)
134 	NET_C(I_LO_D7, U31.5)
135 	ALIAS(I_WARP, U31.6)
136 
137 	NET_C(GND, I_LO_D0.GND, I_LO_D1.GND, I_LO_D2.GND, I_LO_D3.GND, I_LO_D4.GND, I_LO_D5.GND, I_LO_D6.GND, I_LO_D7.GND)
138 	NET_C(I_V5, I_LO_D0.VCC, I_LO_D1.VCC, I_LO_D2.VCC, I_LO_D3.VCC, I_LO_D4.VCC, I_LO_D5.VCC, I_LO_D6.VCC, I_LO_D7.VCC)
139 
140 	TTL_INPUT(I_HI_D0, 0)
141 	NET_C(I_HI_D0, U26.5)
142 	ALIAS(I_LASER_1, U26.6)
143 	TTL_INPUT(I_HI_D1, 0)
144 	NET_C(I_HI_D1, U26.3)
145 	ALIAS(I_LASER_2, U26.4)
146 	TTL_INPUT(I_HI_D2, 0)
147 	NET_C(I_HI_D2, U26.11)
148 	ALIAS(I_SHORT_EXPL, U26.10)
149 	TTL_INPUT(I_HI_D3, 0)
150 	NET_C(I_HI_D3, U26.9)
151 	ALIAS(I_LONG_EXPL, U26.8)
152 	TTL_INPUT(I_HI_D4, 0)
153 	NET_C(I_HI_D4, U26.1)
154 	ALIAS(I_ATTACK_RATE, U26.2)
155 	TTL_INPUT(I_HI_D5, 0)
156 	NET_C(I_HI_D5, U31.13)
157 	ALIAS(I_RATE_RESET, U31.12)
158 	TTL_INPUT(I_HI_D6, 0)
159 	NET_C(I_HI_D6, U29.9)
160 	ALIAS(I_BONUS, U29.8)
161 	TTL_INPUT(I_HI_D7, 0)
162 	NET_C(I_HI_D7, U29.5)
163 	ALIAS(I_SONAR, U29.6)
164 
165 	NET_C(GND, I_HI_D0.GND, I_HI_D1.GND, I_HI_D2.GND, I_HI_D3.GND, I_HI_D4.GND, I_HI_D5.GND, I_HI_D6.GND, I_HI_D7.GND)
166 	NET_C(I_V5, I_HI_D0.VCC, I_HI_D1.VCC, I_HI_D2.VCC, I_HI_D3.VCC, I_HI_D4.VCC, I_HI_D5.VCC, I_HI_D6.VCC, I_HI_D7.VCC)
167 
168 	ANALOG_INPUT(I_V5, 5)
169 	ANALOG_INPUT(I_V12, 12)
170 	ANALOG_INPUT(I_VM12, -12)
171 
172 	RES(R1, RES_K(100) * FRND1)  // part of SONAR circuit that relies on subtle part differences
173 	RES(R2, RES_K(1.5) * FRND2)  // part of SONAR circuit that relies on subtle part differences
174 	RES(R3, RES_K(330) * FRND3)  // part of SONAR circuit that relies on subtle part differences
175 	RES(R4, RES_K(10)  * FRND4)  // part of SONAR circuit that relies on subtle part differences
176 #if (SIMPLIFY_SONAR)
177 	// use less resistance to account for only emulating 1/4 identical circuits
178 	RES(R5, RES_K(17))  // part of SONAR circuit that relies on subtle part differences
179 #else
180 	RES(R5, RES_K(68)  * FRND5)  // part of SONAR circuit that relies on subtle part differences
181 #endif
182 	RES(R6, RES_K(68))
183 	RES(R7, RES_K(22))
184 	RES(R8, RES_K(18))
185 	RES(R9, RES_K(33))
186 	RES(R10, RES_K(100))
187 	RES(R11, RES_K(150))
188 	RES(R12, RES_K(39))
189 	RES(R13, RES_K(330))
190 	RES(R14, RES_K(47))
191 	RES(R15, RES_K(220))
192 	RES(R16, RES_K(10))
193 	RES(R17, RES_K(10))
194 	RES(R18, RES_M(2.7))
195 //  RES(R19, RES_K(1))
196 	RES(R20, RES_M(1))
197 	RES(R21, RES_K(100))
198 	RES(R22, RES_K(470))
199 	RES(R23, RES_K(100))
200 	RES(R24, RES_M(2.2))
201 	RES(R25, RES_K(10))
202 	RES(R26, RES_K(820))
203 	RES(R27, RES_K(47))
204 	RES(R28, RES_K(22))
205 	RES(R29, RES_K(10))
206 	RES(R30, RES_K(82))
207 	RES(R31, RES_K(10))
208 	RES(R32, RES_K(22))
209 	RES(R33, RES_K(39))
210 	RES(R34, RES_K(4.7))
211 	RES(R35, RES_K(4.7))
212 	RES(R36, RES_K(100) * FRND6)   // part of SONAR circuit that relies on subtle part differences
213 	RES(R37, RES_K(1.5) * FRND7)   // part of SONAR circuit that relies on subtle part differences
214 	RES(R38, RES_K(330) * FRND8)   // part of SONAR circuit that relies on subtle part differences
215 	RES(R39, RES_K(10)  * FRND9)   // part of SONAR circuit that relies on subtle part differences
216 	RES(R40, RES_K(68)  * FRND10)  // part of SONAR circuit that relies on subtle part differences
217 	RES(R41, RES_K(10))
218 	RES(R42, RES_K(100))
219 	RES(R43, RES_K(470))
220 	RES(R44, RES_M(1))
221 	RES(R45, RES_K(100))
222 	RES(R46, RES_K(470))
223 	RES(R47, RES_K(10))
224 	RES(R48, RES_K(82))
225 	RES(R49, RES_K(39))
226 	RES(R50, RES_K(22))
227 	RES(R51, RES_K(10))
228 	RES(R52, RES_K(68))
229 	RES(R53, RES_K(10))
230 	RES(R54, RES_K(22))
231 	RES(R55, RES_M(2.2))
232 	RES(R56, RES_K(33))
233 	RES(R57, RES_K(33))
234 	RES(R58, RES_K(820))
235 	RES(R59, RES_K(100))
236 	RES(R60, RES_K(10))
237 	RES(R61, RES_K(100))
238 	RES(R62, RES_K(100) * FRND11)   // part of SONAR circuit that relies on subtle part differences
239 	RES(R63, RES_K(1.5) * FRND12)   // part of SONAR circuit that relies on subtle part differences
240 	RES(R64, RES_K(330) * FRND13)   // part of SONAR circuit that relies on subtle part differences
241 	RES(R65, RES_K(10)  * FRND14)   // part of SONAR circuit that relies on subtle part differences
242 	RES(R66, RES_K(68)  * FRND15)   // part of SONAR circuit that relies on subtle part differences
243 	RES(R67, RES_K(10))
244 	RES(R68, RES_K(82))
245 	RES(R69, RES_K(470))
246 	RES(R70, RES_K(100))
247 	RES(R71, RES_K(10))
248 	RES(R72, RES_K(10))
249 	RES(R73, RES_K(100))
250 	RES(R74, RES_K(4.7))
251 	RES(R75, RES_K(100))
252 	RES(R76, RES_K(22))
253 	RES(R77, RES_K(330))
254 	RES(R78, RES_K(1))
255 	RES(R79, RES_K(150))
256 	RES(R80, RES_M(1))
257 	RES(R81, RES_K(10))
258 	RES(R82, RES_K(100))
259 	RES(R83, RES_K(1))
260 	RES(R84, RES_K(5.6))
261 	RES(R85, RES_K(150))
262 	RES(R86, RES_K(10))
263 	RES(R87, RES_K(10))
264 	RES(R88, RES_K(100))
265 	RES(R89, RES_K(10))
266 	RES(R90, RES_K(100))
267 	RES(R91, RES_K(100) * FRND16)  // part of SONAR circuit that relies on subtle part differences
268 	RES(R92, RES_K(1.5) * FRND17)   // part of SONAR circuit that relies on subtle part differences
269 	RES(R93, RES_K(330) * FRND18)  // part of SONAR circuit that relies on subtle part differences
270 	RES(R94, RES_K(10)  * FRND19)   // part of SONAR circuit that relies on subtle part differences
271 	RES(R95, RES_K(68)  * FRND20)   // part of SONAR circuit that relies on subtle part differences
272 	RES(R96, RES_K(10))
273 	RES(R97, RES_K(4.7))
274 	RES(R98, RES_M(1))
275 	RES(R99, RES_M(1))
276 	RES(R100, RES_M(1))
277 	RES(R101, RES_M(1))
278 	RES(R102, RES_K(470))
279 	RES(R103, RES_M(1))
280 	RES(R104, RES_K(10))
281 	RES(R105, RES_K(10))
282 	RES(R106, RES_M(2.7))
283 	RES(R107, RES_K(100))
284 	RES(R108, RES_K(100))
285 	RES(R109, RES_K(10))
286 	RES(R110, RES_K(10))
287 	RES(R111, RES_K(10))
288 	RES(R112, RES_K(10))
289 	RES(R113, RES_K(10))
290 	RES(R114, 100)
291 //  RES(R115, RES_K(100))   -- part of final amp (not emulated)
292 //  RES(R116, RES_K(470))   -- part of final amp (not emulated)
293 	RES(R117, RES_K(1))
294 	RES(R118, RES_K(470))
295 	RES(R119, RES_K(470))
296 	RES(R120, RES_K(220))
297 	RES(R121, RES_K(10))
298 	RES(R122, RES_K(4.7))
299 //  RES(R123, RES_K(1))     -- part of final amp (not emulated)
300 //  RES(R124, RES_K(100))   -- part of final amp (not emulated)
301 	RES(R125, RES_K(82))
302 	RES(R126, RES_K(39))
303 	RES(R127, RES_K(10))
304 	RES(R128, RES_K(22))
305 	RES(R129, RES_K(10))
306 	RES(R130, RES_K(22))
307 	RES(R131, RES_K(39))
308 	RES(R132, RES_K(82))
309 	RES(R133, RES_K(100))
310 	RES(R134, RES_M(2.7))
311 //  RES(R135, RES_K(22))    -- part of final amp (not emulated)
312 	RES(R136, RES_K(1))
313 	RES(R137, RES_K(4.7))
314 	RES(R138, RES_M(2.2))
315 	RES(R139, RES_K(4.7))
316 	RES(R140, RES_K(4.7))
317 //  RES(R141, RES_K(22))
318 //  RES(R142, RES_M(1))     -- part of final amp (not emulated)
319 //  RES(R143, RES_K(22))    -- part of final amp (not emulated)
320 //  RES(R144, RES_K(22))    -- part of final amp (not emulated)
321 	RES(R145, RES_K(4.7))
322 	RES(R146, RES_K(100))
323 	RES(R147, RES_M(2.2))
324 	RES(R148, RES_K(100))
325 	RES(R149, RES_K(100))
326 	RES(R150, RES_K(33))
327 	RES(R151, RES_M(1))
328 	RES(R152, RES_K(22))
329 	RES(R153, RES_K(47))
330 	RES(R154, RES_K(24))
331 	RES(R155, RES_K(56))
332 	RES(R156, RES_K(39))
333 	RES(R157, RES_K(27))
334 	RES(R158, RES_K(33))
335 	RES(R159, RES_K(62))
336 	RES(R160, RES_K(82))
337 	RES(R161, RES_K(120))
338 	RES(R162, RES_K(4.7))
339 	RES(R163, RES_K(10))
340 	RES(R164, RES_K(10))
341 	RES(R165, RES_M(1))
342 	RES(R166, RES_M(1))
343 	RES(R167, RES_K(1))
344 	RES(R168, RES_M(1))
345 	RES(R169, RES_K(100))
346 	RES(R170, RES_M(2.2))
347 	RES(R171, RES_K(100))
348 	RES(R172, RES_K(33))
349 	RES(R173, RES_K(47))
350 	RES(R174, RES_K(47))
351 	RES(R175, RES_K(47))
352 	RES(R176, RES_K(47))
353 	RES(R177, RES_K(47))
354 	RES(R178, RES_K(22))
355 	RES(R179, RES_K(47))
356 	RES(R180, RES_K(47))
357 	RES(R181, RES_K(47))
358 	RES(R182, RES_K(10))
359 	RES(R183, RES_K(10))
360 	RES(R184, RES_K(4.7))
361 	RES(R185, RES_M(1))
362 	RES(R186, RES_K(1))
363 
364 	CAP(C1, CAP_U(0.01))
365 	CAP(C2, CAP_U(0.01))
366 	CAP(C3, CAP_U(0.1))
367 	CAP(C4, CAP_U(0.05))
368 	CAP(C5, CAP_U(0.1))
369 	CAP(C6, CAP_U(10))
370 	CAP(C7, CAP_U(0.1))
371 	CAP(C8, CAP_U(0.1))
372 	CAP(C9, CAP_U(0.1))
373 //  CAP(C10, CAP_U(0.05))
374 //  CAP(C11, CAP_U(0.05))
375 	CAP(C12, CAP_U(10))
376 //  CAP(C13, CAP_U(0.05))
377 //  CAP(C14, CAP_U(0.05))
378 	CAP(C15, CAP_U(10))
379 	CAP(C16, CAP_U(0.01))
380 	CAP(C17, CAP_U(0.01))
381 	CAP(C18, CAP_U(0.022))
382 	CAP(C19, CAP_U(0.05))
383 	CAP(C20, CAP_U(0.1))
384 	CAP(C21, CAP_U(0.33))
385 	CAP(C22, CAP_U(0.33))
386 	CAP(C23, CAP_U(0.01))
387 	CAP(C24, CAP_U(0.01))
388 	CAP(C25, CAP_U(0.01))
389 	CAP(C26, CAP_U(0.022))
390 	CAP(C27, CAP_U(10))
391 	CAP(C28, CAP_U(0.05))
392 //  CAP(C29, CAP_U(0.05))
393 //  CAP(C30, CAP_U(0.05))
394 	CAP(C31, CAP_U(0.0047))
395 	CAP(C32, CAP_U(0.05))
396 	CAP(C33, CAP_U(10))
397 	CAP(C34, CAP_U(10))
398 	CAP(C35, CAP_U(0.1))
399 	CAP(C36, CAP_U(0.0022))
400 	CAP(C37, CAP_U(0.1))
401 	CAP(C38, CAP_U(0.1))
402 	CAP(C39, CAP_U(0.1))
403 	CAP(C40, CAP_U(0.01))
404 	CAP(C41, CAP_U(0.01))
405 //  CAP(C42, CAP_U(0.001))
406 //  CAP(C43, CAP_U(10))
407 //  CAP(C44, CAP_U(0.001))
408 //  CAP(C45, CAP_U(0.001))
409 //  CAP(C46, CAP_U(10))
410 	CAP(C47, CAP_U(4.7))
411 //  CAP(C48, CAP_U(22))     -- part of final amp (not emulated)
412 	CAP(C49, CAP_U(0.05))
413 	CAP(C50, CAP_U(0.05))
414 	CAP(C51, CAP_U(0.05))
415 	CAP(C52, CAP_U(0.05))
416 	CAP(C53, CAP_U(0.1))
417 //  CAP(C54, CAP_U(0.05))
418 	CAP(C55, CAP_U(0.05))
419 	CAP(C56, CAP_U(10))
420 	CAP(C57, CAP_U(0.1))
421 //  CAP(C58, CAP_U(4.7))    -- part of final amp (not emulated)
422 	CAP(C59, CAP_U(0.33))
423 	CAP(C60, CAP_U(4.7))
424 	CAP(C61, CAP_U(4.7))
425 	CAP(C62, CAP_U(10))
426 	CAP(C63, CAP_U(0.1))
427 	CAP(C64, CAP_U(0.1))
428 	CAP(C65, CAP_U(0.01))
429 //  CAP(C66, CAP_U(0.05))
430 	CAP(C67, CAP_U(0.05))
431 	CAP(C68, CAP_U(0.0047))
432 	CAP(C69, CAP_U(4.7))
433 	CAP(C70, CAP_U(0.1))
434 	CAP(C71, CAP_U(0.022))
435 	CAP(C72, CAP_U(0.05))
436 //  CAP(C73, CAP_U(0.05))
437 	CAP(C74, CAP_U(0.05))
438 	CAP(C75, CAP_U(0.05))
439 	CAP(C76, CAP_U(0.022))
440 	CAP(C77, CAP_U(0.0047))
441 	CAP(C78, CAP_U(0.1))
442 //  CAP(C79, CAP_U(0.05))
443 	CAP(C80, CAP_U(4.7))
444 	CAP(C81, CAP_U(0.05))
445 	CAP(C82, CAP_U(0.1))
446 
447 	D_1N5231(D1)
448 	D_1N914(D2)
449 	D_1N5231(D3)
450 	D_1N5231(D4)
451 	D_1N5231(D5)
452 	D_1N5231(D6)
453 	D_1N914(D7)
454 	D_1N914(D8)
455 	D_1N914(D9)
456 	D_1N5231(D10)
457 	D_1N914(D11)
458 	D_1N914(D12)
459 //  D_1N914(D13)            -- part of final amp (not emulated)
460 	D_1N914(D14)
461 	D_1N914(D15)
462 	D_1N914(D16)
463 	D_1N914(D17)
464 	D_1N914(D18)
465 	D_1N914(D19)
466 	D_1N914(D20)
467 	D_1N914(D21)
468 	D_1N914(D22)
469 	D_1N914(D23)
470 	D_1N914(D24)
471 	D_1N914(D25)
472 	D_1N914(D26)
473 	D_1N914(D27)
474 	D_1N914(D28)
475 	D_1N914(D29)
476 	D_1N914(D30)
477 	D_1N914(D31)
478 
479 	Q_2N4403(Q1)
480 	Q_2N4403(Q2)
481 	Q_2N4403(Q3)
482 	//Q_2N4093(Q4)  // avoid singular matrix being created
483 	Q_2N4093(Q5)
484 	Q_2N4093(Q6)
485 	Q_2N4403(Q7)
486 	Q_2N4403(Q8)
487 	Q_2N4403(Q9)
488 	Q_2N4403(Q10)
489 
490 	TL084_DIP(U1)           // Op. Amp.
491 	NET_C(U1.4, I_V12)
492 	NET_C(U1.11, I_VM12)
493 
494 	TL084_DIP(U2)           // Op. Amp.
495 	NET_C(U2.4, I_V12)
496 	NET_C(U2.11, I_VM12)
497 
498 #if (ENABLE_SONAR_ALT)
499 	// Oscillators are of order 1kHz. No need to to have UGF in MHz range
500 	PARAM(U1.A.MODEL, "TL084(TYPE=3 UGF=10k)")
501 	PARAM(U1.B.MODEL, "TL084(TYPE=3 UGF=10k)")
502 	PARAM(U1.C.MODEL, "TL084(TYPE=3 UGF=10k)")
503 	PARAM(U1.D.MODEL, "TL084(TYPE=3 UGF=10k)")
504 	PARAM(U2.A.MODEL, "TL084(TYPE=3 UGF=10k)")
505 	PARAM(U2.B.MODEL, "TL084(TYPE=3 UGF=10k)")
506 	PARAM(U2.C.MODEL, "TL084(TYPE=3 UGF=10k)")
507 	PARAM(U2.D.MODEL, "TL084(TYPE=3 UGF=10k)")
508 #endif
509 
510 	CD4017_DIP(U3)          // Decade Counter/Divider
511 	NET_C(U3.8, GND)
512 	NET_C(U3.16, I_V12)
513 
514 	NE555_DIP(U4)           // Timer
515 
516 	NE555_DIP(U5)           // Timer
517 
518 	NE555_DIP(U6)           // Timer
519 
520 	TL084_DIP(U7)           // Op. Amp.
521 	NET_C(U7.4, I_V12)
522 	NET_C(U7.11, I_VM12)
523 
524 	MM5837_DIP(U8)          // Noise Generator
525 #if (UNDERCLOCK_NOISE_GEN)
526 	// officially runs at 48-112kHz, but little noticeable difference
527 	// in exchange for a big performance boost
528 	PARAM(U8.FREQ, 12000)
529 #endif
530 
531 	CD4011_DIP(U9)          // Quad 2-Input NAND Gates
532 	NET_C(U9.7, GND)
533 	NET_C(U9.14, I_V12)
534 
535 	CD4011_DIP(U10)         // Quad 2-Input NAND Gates
536 	NET_C(U10.7, GND)
537 	NET_C(U10.14, I_V12)
538 
539 	CD4011_DIP(U11)         // Quad 2-Input NAND Gates
540 	NET_C(U11.7, GND)
541 	NET_C(U11.14, I_V12)
542 
543 	CD4024_DIP(U12)         // 7-Stage Ripple Binary Counter
544 	NET_C(U12.7, GND)
545 	NET_C(U12.14, I_V12)
546 
547 	NE555_DIP(U13)          // Timer
548 
549 	CD4024_DIP(U14)         // 7-Stage Ripple Binary Counter
550 	NET_C(U14.7, GND)
551 	NET_C(U14.14, I_V12)
552 
553 	CD4017_DIP(U15)         // Decade Counter/Divider
554 	NET_C(U15.8, GND)
555 	NET_C(U15.16, I_V12)
556 
557 	TL084_DIP(U16)          // Op. Amp.
558 	NET_C(U16.4, I_V12)
559 	NET_C(U16.11, I_VM12)
560 
561 	NE555_DIP(U17)          // Timer
562 
563 	NE555_DIP(U18)          // Timer
564 
565 	CD4024_DIP(U19)         // 7-Stage Ripple Binary Counter
566 	NET_C(U19.7, GND)
567 	NET_C(U19.14, I_V12)
568 
569 	NE555_DIP(U20)          // Timer
570 
571 	CD4011_DIP(U21)         // Quad 2-Input NAND Gates
572 	NET_C(U21.7, GND)
573 	NET_C(U21.14, I_V12)
574 
575 	TL084_DIP(U22)          // Op. Amp.
576 	NET_C(U22.4, I_V12)
577 	NET_C(U22.11, I_VM12)
578 
579 	NE555_DIP(U23)          // Timer
580 
581 	NE555_DIP(U24)          // Timer
582 
583 	CD4011_DIP(U25)         // Quad 2-Input NAND Gates
584 	NET_C(U25.7, GND)
585 	NET_C(U25.14, I_V12)
586 
587 	TTL_7407_DIP(U26)       // Hex Buffers with High Votage Open-Collector Outputs
588 	NET_C(U26.7, GND)
589 	NET_C(U26.14, I_V5)
590 
591 	CD4011_DIP(U27)         // Quad 2-Input NAND Gates
592 	NET_C(U27.7, GND)
593 	NET_C(U27.14, I_V12)
594 
595 	CD4024_DIP(U28)         // 7-Stage Ripple Binary Counter
596 	NET_C(U28.7, GND)
597 	NET_C(U28.14, I_V12)
598 
599 	TTL_7407_DIP(U29)       // Hex Buffers with High Votage Open-Collector Outputs
600 	NET_C(U29.7, GND)
601 	NET_C(U29.14, I_V5)
602 
603 	TTL_7406_DIP(U30)       // Hex inverter -- currently using a clone of 7416, no open collector behavior
604 	NET_C(U30.7, GND)
605 	NET_C(U30.14, I_V5)
606 
607 	TTL_7406_DIP(U31)       // Hex inverter -- currently using a clone of 7416, no open collector behavior
608 	NET_C(U31.7, GND)
609 	NET_C(U31.14, I_V5)
610 
611 //  TTL_74LS374_DIP(U32)    // Octal D-Type Transparent Latches And Edge-Triggered Flip-Flop
612 //  NET_C(U32.10, GND)
613 //  NET_C(U32.20, I_V5)
614 
615 //  TTL_74LS374_DIP(U33)    // Octal D-Type Transparent Latches And Edge-Triggered Flip-Flop
616 //  NET_C(U33.10, GND)
617 //  NET_C(U33.20, I_V5)
618 
619 //  TTL_74LS00_DIP(U34)     // Quad 4-Input NAND Gate
620 //  NET_C(U34.7, GND)
621 //  NET_C(U34.14, I_V5)
622 
623 //  TTL_74LS30_DIP(U35)     // 8-Input NAND Gate
624 //  NET_C(U35.7, GND)
625 //  NET_C(U35.14, I_V5)
626 
627 //  TTL_74LS04_DIP(U36)     // Hex Inverting Gates
628 //  NET_C(U36.7, GND)
629 //  NET_C(U36.14, I_V5)
630 
631 	NE555_DIP(U37)          // Timer
632 
633 	NE555_DIP(U38)          // Timer
634 
635 	//
636 	// Sheet 7, top-left (SONAR)
637 	//
638 
639 	NET_C(U1.3, GND)
640 	NET_C(U1.2, D1.A, R4.1)
641 	NET_C(U1.1, D1.K, R1.1)
642 	NET_C(R1.2, R2.2, C1.1, C2.1)
643 	NET_C(R2.1, GND)
644 	NET_C(R4.2, R3.2, U1.7, C2.2, R5.2)
645 	NET_C(C1.2, R3.1, U1.6)
646 	NET_C(U1.5, GND)
647 
648 #if (SIMPLIFY_SONAR)
649 	// sonar has 4 identical circuits; reduce the net size
650 	// by only emulating one and multiplying it by 4
651 	NET_C(U1.9, U1.10, U1.12, U1.13, GND)
652 	NET_C(R36.1, R36.2, R37.1, R37.2, R38.1, R38.2, R39.1, R39.2, R40.1, R40.2, GND)
653 	NET_C(C16.1, C16.2, C17.1, C17.2, GND)
654 	NET_C(D4.A, D4.K, GND)
655 
656 	NET_C(U2.2, U2.3, U2.5, U2.6, GND)
657 	NET_C(R62.1, R62.2, R63.1, R63.2, R64.1, R64.2, R65.1, R65.2, R66.1, R66.2, GND)
658 	NET_C(C24.1, C24.2, C25.1, C25.2, GND)
659 	NET_C(D6.A, D6.K, GND)
660 
661 	NET_C(U2.9, U2.10, U2.12, U2.13, GND)
662 	NET_C(R91.1, R91.2, R92.1, R92.2, R93.1, R93.2, R94.1, R94.2, R95.1, R95.2, GND)
663 	NET_C(C40.1, C40.2, C41.1, C41.2, GND)
664 	NET_C(D10.A, D10.K, GND)
665 
666 	NET_C(R5.1, R114.1, Q3.B)
667 #else
668 	NET_C(U1.12, GND)
669 	NET_C(U1.13, D4.A, R39.1)
670 	NET_C(U1.14, D4.K, R36.1)
671 	NET_C(R36.2, R37.2, C16.1, C17.1)
672 	NET_C(R37.1, GND)
673 	NET_C(R39.2, R38.2, U1.8, C17.2, R40.2)
674 	NET_C(C16.2, R38.1, U1.9)
675 	NET_C(U1.10, GND)
676 
677 	NET_C(U2.3, GND)
678 	NET_C(U2.2, D6.A, R65.1)
679 	NET_C(U2.1, D6.K, R62.1)
680 	NET_C(R62.2, R63.2, C24.1, C25.1)
681 	NET_C(R63.1, GND)
682 	NET_C(R65.2, R64.2, U2.7, C25.2, R66.2)
683 	NET_C(C24.2, R64.1, U2.6)
684 	NET_C(U2.5, GND)
685 
686 	NET_C(U2.12, GND)
687 	NET_C(U2.13, D10.A, R94.1)
688 	NET_C(U2.14, D10.K, R91.1)
689 	NET_C(R91.2, R92.2, C40.1, C41.1)
690 	NET_C(R92.1, GND)
691 	NET_C(R94.2, R93.2, U2.8, C41.2, R95.2)
692 	NET_C(C40.2, R93.1, U2.9)
693 	NET_C(U2.10, GND)
694 
695 	NET_C(R5.1, R40.1, R114.1, Q3.B, R95.1, R66.1)
696 
697 #if (ENABLE_SONAR_ALT)
698 	// The oscillators need a small offset voltage to start oscillating.
699 	// Without frontiers I assume the offset voltage is created due to the
700 	// slight differences in resistor values in the four (now connected)
701 	// oscillators.
702 
703 	ANALOG_INPUT(I_VOFF, 0.1)
704 	RES(RDUM1, RES_M(1))
705 	RES(RDUM2, RES_M(1))
706 	RES(RDUM3, RES_M(1))
707 	RES(RDUM4, RES_M(1))
708 	NET_C(R5.2, RDUM1.1)
709 	NET_C(R40.2, RDUM2.1)
710 	NET_C(R95.2, RDUM3.1)
711 	NET_C(R66.2, RDUM4.1)
712 	NET_C(I_VOFF, RDUM1.2, RDUM2.2, RDUM3.2, RDUM4.2)
713 
714 	OPTIMIZE_FRONTIER(R5.2, RES_K(68), 192)
715 	OPTIMIZE_FRONTIER(R40.2, RES_K(68), 192)
716 	OPTIMIZE_FRONTIER(R95.2, RES_K(68), 192)
717 	OPTIMIZE_FRONTIER(R66.2, RES_K(68), 192)
718 #endif
719 #endif
720 
721 	NET_C(R114.2, GND)
722 	NET_C(Q3.E, Q2.E, Q1.C)
723 	NET_C(Q1.B, R108.2, C47.2, R117.2)
724 	NET_C(C47.1, R108.1, I_V12)
725 	NET_C(I_V12, R109.1)
726 	NET_C(R109.2, Q1.E)
727 	NET_C(R117.1, D2.A)
728 	NET_C(D2.K, U11.4, C4.2)
729 	NET_C(C4.1, U11.2, R20.1)
730 #if (ADD_CLIPPING_DIODES)
731 	// fast retriggering relies on clipping diodes which
732 	// aren't implemented by default for speed
733 	D_1N914(D_SONAR)
734 	NET_C(D_SONAR.A, U11.2)
735 	NET_C(D_SONAR.K, I_V12)
736 #endif
737 	NET_C(U11.5, U11.6, U11.3)
738 	NET_C(U11.1, R21.1)
739 	NET_C(I_SONAR, R21.1)
740 	NET_C(R21.2, R20.2, I_V12)
741 
742 	NET_C(Q2.B, GND)
743 	NET_C(Q2.C, R110.2, R111.2, U7.3)
744 	NET_C(R110.1, GND)
745 	NET_C(R111.1, R112.1, I_VM12)
746 	NET_C(Q3.C, U7.2, R112.2, R113.1)
747 	NET_C(R113.2, U7.1)
748 	ALIAS(SONAR, U7.1)
749 
750 	//
751 	// Sheet 7, middle-left (LASER-1)
752 	//
753 
754 	NET_C(I_LASER_1, R146.1, U25.9)
755 	NET_C(U25.8, C64.2, R138.1)
756 #if (ADD_CLIPPING_DIODES)
757 	// fast retriggering relies on clipping diodes which
758 	// aren't implemented by default for speed
759 	D_1N914(D_LASER_1)
760 	NET_C(D_LASER_1.A, U25.8)
761 	NET_C(D_LASER_1.K, I_V12)
762 #endif
763 	NET_C(R146.2, R138.2, R134.2, R139.2, U24.8, C56.1, I_V12)
764 	NET_C(U25.10, U25.5, U25.6, D11.K, U24.4)
765 	NET_C(C64.1, U25.4, U19.2)
766 	NET_C(D11.A, R107.1, C57.2)
767 	NET_C(C57.1, Q10.C, C65.1, U24.1, GND)
768 	NET_C(R107.2, Q10.B, R134.1)
769 	NET_C(Q10.E, U24.5)
770 #if (HLE_LASER_1_VCO)
771 	//
772 	//    R2 = 0.98461: HP = (0.00000524285*A0) + 0.00000563193
773 	//    R2 = 0.99441: HP = (0.000000368659*A0*A0) + (0.00000116694*A0) + 0.0000155514
774 	//    R2 = 0.99797: HP = (0.000000154808*A0*A0*A0) - (0.00000213809*A0*A0) + (0.0000138122*A0) - 0.00000398935
775 	//    R2 = 0.99877: HP = (-0.0000000527853*A0*A0*A0*A0) + (0.00000128033*A0*A0*A0) - (0.0000107258*A0*A0) + (0.0000413916*A0) - 0.0000352437
776 	//    R2 = 0.99943: HP = (0.0000000343262*A0*A0*A0*A0*A0) - (0.00000096054*A0*A0*A0*A0) + (0.0000105481*A0*A0*A0) - (0.0000561978*A0*A0) + (0.000148191*A0) - 0.000131018
777 	//
778 	VARCLOCK(LASER1CLK, 1, "max(0.000001,min(0.1,(0.0000000343262*A0*A0*A0*A0*A0) - (0.00000096054*A0*A0*A0*A0) + (0.0000105481*A0*A0*A0) - (0.0000561978*A0*A0) + (0.000148191*A0) - 0.000131018))")
779 	NET_C(LASER1CLK.GND, GND)
780 	NET_C(LASER1CLK.VCC, I_V12)
781 	NET_C(LASER1CLK.A0, Q10.E)
782 	NET_C(LASER1CLK.Q, LASER1ENV.A1)
783 	AFUNC(LASER1ENV, 2, "if(A0>6,A1,0)")
784 	NET_C(LASER1ENV.A0, U25.10)
785 	NET_C(LASER1ENV.Q, U19.1)
786 	NET_C(U24.3, GND)
787 	NET_C(U24.2, U24.6, R140.1, C65.2, GND)
788 #else
789 	NET_C(U24.3, U19.1)
790 	NET_C(U24.2, U24.6, R140.1, C65.2)
791 #endif
792 	NET_C(R140.2, U24.7, R139.1)
793 	NET_C(C56.2, GND)
794 	NET_C(U19.12, R132.1)
795 	NET_C(U19.11, R131.1)
796 	NET_C(U19.9, R130.1)
797 	NET_C(U19.6, R105.1)
798 	NET_C(U19.4, R104.1)
799 	NET_C(R104.2, R105.2, R130.2, R131.2, R132.2, C52.1)
800 	ALIAS(LASER_1, C52.2)
801 
802 	//
803 	// Sheet 7, bottom-left (LASER-2)
804 	//
805 
806 	NET_C(I_LASER_2, R149.1, U25.12)
807 	NET_C(U25.13, C63.2, R147.1)
808 #if (ADD_CLIPPING_DIODES)
809 	// fast retriggering relies on clipping diodes which
810 	// aren't implemented by default for speed
811 	D_1N914(D_LASER_2)
812 	NET_C(D_LASER_2.A, U25.13)
813 	NET_C(D_LASER_2.K, I_V12)
814 #endif
815 	NET_C(R149.2, R147.2, R106.2, R145.2, U20.8, C62.1, I_V12)
816 	NET_C(U25.11, U25.1, U25.2, D12.K, U20.4)
817 	NET_C(C63.1, U25.3, U14.2)
818 	NET_C(D12.A, R133.1, C53.2)
819 	NET_C(C53.1, Q9.C, C68.1, U20.1, GND)
820 	NET_C(R133.2, Q9.B, R106.1)
821 	NET_C(Q9.E, U20.5)
822 #if (HLE_LASER_2_VCO)
823 	//
824 	//    R2 = 0.98942: HP = (0.00000251528*A0) + 0.00000244265
825 	//    R2 = 0.99596: HP = (0.000000160852*A0*A0) + (0.000000694298*A0) + 0.00000690896
826 	//    R2 = 0.99821: HP = (0.000000068284*A0*A0*A0) - (0.000000949931*A0*A0) + (0.00000630369*A0) - 0.00000175548
827 	//    R2 = 0.99896: HP = (-0.0000000291178*A0*A0*A0*A0) + (0.000000689145*A0*A0*A0) - (0.00000568073*A0*A0) + (0.0000214603*A0) - 0.0000188875
828 	//    R2 = 0.99937: HP = (0.0000000153499*A0*A0*A0*A0*A0) - (0.000000433800*A0*A0*A0*A0) + (0.00000480504*A0*A0*A0) - (0.0000257871*A0*A0) + (0.000068467*A0) - 0.0000608574
829 	//
830 	VARCLOCK(LASER2CLK, 1, "max(0.000001,min(0.1,(0.0000000153499*A0*A0*A0*A0*A0) - (0.000000433800*A0*A0*A0*A0) + (0.00000480504*A0*A0*A0) - (0.0000257871*A0*A0) + (0.000068467*A0) - 0.0000608574))")
831 	NET_C(LASER2CLK.GND, GND)
832 	NET_C(LASER2CLK.VCC, I_V12)
833 	NET_C(LASER2CLK.A0, Q9.E)
834 	NET_C(LASER2CLK.Q, LASER2ENV.A1)
835 	AFUNC(LASER2ENV, 2, "if(A0>6,A1,0)")
836 	NET_C(LASER2ENV.A0, U25.11)
837 	NET_C(LASER2ENV.Q, U14.1)
838 	NET_C(U20.3, GND)
839 	NET_C(U20.2, U20.6, R137.1, C68.2, GND)
840 #else
841 	NET_C(U20.3, U14.1)
842 	NET_C(U20.2, U20.6, R137.1, C68.2)
843 #endif
844 	NET_C(R137.2, U20.7, R145.1)
845 	NET_C(C62.2, GND)
846 	NET_C(U14.12, R125.1)
847 	NET_C(U14.11, R126.1)
848 	NET_C(U14.9, R128.1)
849 	NET_C(U14.6, R129.1)
850 	NET_C(U14.4, R127.1)
851 	NET_C(R127.2, R129.2, R128.2, R126.2, R125.2, C51.1)
852 	ALIAS(LASER_2, C51.2)
853 
854 	//
855 	// Sheet 7, middle-top (REFILL)
856 	//
857 
858 	NET_C(I_REFILL, U3.15, R59.1)
859 	NET_C(R59.2, I_V12, R17.2)
860 
861 	// CD4011 oscillator: R18=2.7M, C3=0.1u, freq=2.664
862 	CLOCK(OSC1, 2.664)
863 	NET_C(OSC1.GND, GND)
864 	NET_C(OSC1.VCC, I_V12)
865 	NET_C(OSC1.Q, U3.14)
866 	NET_C(R18.1, R18.2, C3.1, C3.2, U9.1, U9.2, U9.5, U9.6, GND)
867 
868 	NET_C(U3.3, R8.1)
869 	NET_C(U3.2, R7.1)
870 	NET_C(U3.4, R9.1)
871 	NET_C(U3.7, R12.1)
872 	NET_C(U3.10, R14.1)
873 	NET_C(U3.1, R6.1)
874 	NET_C(U3.5, R10.1)
875 	NET_C(U3.6, R11.1)
876 	NET_C(U3.9, R15.1)
877 	NET_C(U3.11, R13.1)
878 	NET_C(U3.13, GND)
879 	NET_C(R17.1, R8.2, R7.2, R9.2, R12.2, R14.2, R6.2, R10.2, R11.2, R15.2, R13.2, R16.2)
880 	NET_C(R16.1, Q7.B)
881 
882 	// CD4011 oscillator: R46=470k, C20=0.1u, freq=15.307
883 	CLOCK(OSC2, 15.307)
884 	NET_C(OSC2.GND, GND)
885 	NET_C(OSC2.VCC, I_V12)
886 	NET_C(OSC2.Q, U4.4, U9.12, U9.13)
887 	NET_C(U9.11, U5.4)
888 	NET_C(R46.1, R46.2, C20.1, C20.2, U9.8, U9.9, GND)
889 
890 	NET_C(U5.7, R67.1, R68.2)
891 	NET_C(R68.1, U5.2, U5.6, C26.2)
892 	NET_C(C26.1, GND, U5.1, C18.1, U4.1, Q7.C)
893 	NET_C(U5.5, U4.5, Q7.E)
894 	NET_C(R67.2, U5.8, R41.2, U4.8, I_V12)
895 	NET_C(R41.1, R42.2, U4.7)
896 	NET_C(R42.1, U4.2, U4.6, C18.2)
897 	NET_C(U5.3, R69.2)
898 	NET_C(U4.3, R43.2)
899 	NET_C(R43.1, C49.1, R69.1, I_REFILL_Q)
900 	ALIAS(REFILL, C49.2)
901 
902 	//
903 	// Sheet 7, middle-bottom (ATTACK, RATE RESET)
904 	//
905 
906 	NET_C(I_RATE_RESET, U15.15, R96.1)
907 	NET_C(R96.2, I_V12)
908 	NET_C(I_ATTACK_RATE, R148.1, U21.5)
909 	NET_C(R148.2, R166.2, I_V12)
910 	NET_C(U21.6, R166.1, C67.2)
911 #if (ADD_CLIPPING_DIODES)
912 	// fast retriggering relies on clipping diodes which
913 	// aren't implemented by default for speed
914 	D_1N914(D_ATTACK_RATE)
915 	NET_C(D_ATTACK_RATE.A, U21.6)
916 	NET_C(D_ATTACK_RATE.K, I_V12)
917 #endif
918 	NET_C(C67.1, U21.3)
919 	NET_C(U21.4, U21.1, U21.2, U15.14)
920 
921 	NET_C(U15.3, D23.A)
922 	NET_C(D23.K, R161.1)
923 	NET_C(U15.2, D22.A)
924 	NET_C(D22.K, R160.1)
925 	NET_C(U15.4, D21.A)
926 	NET_C(D21.K, R159.1)
927 	NET_C(U15.7, D17.A)
928 	NET_C(D17.K, R155.1)
929 	NET_C(U15.10, D15.A)
930 	NET_C(D15.K, R153.1)
931 	NET_C(U15.1, D18.A)
932 	NET_C(D18.K, R156.1)
933 	NET_C(U15.5, D20.A)
934 	NET_C(D20.K, R158.1)
935 	NET_C(U15.6, D19.A)
936 	NET_C(D19.K, R157.1)
937 	NET_C(U15.9, D16.A)
938 	NET_C(D16.K, R154.1)
939 	NET_C(U15.11, D14.A)
940 	NET_C(D14.K, R152.1)
941 	NET_C(U15.13, GND)
942 	NET_C(R161.2, R160.2, R159.2, R155.2, R153.2, R156.2, R158.2, R157.2, R154.2, R152.2, R178.2, U16.6)
943 
944 	NET_C(I_WARP, R164.1)
945 	NET_C(R164.2, R162.1, R163.2, U16.5)
946 	NET_C(R162.2, I_V12)
947 	NET_C(R163.1, GND)
948 	NET_C(U16.7, R178.1)
949 	ALIAS(V, U16.7)
950 
951 	//
952 	// Sheet 7, top-right (EXPLOSIONS)
953 	//
954 
955 	NET_C(I_SHORT_EXPL, R169.1, U27.2)
956 	NET_C(R169.2, R185.2, I_V12)
957 	NET_C(U27.1, R185.1, C81.2)
958 #if (ADD_CLIPPING_DIODES)
959 	// fast retriggering relies on clipping diodes which
960 	// aren't implemented by default for speed
961 	D_1N914(D_SHORT_EXPL)
962 	NET_C(D_SHORT_EXPL.A, U27.1)
963 	NET_C(D_SHORT_EXPL.K, I_V12)
964 #endif
965 	NET_C(C81.1, U27.11)
966 	NET_C(U27.13, U27.12, U27.3)
967 	NET_C(U27.3, R184.1)
968 	NET_C(R184.2, D31.A)
969 	NET_C(D31.K, D30.A, R182.2, R183.2)
970 	NET_C(R182.1, GND)
971 	NET_C(D30.K, R180.1, R181.1, C80.1, D29.K)
972 	NET_C(C80.2, GND)
973 	NET_C(R180.2, U16.9, R179.1)
974 	NET_C(R179.2, U16.8, R177.1)
975 	NET_C(R181.2, U16.10, Q6.D, D26.K)  // D and S swapped on schematics???
976 	NET_C(Q6.G, C72.2, R151.2, Q5.G)
977 	NET_C(R151.1, GND)
978 	NET_C(C72.1, U8.3)
979 	NET_C(U8.4, I_V12)
980 	NET_C(U8.2, I_VM12)
981 	NET_C(U8.1, GND)
982 	NET_C(Q6.S, D26.A, GND)
983 	NET_C(D29.A, D24.K, C69.1)
984 	NET_C(C69.2, GND)
985 	NET_C(R183.1, R186.2, U27.4, U27.8, U27.9, D28.K)
986 	NET_C(R186.1, C75.1)
987 	NET_C(C75.2, U21.8, U21.9, R168.2)
988 	NET_C(R168.1, U21.11)
989 	NET_C(I_LONG_EXPL, R171.1, U27.6)
990 	NET_C(R171.2, R170.2, I_V12)
991 	NET_C(R170.1, U27.5, C82.2)
992 #if (ADD_CLIPPING_DIODES)
993 	// fast retriggering relies on clipping diodes which
994 	// aren't implemented by default for speed
995 	D_1N914(D_LONG_EXPL)
996 	NET_C(D_LONG_EXPL.A, U27.5)
997 	NET_C(D_LONG_EXPL.K, I_V12)
998 #endif
999 	NET_C(C82.1, U27.10)
1000 	NET_C(U21.12, U21.13, C74.1, R165.2)
1001 	NET_C(U21.10, C74.2, R167.1)
1002 	NET_C(R165.1, GND)
1003 	NET_C(R167.2, D24.A)
1004 	NET_C(R177.2, R176.1, C78.1)
1005 	NET_C(C78.2, U16.2, U16.1, C61.1)
1006 	NET_C(R176.2, U16.3, C77.2, C76.2)
1007 	ALIAS(EXPLOSIONS, C61.2)
1008 	NET_C(C77.1, GND)
1009 	NET_C(C76.1, D27.K, D28.A)
1010 	NET_C(D27.A, GND)
1011 
1012 	//
1013 	// Sheet 7, middle-right (ASTROIDS)
1014 	//
1015 
1016 	NET_C(I_ASTROIDS, R97.1, R174.1, R175.1)
1017 	NET_C(R97.2, I_V12)
1018 	NET_C(R174.2, U16.13, R173.1)
1019 	NET_C(R175.2, U16.12, Q5.D, D25.K)  // D and S swapped on schematics???
1020 	NET_C(D25.A, Q5.S, GND)
1021 	NET_C(R173.2, U16.14, R172.1)
1022 	NET_C(R172.2, R150.1, C70.1)
1023 	NET_C(C70.2, U7.9, U7.8, R136.1)
1024 	NET_C(R150.2, C71.2, U7.10)
1025 	NET_C(C71.1, GND)
1026 	NET_C(R136.2, C59.2, C60.1)
1027 	NET_C(C59.1, GND)
1028 	ALIAS(ASTROIDS, C60.2)
1029 
1030 	//
1031 	// Sheet 7, bottom-right (mixer)
1032 	//
1033 
1034 	ALIAS(INVADER_1, R98.1)
1035 	ALIAS(INVADER_2, R99.1)
1036 	ALIAS(INVADER_3, R100.1)
1037 	ALIAS(INVADER_4, R101.1)
1038 	NET_C(R98.2, R99.2, R100.2, R101.2, C55.1)
1039 	NET_C(ASTROIDS, R121.1)
1040 	NET_C(EXPLOSIONS, R122.1)
1041 	ALIAS(BONUS, R118.1)
1042 	NET_C(REFILL, R119.1)
1043 	NET_C(LASER_1, R102.1)
1044 	NET_C(LASER_2, R103.1)
1045 	NET_C(SONAR, R120.1)
1046 	NET_C(C55.2, R121.2, R122.2, R118.2, R119.2, R102.2, R103.2, R120.2)
1047 	AFUNC(MUTEFUNC, 2, "if(A0>2.5,0,A1)")
1048 	NET_C(MUTEFUNC.A0, I_MUTE)
1049 	NET_C(MUTEFUNC.A1, R121.2)
1050 	ALIAS(OUTPUT, MUTEFUNC.Q)
1051 //  ALIAS(OUTPUT, C55.2)
1052 
1053 	//
1054 	// Sheet 8, middle-top (INVADER_1)
1055 	//
1056 
1057 	NET_C(U22.10, GND)
1058 	NET_C(U22.9, D5.A, R29.1)
1059 	NET_C(R29.2, R55.2, U22.14, C21.2, R72.1)
1060 	NET_C(D5.K, U22.8, R58.1)
1061 	NET_C(R58.2, C22.1, R57.2, R56.2, C21.1)
1062 	NET_C(W, U30.5)
1063 	NET_C(U30.6, R57.1)
1064 	NET_C(R56.1, GND)
1065 	NET_C(U22.13, C22.2, R55.1)
1066 	NET_C(U22.12, GND)
1067 
1068 	NET_C(R85.1, U23.7, R86.2)
1069 	NET_C(R85.2, U23.8, R83.2, R84.2, R73.2, U18.8, I_V12)
1070 	NET_C(R86.1, U23.2, U23.6, C38.2)
1071 	NET_C(C38.1, U23.1, C37.1, C28.1, U18.1, GND)
1072 	NET_C(I_INVADER_1, U23.4, R73.1, U18.4)
1073 	NET_C(C28.2, U18.5)
1074 	NET_C(U23.3, U18.2)
1075 	NET_C(U23.5, R87.2)
1076 	NET_C(R87.1, V)
1077 	NET_C(R83.1, D9.A)
1078 	NET_C(D9.K, Q8.B, R72.2)
1079 	NET_C(Q8.E, R84.1)
1080 	NET_C(Q8.C, C37.2, U18.6, U18.7)
1081 	NET_C(U18.3, INVADER_1)
1082 
1083 	//
1084 	// Sheet 8, middle (INVADER_2)
1085 	//
1086 
1087 	NET_C(R81.2, R70.2, U13.8, C27.1, I_V12)
1088 	NET_C(C27.2, GND)
1089 	NET_C(R81.1, R82.2, U13.7)
1090 	NET_C(R82.1, U13.2, U13.6, C36.2)
1091 	NET_C(C36.1, U13.1, GND)
1092 	NET_C(U13.5, R71.2)
1093 	NET_C(R71.1, V)
1094 	NET_C(I_INVADER_2, U13.4, R70.1)
1095 	NET_C(U13.3, U12.1)
1096 	// CD4011 oscillator: R22=470k, C5=0.1u, freq=15.3Hz
1097 	CLOCK(OSC3, 15.3)
1098 	NET_C(OSC3.GND, GND)
1099 	NET_C(OSC3.VCC, I_V12)
1100 	NET_C(OSC3.Q, U12.2)
1101 	NET_C(R22.1, R22.2, C5.1, C5.2, U11.8, U11.9, U11.12, U11.13, GND)
1102 	NET_C(U12.12, R48.1)
1103 	NET_C(U12.11, R49.1)
1104 	NET_C(U12.9, R50.1)
1105 	NET_C(U12.6, R47.1)
1106 	NET_C(R47.2, R50.2, R49.2, R48.2)
1107 	NET_C(R48.2, INVADER_2)
1108 
1109 	//
1110 	// Sheet 8, middle-bottom (INVADER_4)
1111 	//
1112 
1113 	NET_C(R89.2, U37.4, U37.8, C15.1, R60.2, R88.2, U38.8, I_V12)
1114 	NET_C(R89.1, U37.7, R90.2)
1115 	NET_C(R90.1, U37.2, U37.6, C39.2)
1116 	NET_C(C39.1, U37.1, C23.1, U38.1, GND)
1117 	NET_C(U37.5, R35.1)
1118 	NET_C(R35.2, V, R34.1)
1119 	NET_C(C15.2, GND)
1120 	NET_C(U37.3, U28.1)
1121 	NET_C(U28.2, U28.5)
1122 	NET_C(U28.12, R31.1)
1123 	NET_C(U28.11, R32.1)
1124 	NET_C(U28.9, R33.1)
1125 	NET_C(U28.6, R30.1)
1126 	NET_C(R31.2, R32.2, R33.2, R30.2, R34.2, U38.5)
1127 	NET_C(U38.2, U38.6, C23.2, R61.1)
1128 	NET_C(R61.2, U38.7, R60.1)
1129 	NET_C(U38.4, R88.1, I_INVADER_4)
1130 	NET_C(INVADER_4, U38.3)
1131 
1132 	//
1133 	// Sheet 8, middle-bottom (BONUS)
1134 	//
1135 
1136 	NET_C(I_BONUS, R45.1, U10.6)
1137 	NET_C(C34.1, R77.2, I_V12)
1138 	NET_C(R45.2, R44.2, R74.2, U6.4, U6.8, C33.1, I_V12)
1139 
1140 	NET_C(R44.1, U10.5, C19.1)
1141 #if (ADD_CLIPPING_DIODES)
1142 	// fast retriggering relies on clipping diodes which
1143 	// aren't implemented by default for speed
1144 	D_1N914(D_BONUS)
1145 	NET_C(D_BONUS.A, U10.5)
1146 	NET_C(D_BONUS.K, I_V12)
1147 #endif
1148 	NET_C(U10.4, U10.1, U10.2)
1149 	NET_C(C19.2, U10.3, D7.K)
1150 	NET_C(D7.A, R78.1)
1151 	NET_C(R78.2, R77.1, C34.2, R76.1)
1152 	// CD4011 oscillator: R80=1M, C35=0.1, freq=7.19Hz
1153 	CLOCK(OSC4, 7.19)
1154 	NET_C(OSC4.GND, GND)
1155 	NET_C(OSC4.VCC, I_V12)
1156 	NET_C(OSC4.Q, R79.1)
1157 	NET_C(R80.1, R80.2, C35.1, C35.2, U10.8, U10.9, U10.12, U10.13, GND)
1158 	NET_C(R79.2, R74.1, R75.2, U6.7)
1159 	NET_C(R75.1, U6.2, U6.6, C31.2)
1160 	NET_C(C31.1, C32.1, U6.1, GND)
1161 	NET_C(C32.2, U6.5)
1162 	NET_C(R76.2, D8.K, C50.1)
1163 	NET_C(U6.3, D8.A)
1164 	NET_C(C33.2, GND)
1165 	NET_C(BONUS, C50.2)
1166 
1167 	//
1168 	// Sheet 8, top-right (INVADER_3)
1169 	//
1170 
1171 	NET_C(U22.5, GND)
1172 	NET_C(U22.6, D3.A, R25.1)
1173 	NET_C(R25.2, C12.2, R24.2, U22.1, C8.2)
1174 	NET_C(D3.K, U22.7, R26.1)
1175 	NET_C(W, U30.9)
1176 	NET_C(U30.8, R28.1)
1177 	NET_C(R28.2, R26.2, C9.1, R27.2, C8.1)
1178 	NET_C(R27.1, GND)
1179 	NET_C(C9.2, U22.2, R24.1)
1180 	NET_C(U22.3, GND)
1181 	NET_C(C12.1, R54.1)
1182 	NET_C(R54.2, R53.1, U17.5)
1183 	NET_C(R53.2, V)
1184 	NET_C(U17.1, C7.1, GND)
1185 	NET_C(C7.2, U17.2, U17.6, R52.1)
1186 	NET_C(R52.2, U17.7, R51.1)
1187 	NET_C(R51.2, R23.2, U17.8, C6.1, I_V12)
1188 	NET_C(R23.1, U17.4, I_INVADER_3)
1189 	NET_C(C6.2, GND)
1190 	NET_C(INVADER_3, U17.3)
1191 
1192 	//
1193 	// Unconnected inputs
1194 	//
1195 
1196 	NET_C(GND, U7.5, U7.6, U7.12, U7.13)
1197 	NET_C(GND, U26.13)
1198 	NET_C(GND, U29.1, U29.3, U29.13)
1199 	NET_C(GND, U30.1, U30.11)
1200 
1201 	//
1202 	// Unconnected outputs
1203 	//
1204 
1205 #if (ENABLE_FRONTIERS)
1206 #define RXX 192
1207 	OPTIMIZE_FRONTIER(INVADER_1, RES_M(1), RXX)
1208 	OPTIMIZE_FRONTIER(INVADER_2, RES_M(1), RXX)
1209 	OPTIMIZE_FRONTIER(INVADER_3, RES_M(1), RXX)
1210 	OPTIMIZE_FRONTIER(INVADER_4, RES_M(1), RXX)
1211 
1212 	OPTIMIZE_FRONTIER(C50.1, RES_M(10), RXX)
1213 	OPTIMIZE_FRONTIER(C60.1, RES_M(10), RXX)    // this is a big one
1214 	OPTIMIZE_FRONTIER(C61.1, RES_M(10), RXX)
1215 #endif
1216 
1217 NETLIST_END()
1218