1 // license:CC0
2 // copyright-holders:Aaron Giles
3 
4 //
5 // Netlist for Space Fury
6 //
7 // Derived from the schematics in the Space Fury manual.
8 //
9 // Known problems/issues:
10 //
11 //    * Works pretty well. All sounds trigger.
12 //
13 //    * Very challenging to get running at speed. We have to use
14 //       the "slow" CA3080 model for the star spin sound, which
15 //       creates a giant net that dominates time and is sensitive
16 //       to cheats to reduce timesteps, etc
17 //
18 
19 #include "netlist/devices/net_lib.h"
20 #include "nl_spacfury.h"
21 
22 
23 //
24 // Optimizations
25 //
26 
27 #define HLE_SHOOT_VCO (1)
28 #define SPLIT_SHARED_OSCILLATORS (1)
29 #define ENABLE_SPIN_VCO_FRONTIER (1)
30 #define ENABLE_NOISE_FRONTIERS (1)
31 #define ENABLE_FRONTIERS (1)
32 #define UNDERCLOCK_NOISE_GEN (1 && ENABLE_NOISE_FRONTIERS)
33 
34 
35 
36 
37 //
38 // Hacks
39 //
40 
41 #define ADD_CLIPPING_DIODES (1)
42 
43 
44 
45 //
46 // Local models
47 //
48 
49 #define D_1N914(name) DIODE(name, "1N914")
50 #define D_1N4002(name) DIODE(name, "1N4002")
51 
52 #define Q_2N4401(name) QBJT_EB(name, "2N4401")
53 
54 #define Q_2N4403(name) QBJT_EB(name, "2N4403")
55 
56 // JFET transistors not supported, but this should do the trick
57 //#define Q_2N4093(name) MOSFET(name, "NMOS(VTO=-1.0)")
58 #define Q_2N4093(name) MOSFET(name, "NMOS(VTO=-1 CAPMOD=0)")
59 
60 #define LM555_DIP NE555_DIP
61 #define LM566_DIP NE566_DIP
62 
63 #define TTL_74LS00_DIP TTL_7400_DIP
64 
65 
66 
67 //
68 // DIP mappings use the submodels below for CA3080
69 //
70 #define CA3080_FAST_DIP(name) SUBMODEL(_CA3080_FAST_DIP, name)
71 #define CA3080_SLOW_DIP(name) SUBMODEL(_CA3080_SLOW_DIP, name)
72 static NETLIST_START(_CA3080_FAST_DIP)
73 	ALIAS(2, F.A0) // -
74 	ALIAS(3, F.A1) // +
75 	ALIAS(4, F.A2) // V-
76 	ALIAS(5, RIABC.1) // IB
77 	ALIAS(6, VO.OP)  // FIXME
78 	ALIAS(7, F.A4) // V+
79 
80 	RES(RI, 26000)
81 	NET_C(RI.1, F.A0)
82 	NET_C(RI.2, F.A1)
83 	// Delivers I0
84 	AFUNC(F, 5, "max(-0.5e-3, min(0.5e-3, 19.2 * (A3 - A2) * A0))")
85 	RES(RIABC, 1)
86 	NET_C(RIABC.2, F.A2)
87 	NET_C(RIABC.1, F.A3) // IB
88 	VCCS(VO, 1)
89 	ANALOG_INPUT(XGND, 0)
90 	NET_C(XGND, VO.IN, VO.ON) // FIXME: assume symmetric supply
91 	NET_C(F.Q, VO.IP)
92 NETLIST_END()
93 
94 static NETLIST_START(_CA3080_SLOW_DIP)
95 //
96 // These items are common to several models
97 //
98 #define CA3080_D(name) DIODE(name, "D(IS=2p RS=5 BV=40 CJO=3p TT=6n)")
99 #define CA3080_NPN(name) QBJT_EB(name, "NPN(IS=21.48f XTI=3 EG=1.11 VAF=80 BF=550 ISE=50f NE=1.5 IKF=10m XTB=1.5 BR=.1 ISC=10f NC=2 IKR=3m RC=10 CJC=800f MJC=.3333 VJC=.75 FC=.5 CJE=1.3p MJE=.3333 VJE=.75 TR=30n TF=400P ITF=30m XTF=1 VTF=10 CJS=5.8P MJS=.3333 VJS=.75)")
100 #define CA3080_PNP(name) QBJT_EB(name, "PNP(IS=50f XTI=3 EG=1.11 VAF=80 BF=100 ISE=130f NE=1.5 IKF=1m XTB=1.5 BR=1 ISC=0 NC=2 IKR=0 RC=0 CJC=4p MJC=.3333 VJC=.75 FC=.5 CJE=1.4p MJE=.3333 VJE=.75 TR=500n TF=23n ITF=.1 XTF=1 VTF=10 CJS=5.5P MJS=.3333 VJS=.75)")
101 
102 	CA3080_D(D1)
103 	CA3080_D(D2)
104 	CA3080_NPN(Q1)
105 	CA3080_PNP(Q2)
106 	CA3080_PNP(Q3)
107 	CA3080_NPN(Q4)
108 	CA3080_NPN(Q5)
109 	CA3080_PNP(Q6)
110 	CA3080_PNP(Q7)
111 	CA3080_PNP(Q8)
112 	CA3080_PNP(Q9)
113 	CA3080_NPN(Q10)
114 	CA3080_NPN(Q11)
115 	CA3080_NPN(Q12)
116 	CA3080_NPN(Q13)
117 	CA3080_PNP(Q14)
118 	CA3080_PNP(Q15)
119 
120 	ALIAS(2, Q10.B)     // N1
121 	ALIAS(3, Q5.B)      // N28
122 	ALIAS(4, Q1.E)      // N13
123 	ALIAS(5, Q1.B)      // N11
124 	ALIAS(6, Q6.C)      // N30
125 	ALIAS(7, Q8.E)      // N8
126 	NET_C(Q8.E, Q9.E, Q14.E, Q15.E)     // N8
127 	NET_C(Q1.B, Q1.C, Q4.B)             // N11
128 	NET_C(Q1.E, Q4.E, Q11.E, Q12.E)     // N13
129 	NET_C(Q6.C, Q7.C, Q13.C)            // N30
130 	NET_C(Q3.B, Q10.C, Q14.C, D1.A)     // N1N13
131 	NET_C(Q2.E, Q14.B, Q15.C, Q15.B)    // N1N15
132 	NET_C(Q2.B, Q3.E, D1.K)             // N1N17
133 	NET_C(Q2.C, Q3.C, Q11.C, Q13.B)     // N1N22
134 	NET_C(Q5.C, Q6.B, Q9.C, D2.A)       // N1N32
135 	NET_C(Q6.E, Q7.B, D2.K)             // N1N34
136 	NET_C(Q7.E, Q8.C, Q8.B, Q9.B)       // N1N36
137 	NET_C(Q4.C, Q5.E, Q10.E)            // N1N52
138 	NET_C(Q11.B, Q12.C, Q12.B, Q13.E)   // N1N44
139 NETLIST_END()
140 
141 
142 
143 //
144 // Main netlist
145 //
146 
147 NETLIST_START(spacfury)
148 
149 	SOLVER(Solver, 1000)
150 	PARAM(Solver.DYNAMIC_TS, 1)
151 	PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 4e-5)
152 	// subtle but noticeable effect where the spin "whoosh" is missing
153 	// some upper harmonics at 4e-5; however, this is the most demanding
154 	// solver in the system and it keeps jumping around as I tweak things
155 //  PARAM(Solver.Solver_21.DYNAMIC_MIN_TIMESTEP, 2e-5)
156 
157 	// Overwrite model - the default model uses minimum datasheet
158 	// specifications for 5V. These are for 10V and thus closer to the
159 	// 12V used in this circuit.
160 	NET_MODEL("CD4XXX FAMILY(TYPE=CMOS IVL=0.3 IVH=0.7 OVL=0.05 OVH=0.05 ORL=384 ORH=384)")
161 
162 	LOCAL_SOURCE(_CA3080_FAST_DIP)
163 	LOCAL_SOURCE(_CA3080_SLOW_DIP)
164 
165 	TTL_INPUT(I_LO_D0, 0)
166 	ALIAS(I_CRAFTS_SCALE, I_LO_D0)
167 	TTL_INPUT(I_LO_D1, 0)
168 	ALIAS(I_MOVING, I_LO_D1)
169 	TTL_INPUT(I_LO_D2, 0)
170 	ALIAS(I_THRUST, I_LO_D2)
171 	TTL_INPUT(I_LO_D6, 0)
172 	ALIAS(I_STAR_SPIN, I_LO_D6)
173 	TTL_INPUT(I_LO_D7, 0)
174 	ALIAS(I_PARTIAL_WARSHIP, I_LO_D7)
175 
176 	NET_C(GND, I_LO_D0.GND, I_LO_D1.GND, I_LO_D2.GND, I_LO_D6.GND, I_LO_D7.GND)
177 	NET_C(I_V5, I_LO_D0.VCC, I_LO_D1.VCC, I_LO_D2.VCC, I_LO_D6.VCC, I_LO_D7.VCC)
178 
179 	TTL_INPUT(I_HI_D0, 0)
180 	ALIAS(I_CRAFTS_JOINING, I_HI_D0)
181 	TTL_INPUT(I_HI_D1, 0)
182 	ALIAS(I_SHOOT, I_HI_D1)
183 	TTL_INPUT(I_HI_D2, 0)
184 	ALIAS(I_FIREBALL, I_HI_D2)
185 	TTL_INPUT(I_HI_D3, 0)
186 	ALIAS(I_SMALL_EXPL, I_HI_D3)
187 	TTL_INPUT(I_HI_D4, 0)
188 	ALIAS(I_LARGE_EXPL, I_HI_D4)
189 	TTL_INPUT(I_HI_D5, 0)
190 	ALIAS(I_DOCKING_BANG, I_HI_D5)
191 
192 	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)
193 	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)
194 
195 	RES(R_PSG_1, 1000)
196 	RES(R_PSG_2, 1000)
197 	RES(R_PSG_3, 1000)
198 	NET_C(I_V5, R_PSG_1.1, R_PSG_2.1, R_PSG_3.1)
199 
200 	ANALOG_INPUT(I_V5, 5)
201 	ANALOG_INPUT(I_V12, 12)
202 	ANALOG_INPUT(I_VM12, -12)
203 
204 //  RES(R1, RES_K(2.2))     -- part of final amp (not emulated)
205 //  RES(R2, RES_K(10))      -- part of final amp (not emulated)
206 //  RES(R4, RES_K(330))     -- part of final amp (not emulated)
207 //  RES(R5, RES_M(1))       -- part of final amp (not emulated)
208 	RES(R6, RES_K(680))
209 	RES(R7, RES_K(680))
210 	RES(R8, RES_K(10))
211 	RES(R9, RES_K(100))
212 	RES(R10, 680)
213 	RES(R11, RES_K(47))
214 	RES(R12, RES_K(47))
215 	RES(R13, RES_K(47))
216 	RES(R14, RES_M(1))
217 //  RES(R15, RES_K(100))    -- part of final amp (not emulated)
218 	RES(R18, RES_K(10))
219 	RES(R19, RES_K(470))
220 	RES(R20, RES_K(22))
221 	RES(R21, RES_K(47))
222 	RES(R22, RES_K(3.9))
223 	RES(R23, RES_K(82))
224 	RES(R24, RES_K(4.7))
225 	RES(R25, RES_K(47))
226 	RES(R26, 100)
227 	RES(R27, RES_K(100))
228 	RES(R28, RES_K(100))
229 	RES(R29, RES_K(2.2))
230 	RES(R30, RES_K(4.7))
231 	RES(R31, RES_K(100))
232 	RES(R32, RES_K(100))
233 	RES(R33, RES_M(1))
234 	RES(R34, RES_K(10))
235 	RES(R35, RES_K(680))
236 	RES(R36, 680)
237 	RES(R37, RES_K(47))
238 	RES(R38, RES_K(47))
239 	RES(R39, RES_K(2.2))
240 	RES(R40, RES_K(47))
241 	RES(R41, RES_K(47))
242 	RES(R42, RES_K(100))
243 	RES(R43, RES_K(2.2))
244 	RES(R44, RES_K(100))
245 	RES(R45, RES_M(2.2))
246 	RES(R46, RES_K(100))
247 	RES(R47, RES_K(9.1))
248 	RES(R48, 100)
249 	RES(R49, RES_K(4.7))
250 	RES(R50, RES_K(47))
251 	RES(R51, RES_K(10))
252 	RES(R52, RES_K(47))
253 	RES(R53, RES_K(47))
254 	RES(R54, RES_K(100))
255 	RES(R55, RES_K(47))
256 	RES(R56, RES_K(100))
257 	RES(R57, RES_K(47))
258 	RES(R58, RES_K(100))
259 	RES(R59, RES_K(10))
260 	RES(R60, 100)
261 	RES(R61, RES_K(9.1))
262 	RES(R62, RES_K(100))
263 	RES(R63, RES_K(47))
264 	RES(R64, RES_K(10))
265 	RES(R65, RES_K(470))
266 	RES(R66, RES_K(10))
267 	RES(R67, 100)
268 	RES(R68, RES_K(10))
269 	RES(R69, RES_K(22))
270 	RES(R70, RES_K(220))
271 	RES(R71, RES_K(2.2))
272 	RES(R72, RES_K(22))
273 	RES(R73, RES_K(330))
274 	RES(R74, RES_K(330))
275 	RES(R75, RES_K(100))
276 	RES(R76, RES_K(10))
277 	RES(R77, RES_K(10))
278 	RES(R78, RES_K(22))
279 	RES(R79, RES_K(10))
280 	RES(R80, RES_K(100))
281 	RES(R81, RES_K(82))
282 	RES(R82, RES_K(39))
283 	RES(R83, RES_K(10))
284 	RES(R84, RES_K(22))
285 	RES(R85, RES_K(47))
286 	RES(R86, RES_K(47))
287 	RES(R87, RES_K(47))
288 	RES(R88, RES_K(100))
289 	RES(R89, RES_K(100))
290 	RES(R90, RES_K(10))
291 	RES(R91, RES_M(1))
292 	RES(R92, RES_K(470))
293 	RES(R93, RES_K(470))
294 	RES(R94, RES_K(220))
295 	RES(R95, RES_K(22))
296 	RES(R96, RES_K(100))
297 	RES(R97, RES_K(100))
298 	RES(R98, RES_K(10))
299 	RES(R99, RES_K(3.9))
300 	RES(R100, RES_K(47))
301 	RES(R101, RES_K(2.2))
302 	RES(R102, RES_M(1))
303 	RES(R103, RES_K(10))
304 	RES(R104, RES_K(10))
305 	RES(R105, RES_K(100))
306 	RES(R106, RES_K(10))
307 	RES(R107, RES_K(220))
308 	RES(R108, RES_K(220))
309 	RES(R109, RES_K(10))
310 	RES(R110, 100)
311 	RES(R111, RES_K(10))
312 	RES(R112, RES_K(470))
313 	RES(R113, RES_K(100))
314 	RES(R114, RES_K(100))
315 	RES(R115, RES_K(100))
316 	RES(R116, RES_K(100))
317 	RES(R117, RES_K(100))
318 	RES(R118, RES_K(100))
319 	RES(R119, RES_M(2.2))
320 	RES(R120, RES_K(100))
321 	RES(R121, RES_K(100))
322 	RES(R122, RES_M(2.2))
323 	RES(R123, RES_K(22))
324 	RES(R124, RES_M(3.9))
325 	RES(R125, RES_K(100))
326 	RES(R126, RES_K(100))
327 	RES(R127, RES_M(2.2))
328 	RES(R128, RES_K(22))
329 	RES(R129, RES_K(22))
330 	RES(R130, RES_K(22))
331 	RES(R131, RES_K(10))
332 	RES(R132, RES_K(2.2))
333 	RES(R133, RES_K(2.2))
334 	RES(R135, RES_K(10))
335 	RES(R136, RES_K(10))
336 	RES(R134, RES_K(10))
337 	RES(R137, RES_K(2.2))
338 	RES(R138, RES_K(150))
339 	RES(R139, RES_K(150))
340 	RES(R140, RES_K(2.2))
341 	RES(R141, RES_K(220))
342 	RES(R142, RES_K(100))
343 	RES(R143, RES_K(10))
344 	RES(R144, RES_K(220))
345 	RES(R146, RES_K(220))
346 	RES(R147, 680)
347 	RES(R148, RES_K(10))
348 	RES(R149, RES_K(220))
349 
350 //  CAP(C1, CAP_U(4.7))     -- part of final amp (not emulated)
351 //  CAP(C2, CAP_U(0.05))
352 //  CAP(C3, CAP_U(0.05))
353 //  CAP(C4, CAP_U(10))      -- part of final amp (not emulated)
354 	CAP(C5, CAP_U(0.01))
355 	CAP(C6, CAP_U(0.01))
356 	CAP(C7, CAP_U(4.7))
357 	CAP(C8, CAP_U(0.047))
358 //  CAP(C9, CAP_U(0.05))
359 //  CAP(C10, CAP_U(0.05))
360 	CAP(C11, CAP_U(0.01))
361 	CAP(C12, CAP_U(0.01))
362 	CAP(C13, CAP_U(0.01))
363 	CAP(C14, CAP_U(0.01))
364 	CAP(C15, CAP_U(0.01))
365 //  CAP(C16, CAP_U(0.05))
366 //  CAP(C17, CAP_U(0.05))
367 	CAP(C18, CAP_U(0.01))
368 	CAP(C19, CAP_U(0.047))
369 	CAP(C20, CAP_U(0.01))
370 	CAP(C21, CAP_U(4.7))
371 	CAP(C22, CAP_U(0.05))
372 	CAP(C23, CAP_U(0.05))
373 	CAP(C24, CAP_U(10))
374 //  CAP(C25, CAP_U(0.05))
375 	CAP(C26, CAP_U(0.0033))
376 //  CAP(C27, CAP_U(0.05))
377 	CAP(C28, CAP_U(0.1))
378 	CAP(C29, CAP_U(0.001))
379 	CAP(C30, CAP_U(0.0022))
380 	CAP(C31, CAP_U(0.022))
381 	CAP(C32, CAP_U(10))
382 	CAP(C33, CAP_U(0.1))
383 	CAP(C34, CAP_U(0.1))
384 	CAP(C35, CAP_U(0.0033))
385 	CAP(C36, CAP_U(4.7))
386 	CAP(C37, CAP_U(0.0022))
387 //  CAP(C38, CAP_U(0.05))
388 //  CAP(C39, CAP_U(0.05))
389 	CAP(C40, CAP_U(0.047))
390 	CAP(C41, CAP_U(0.0047))
391 	CAP(C42, CAP_U(0.01))
392 	CAP(C43, CAP_U(0.01))
393 	CAP(C44, CAP_U(4.7))
394 //  CAP(C45, CAP_U(0.05))
395 //  CAP(C46, CAP_U(0.05))
396 	CAP(C47, CAP_U(0.047))
397 	CAP(C48, CAP_U(4.7))
398 	CAP(C49, CAP_U(0.1))
399 	CAP(C50, CAP_U(4.7))
400 	CAP(C51, CAP_U(0.1))
401 	CAP(C52, CAP_U(0.022))
402 	CAP(C53, CAP_U(10))
403 	CAP(C54, CAP_U(0.1))
404 	CAP(C55, CAP_U(100))
405 //  CAP(C56, CAP_U(0.05))
406 	CAP(C57, CAP_U(4.7))
407 //  CAP(C58, CAP_U(0.05))
408 	CAP(C59, CAP_U(0.01))
409 	CAP(C60, CAP_U(0.01))
410 	CAP(C61, CAP_U(0.047))
411 	CAP(C62, CAP_U(0.047))
412 	CAP(C63, CAP_U(0.05))
413 	CAP(C64, CAP_U(0.05))
414 //  CAP(C65, CAP_U(0.05))
415 	CAP(C66, CAP_U(0.033))
416 //  CAP(C67, CAP_U(0.05))
417 	CAP(C68, CAP_U(0.1))
418 	CAP(C69, CAP_U(0.1))
419 	CAP(C70, CAP_U(0.1))
420 	CAP(C71, CAP_U(0.047))
421 	CAP(C72, CAP_P(100))
422 	CAP(C73, CAP_U(0.1))
423 //  CAP(C75, CAP_U(10))
424 //  CAP(C76, CAP_U(10))
425 //  CAP(C77, CAP_U(0.1))
426 //  CAP(C78, CAP_U(0.1))
427 //  CAP(C79, CAP_U(0.1))
428 //  CAP(C80, CAP_U(0.1))
429 
430 	D_1N914(D1)
431 	D_1N914(D2)
432 	D_1N914(D3)
433 	D_1N914(D4)
434 	D_1N914(D5)
435 	D_1N914(D6)
436 	D_1N914(D7)
437 	D_1N914(D8)
438 	D_1N914(D9)
439 	D_1N914(D10)
440 	D_1N914(D11)
441 	D_1N914(D12)
442 	D_1N914(D13)
443 	D_1N914(D14)
444 	D_1N914(D15)
445 	D_1N914(D16)
446 
447 //  Q_2N4093(Q1)        -- part of final amp (not emulated)
448 	Q_2N4093(Q2)
449 	Q_2N4093(Q3)
450 	Q_2N4403(Q4)
451 	Q_2N4403(Q5)
452 	Q_2N4403(Q6)
453 	Q_2N4093(Q7)
454 	Q_2N4093(Q8)
455 	Q_2N4403(Q9)
456 	Q_2N4403(Q10)
457 	Q_2N4401(Q11)
458 	Q_2N4401(Q12)
459 	Q_2N4403(Q13)
460 
461 //  TL082_DIP(U1)           // Op. Amp. -- part of final amp (not emulated)
462 //  NET_C(U1.8, I_V12)
463 //  NET_C(U1.4, I_VM12)
464 
465 	TL082_DIP(U2)           // Op. Amp.
466 	NET_C(U2.8, I_V12)
467 	NET_C(U2.4, I_VM12)
468 
469 	CD4069_DIP(U3)          // Hex Inverter
470 	NET_C(U3.7, GND)
471 	NET_C(U3.14, I_V12)
472 
473 	TL082_DIP(U4)           // Op. Amp.
474 	NET_C(U4.8, I_V12)
475 	NET_C(U4.4, I_VM12)
476 
477 	TL082_DIP(U5)           // Op. Amp.
478 	NET_C(U5.8, I_V12)
479 	NET_C(U5.4, I_VM12)
480 
481 	CD4011_DIP(U6)          // Quad 2-Input NAND Gates
482 	NET_C(U6.7, GND)
483 	NET_C(U6.14, I_V12)
484 
485 	CA3080_SLOW_DIP(U7)         // Op. Amp.
486 	NET_C(U7.4, I_VM12)
487 	NET_C(U7.7, I_V12)
488 
489 	TL082_DIP(U8)           // Op. Amp.
490 	NET_C(U8.8, I_V12)
491 	NET_C(U8.4, I_VM12)
492 
493 	MM5837_DIP(U9)          // Noise Generator
494 #if (UNDERCLOCK_NOISE_GEN)
495 	// officially runs at 48-112kHz, but little noticeable difference
496 	// in exchange for a big performance boost
497 	PARAM(U9.FREQ, 24000)
498 
499 	// the NOISE_B signal can run even lower, so use a second
500 	// MM5837 instance at a lower frequency to drive it; this
501 	// second instance doesn't really exist, it just allows us
502 	// a bit more performance
503 	MM5837_DIP(U9B)         // Noise Generator
504 	PARAM(U9B.FREQ, 12000)
505 #endif
506 
507 	TL082_DIP(U10)          // Op. Amp.
508 	NET_C(U10.8, I_V12)
509 	NET_C(U10.4, I_VM12)
510 
511 	CD4024_DIP(U11)         // 7-Stage Ripple Binary Counter
512 	NET_C(U11.7, GND)
513 	NET_C(U11.14, I_V12)
514 
515 	CA3080_SLOW_DIP(U12)            // Op. Amp.
516 	NET_C(U12.4, I_VM12)
517 	NET_C(U12.7, I_V12)
518 
519 	TL082_DIP(U13)          // Op. Amp.
520 	NET_C(U13.8, I_V12)
521 	NET_C(U13.4, I_VM12)
522 
523 	TL082_DIP(U14)          // Op. Amp.
524 	NET_C(U14.8, I_V12)
525 	NET_C(U14.4, I_VM12)
526 
527 	TL082_DIP(U15)          // Op. Amp.
528 	NET_C(U15.8, I_V12)
529 	NET_C(U15.4, I_VM12)
530 
531 	TL082_DIP(U16)          // Op. Amp.
532 	NET_C(U16.8, I_V12)
533 	NET_C(U16.4, I_VM12)
534 
535 	LM555_DIP(U17)
536 
537 	TL082_DIP(U18)          // Op. Amp.
538 	NET_C(U18.8, I_V12)
539 	NET_C(U18.4, I_VM12)
540 
541 	CD4069_DIP(U19)         // Hex Inverter
542 	NET_C(U19.7, GND)
543 	NET_C(U19.14, I_V12)
544 
545 	CD4011_DIP(U20)         // Quad 2-Input NAND Gates
546 	NET_C(U20.7, GND)
547 	NET_C(U20.14, I_V12)
548 
549 	TL082_DIP(U21)          // Op. Amp.
550 	NET_C(U21.8, I_V12)
551 	NET_C(U21.4, I_VM12)
552 
553 	CD4011_DIP(U22)         // Quad 2-Input NAND Gates
554 	NET_C(U22.7, GND)
555 	NET_C(U22.14, I_V12)
556 
557 	TL082_DIP(U23)          // Op. Amp.
558 	NET_C(U23.8, I_V12)
559 	NET_C(U23.4, I_VM12)
560 
561 //  TTL_74LS08_DIP(U25)     // Quad 2-Input AND Gates
562 //  NET_C(U25.7, GND)
563 //  NET_C(U25.14, I_V5)
564 
565 	TTL_7407_DIP(U26)       // Hex Buffers with High Votage Open-Collector Outputs
566 	NET_C(U26.7, GND)
567 	NET_C(U26.14, I_V5)
568 
569 //  TTL_74LS10_DIP(U28)     // Triple 3-Input NAND Gate
570 //  NET_C(U28.7, GND)
571 //  NET_C(U28.14, I_V5)
572 
573 //  TTL_74LS14_DIP(U30)
574 //  NET_C(U30.7, GND)
575 //  NET_C(U30.14, I_V5)
576 
577 	TTL_7406_DIP(U31)       // Hex inverter -- currently using a clone of 7416, no open collector behavior
578 	NET_C(U31.7, GND)
579 	NET_C(U31.14, I_V5)
580 
581 //  TTL_74LS374_DIP(U32)    // Octal D-Type Transparent Latches And Edge-Triggered Flip-Flop
582 //  NET_C(U32.10, GND)
583 //  NET_C(U32.20, I_V5)
584 //
585 //  TTL_74LS374_DIP(U33)    // Octal D-Type Transparent Latches And Edge-Triggered Flip-Flop
586 //  NET_C(U33.10, GND)
587 //  NET_C(U33.20, I_V5)
588 
589 //  TTL_74LS30_DIP(U34)     // 8-Input NAND Gate
590 //  NET_C(U34.7, GND)
591 //  NET_C(U34.14, I_V5)
592 
593 //  TTL_74LS14_DIP(U35)
594 //  NET_C(U35.7, GND)
595 //  NET_C(U35.14, I_V5)
596 
597 	//
598 	// Sheet 7, top (Moving)
599 	//
600 
601 	// Pairs of CD4069 are used together with resistors and capacitors
602 	// to create oscillators. The formula for the frequency is
603 	// 1/1.39*R*C. The following are simulated here:
604 	//
605 	// #1: R35=680K, C12=0.01uF,  Freq=105.80Hz
606 	// #2:  R6=680K, C11=0.01uF,  Freq=105.80Hz
607 	// #3:  R7=680K, C13=0.01uF,  Freq=105.80Hz
608 	//
609 	// Since these are all the same and components have tolerances,
610 	// we use tweaked frequencies for #2 and #3
611 
612 	CLOCK(O1CLK, 105.8)
613 	NET_C(O1CLK.GND, GND)
614 	NET_C(O1CLK.VCC, I_V12)
615 	NET_C(O1CLK.Q, R56.1)
616 	NET_C(GND, R35.1, R35.2, C12.1, C12.2, U3.5, U3.9)
617 
618 	CLOCK(O2CLK, 105.7)
619 	NET_C(O2CLK.GND, GND)
620 	NET_C(O2CLK.VCC, I_V12)
621 	NET_C(O2CLK.Q, R54.1)
622 	NET_C(GND, R6.1, R6.2, C11.1, C11.2, U3.1, U3.3)
623 
624 	CLOCK(O3CLK, 105.9)
625 	NET_C(O3CLK.GND, GND)
626 	NET_C(O3CLK.VCC, I_V12)
627 	NET_C(O3CLK.Q, R58.1)
628 	NET_C(GND, R7.1, R7.2, C13.1, C13.2, U3.13, U3.11)
629 
630 	NET_C(I_MOVING, U31.13)
631 	NET_C(U31.12, R56.2, R54.2, R58.2, R59.1)
632 	NET_C(R59.2, C15.2, R36.2, C14.1)
633 	NET_C(C15.1, U4.2, R28.2)
634 	NET_C(R28.1, U4.1, C14.2, R8.1)
635 	NET_C(U4.3, GND, R36.1)
636 
637 	NET_C(R8.2, C5.2, R10.2, C6.1)
638 	NET_C(C5.1, U4.6, R9.2)
639 	NET_C(R9.1, U4.7, C6.2)
640 	ALIAS(MOVING_SUM, C6.2)
641 	NET_C(U4.5, GND, R10.1)
642 
643 	//
644 	// Sheet 7, 2nd from top (Star Spin/Partial Warship)
645 	//
646 
647 #if (SPLIT_SHARED_OSCILLATORS)
648 
649 	// In the schematics, the below oscillators are shared; however,
650 	// connecting them also brings the two nets together, so we just
651 	// duplicate the clocks here to help keep the very expensive net
652 	// below more isolated.
653 
654 	CLOCK(O1CLKA, 105.8)
655 	NET_C(O1CLKA.GND, GND)
656 	NET_C(O1CLKA.VCC, I_V12)
657 	NET_C(O1CLKA.Q, R55.2)
658 
659 	CLOCK(O2CLKB, 105.7)
660 	NET_C(O2CLKB.GND, GND)
661 	NET_C(O2CLKB.VCC, I_V12)
662 	NET_C(O2CLKB.Q, R53.2)
663 
664 	CLOCK(O3CLKC, 105.9)
665 	NET_C(O3CLKC.GND, GND)
666 	NET_C(O3CLKC.VCC, I_V12)
667 	NET_C(O3CLKC.Q, R57.2)
668 
669 #else
670 
671 	NET_C(O1CLK.Q, R55.2)
672 	NET_C(O2CLK.Q, R53.2)
673 	NET_C(O3CLK.Q, R57.2)
674 
675 #endif
676 
677 	NET_C(I_STAR_SPIN, U31.3, U31.1)
678 	NET_C(U31.2, R148.1)
679 	NET_C(C32.1, I_V12, R62.1, R72.1)
680 
681 	NET_C(R148.2, C32.2, R62.2, U13.5)
682 	NET_C(R72.2, R90.2, R91.1, D6.A)
683 	NET_C(R90.1, GND)
684 	NET_C(U13.6, U13.7, D5.A)
685 	NET_C(D5.K, D6.K, R94.1, R92.1)
686 	NET_C(R94.2, R108.2, U16.5)
687 	NET_C(R108.1, GND)
688 	NET_C(R92.2, U16.6, R107.1, C47.1)
689 
690 #if (ENABLE_SPIN_VCO_FRONTIER)
691 	// split the envelope VCO from the rest of the circuit
692 	// to break up a giant net into 2 smaller ones
693 	NET_C(C47.2, U16.7, U16.2, TESTFUNC.A0)
694 	AFUNC(TESTFUNC, 1, "A0")
695 	NET_C(TESTFUNC.Q, R89.1, R88.1)
696 #else
697 	NET_C(C47.2, U16.7, U16.2, R89.1, R88.1)
698 #endif
699 
700 	NET_C(U16.3, R93.1, R91.2)
701 	NET_C(R93.2, U16.1, D10.A)
702 	NET_C(D10.K, R106.2)
703 	NET_C(R106.1, Q11.B, R133.2)
704 	NET_C(R133.1, GND)
705 	NET_C(Q11.E, GND)
706 	NET_C(Q11.C, R107.2)
707 
708 	NET_C(I_PARTIAL_WARSHIP, U31.5)
709 	NET_C(U31.6, R57.1, R53.1, R55.1, C33.1)
710 	NET_C(C33.2, R63.1)
711 	NET_C(R63.2, R34.1, R51.2, R64.2, U8.6)
712 	NET_C(R34.2, U8.1, C26.2)
713 	ALIAS(STAR_SPIN_PARTIAL_WARSHIP_SUM, U8.1)
714 	NET_C(C26.1, U8.2, U7.6)
715 	NET_C(U8.3, GND)
716 	NET_C(U31.4, C34.1)
717 	NET_C(NOISE_A, C34.1)
718 	NET_C(C34.2, R64.1)
719 	NET_C(U8.5, R49.2, R50.1)
720 	NET_C(R49.1, GND)
721 	NET_C(U8.7, R61.1, R51.1)
722 	NET_C(R61.2, R60.2, U12.3)
723 	NET_C(R60.1, GND)
724 	NET_C(U12.2, GND)
725 	NET_C(U12.5, R88.2)
726 	NET_C(R89.2, U7.5)
727 	NET_C(U7.3, R48.2, R47.2)
728 	NET_C(U7.2, GND)
729 	NET_C(R48.1, GND)
730 	NET_C(R47.1, C35.2, U13.1, R50.2)
731 	NET_C(U13.3, GND)
732 	NET_C(U13.2, C35.1, U12.6)
733 
734 	//
735 	// Sheet 7, middle (Fireball)
736 	//
737 
738 	NET_C(I_FIREBALL, U26.11)
739 	NET_C(U26.10, U22.12, R125.2)
740 #if (ADD_CLIPPING_DIODES)
741 	// fast retriggering relies on clipping diodes which
742 	// aren't implemented by default for speed
743 	D_1N914(D_FIREBALL)
744 	NET_C(D_FIREBALL.A, U22.12)
745 	NET_C(D_FIREBALL.K, I_V12)
746 #endif
747 	NET_C(R125.1, I_V12, R124.1)
748 	NET_C(R124.2, U22.13, C70.1)
749 	NET_C(C70.2, U22.10)
750 	NET_C(U22.8, U22.9, U22.11)
751 	NET_C(U22.11, R123.1)
752 	NET_C(R123.2, D12.A)
753 	NET_C(D12.K, R86.1, R87.1, C50.1)
754 	NET_C(C50.2, GND)
755 	NET_C(R86.2, U14.6, R85.1)
756 	NET_C(R87.2, U14.5, D8.K, Q8.D)
757 	NET_C(NOISE_B, Q8.G)
758 	NET_C(Q8.S, GND)
759 	NET_C(D8.A, GND)
760 	NET_C(R85.2, R71.1, U14.7)
761 	NET_C(R71.2, R70.1, C31.2)
762 	NET_C(C31.1, GND)
763 	NET_C(R70.2, C30.1, R149.1)
764 	NET_C(C30.2, U14.2, U14.1, C44.1)
765 	NET_C(R149.2, C29.2, U14.3)
766 	NET_C(C29.1, GND)
767 	ALIAS(FIREBALL_SUM, C44.2)
768 
769 	//
770 	// Sheet 7, 2nd from bottom (Explosions)
771 	//
772 
773 	NET_C(U9.1, GND)
774 	NET_C(U9.4, I_V12)
775 	NET_C(U9.2, I_VM12)
776 	NET_C(C28.1, R14.2)
777 
778 #if (UNDERCLOCK_NOISE_GEN)
779 
780 	NET_C(U9B.1, GND)
781 	NET_C(U9B.4, I_V12)
782 	NET_C(U9B.2, I_VM12)
783 	NET_C(U9B.3, C28.2)
784 	// Yes - AFuncs are frontiers as well
785 	AFUNC(NOISE_B_FUNC, 1, "A0")
786 	NET_C(R14.2, NOISE_B_FUNC.A0)
787 	ALIAS(NOISE_B, NOISE_B_FUNC.Q)
788 	NET_C(R14.1, GND)
789 	// Yes - AFuncs are frontiers as well
790 	AFUNC(NOISE_A_FUNC, 1, "A0")
791 	NET_C(U9.3, NOISE_A_FUNC.A0)
792 	NET_C(R52.1, NOISE_A_FUNC.Q)
793 	ALIAS(NOISE_A, R52.2)
794 
795 #else
796 
797 #if (ENABLE_NOISE_FRONTIERS)
798 	// Yes - AFuncs are frontiers as well
799 	AFUNC(NOISE_B_FUNC, 1, "A0")
800 	NET_C(R14.2, NOISE_B_FUNC.A0)
801 	ALIAS(NOISE_B, NOISE_B_FUNC.Q)
802 #else
803 	ALIAS(NOISE_B, R14.2)
804 #endif
805 	NET_C(R14.1, GND)
806 #if (ENABLE_NOISE_FRONTIERS)
807 	// Yes - AFuncs are frontiers as well
808 	AFUNC(NOISE_A_FUNC, 1, "A0")
809 	NET_C(U9.3, NOISE_A_FUNC.A0, C28.2)
810 	NET_C(R52.1, NOISE_A_FUNC.Q)
811 #else
812 	NET_C(U9.3, R52.1, C28.2)
813 #endif
814 	ALIAS(NOISE_A, R52.2)
815 
816 #endif
817 
818 	NET_C(I_SMALL_EXPL, U26.13)
819 	NET_C(U26.12, R32.2, U6.2)
820 #if (ADD_CLIPPING_DIODES)
821 	// fast retriggering relies on clipping diodes which
822 	// aren't implemented by default for speed
823 	D_1N914(D_SMALL_EXPL)
824 	NET_C(D_SMALL_EXPL.A, U6.2)
825 	NET_C(D_SMALL_EXPL.K, I_V12)
826 #endif
827 	NET_C(U6.1, C22.1, R33.2)
828 	NET_C(R33.1, I_V12, R45.2, R46.2, R32.1)
829 	NET_C(R45.1, C23.2, U6.13)
830 	NET_C(R46.1, U6.12, U26.6)
831 #if (ADD_CLIPPING_DIODES)
832 	// fast retriggering relies on clipping diodes which
833 	// aren't implemented by default for speed
834 	D_1N914(I_LARGE_EXPL)
835 	NET_C(I_LARGE_EXPL.A, U6.12)
836 	NET_C(I_LARGE_EXPL.K, I_V12)
837 #endif
838 	NET_C(I_LARGE_EXPL, U26.5)
839 	NET_C(C23.1, U6.10)
840 	NET_C(U6.8, U6.9, U6.11)
841 	NET_C(U6.11, D3.A)
842 	NET_C(D3.K, R43.1)
843 	NET_C(R43.2, R42.1, R44.1, C24.1)
844 	NET_C(C24.2, C21.2, Q3.S, Q2.S, D4.A, D1.A, C18.2, C20.1, GND)
845 	NET_C(R42.2, U5.6, R31.1)
846 	NET_C(R31.2, R38.1, U5.7)
847 	NET_C(U5.5, R44.2, Q3.D, D4.K)
848 	NET_C(Q3.G, NOISE_B)
849 	NET_C(R38.2, C19.1, R37.1)
850 	NET_C(C19.2, U5.2, U5.1, R29.1)
851 	NET_C(R37.2, U5.3, C18.1)
852 	NET_C(R29.2, C7.1, R30.1)
853 	ALIAS(EXPL_SUM, C7.2)
854 
855 	NET_C(C22.2, U6.4)
856 	NET_C(U6.5, U6.6, D2.A, U6.3)
857 	NET_C(D2.K, R39.1)
858 	NET_C(R39.2, R41.1, R40.1, C21.1)
859 	NET_C(R41.2, U2.6, R13.1)
860 	NET_C(R13.2, U2.7, R11.1)
861 	NET_C(U2.5, R40.2, Q2.D, D1.K)
862 	NET_C(Q2.G, NOISE_B)
863 	NET_C(R11.2, C8.1, R12.1)
864 	NET_C(R12.2, C20.2, U2.3)
865 	NET_C(C8.2, U2.2, U2.1, R30.2)
866 
867 	//
868 	// Sheet 7, bottom-left (PSG)
869 	//
870 
871 	NET_C(R_PSG_1.2, R_PSG_2.2, R_PSG_3.2, R147.2, C73.1)
872 	NET_C(R147.1, GND)
873 	NET_C(C73.2, R146.1)
874 	NET_C(R146.2, U23.2, R141.1, C72.1)
875 	NET_C(U23.3, GND)
876 	NET_C(C72.2, R141.2, U23.1)
877 	ALIAS(PSG_SUM, U23.1)
878 
879 	//
880 	// Sheet 7, bottom (Thrust)
881 	//
882 
883 	NET_C(I_THRUST, U31.11)
884 	NET_C(U31.10, R96.1, R97.1, R98.2)
885 	NET_C(R98.1, I_V12)
886 	NET_C(R96.2, U15.2, R75.1)
887 	NET_C(U15.3, R97.2, Q7.D, D7.K)
888 	NET_C(Q7.G, NOISE_B)
889 	NET_C(Q7.S, GND)
890 	NET_C(D7.A, GND)
891 	NET_C(U15.1, R75.2, R95.1)
892 	NET_C(R95.2, C40.2, R73.1)
893 	NET_C(C40.1, GND)
894 	NET_C(R73.2, R74.1, C41.1)
895 	NET_C(R74.2, C37.2, U15.5)
896 	NET_C(C37.1, GND)
897 	NET_C(C41.2, U15.6, U15.7, C36.1)
898 	ALIAS(THRUST_SUM, C36.2)
899 
900 	//
901 	// Sheet 8, top (Crafts Joining)
902 	//
903 
904 	NET_C(I_CRAFTS_JOINING, U26.1)
905 	NET_C(U26.2, R120.1, U20.12)
906 	NET_C(R120.2, I_V12, R119.2, C48.1, R80.2, R79.2)
907 	NET_C(R119.1, C64.1, U20.13)
908 #if (ADD_CLIPPING_DIODES)
909 	// fast retriggering relies on clipping diodes which
910 	// aren't implemented by default for speed
911 	D_1N914(D_CRAFTS_JOINING)
912 	NET_C(D_CRAFTS_JOINING.A, U20.13)
913 	NET_C(D_CRAFTS_JOINING.K, I_V12)
914 #endif
915 	NET_C(U20.11, U20.8, U20.9)
916 	NET_C(U20.10, C64.2, D9.K)
917 	NET_C(D9.A, R101.1)
918 	NET_C(R101.2, C48.2, R80.1, Q6.B)
919 	NET_C(Q6.E, R79.1)
920 	NET_C(Q6.C, Q5.E, Q4.E)
921 
922 	// Another set of CD4069 oscillators:
923 	//
924 	// #4: R138=150K, C61=0.047uF,  Freq=102.05Hz
925 	// #5: R144=220K, C71=0.047uF,  Freq=69.58Hz
926 	// #6: R139=150K, C62=0.047uF,  Freq=102.05Hz
927 
928 	CLOCK(O4CLK, 102.05)
929 	NET_C(O4CLK.GND, GND)
930 	NET_C(O4CLK.VCC, I_V12)
931 	NET_C(O4CLK.Q, R115.1, R116.2)
932 	NET_C(GND, R138.1, R138.2, C61.1, C61.2, U19.1, U19.3)
933 
934 	CLOCK(O5CLK, 69.58)
935 	NET_C(O5CLK.GND, GND)
936 	NET_C(O5CLK.VCC, I_V12)
937 	NET_C(O5CLK.Q, R114.1, R117.2)
938 	NET_C(GND, R144.1, R144.2, C71.1, C71.2, U19.5, U19.9)
939 
940 	CLOCK(O6CLK, 102.15)
941 	NET_C(O6CLK.GND, GND)
942 	NET_C(O6CLK.VCC, I_V12)
943 	NET_C(O6CLK.Q, R113.1, R118.2)
944 	NET_C(GND, R139.1, R139.2, C62.1, C62.2, U19.13, U19.11)
945 
946 	NET_C(R115.2, R114.2, R113.2, C43.2, C42.1, R100.2)
947 	NET_C(C43.1, R65.1, U10.2)
948 	NET_C(U10.3, R100.1, R99.2, U18.5, R67.1, R110.2, R68.1, Q5.B, R134.2, Q9.B, GND)
949 	NET_C(R65.2, U10.1, C42.2, R78.1)
950 	NET_C(R78.2, Q4.B, R67.2)
951 	NET_C(Q4.C, R68.2, R76.1, U10.5)
952 	NET_C(Q5.C, R77.1, R66.1, U10.6)
953 	NET_C(R76.2, R77.2, I_VM12)
954 	NET_C(R66.2, U10.7)
955 	ALIAS(JOINING_SUM, U10.7)
956 
957 	//
958 	// Sheet 8, middle (Docking Bang)
959 	//
960 
961 	NET_C(R116.1, R117.1, R118.1, R99.1, C60.1, C59.1)
962 	NET_C(C60.2, R112.1, U18.6)
963 	NET_C(C59.2, R112.2, U18.7, R111.1)
964 	NET_C(R111.2, R110.1, Q10.B)
965 	NET_C(Q10.C, R134.1, R135.2, U18.3)
966 	NET_C(Q10.E, Q9.E, Q13.C)
967 	NET_C(Q9.C, U18.2, R109.1, R136.2)
968 	NET_C(R135.1, R136.1, I_VM12)
969 	NET_C(R109.2, U18.1)
970 	ALIAS(BANG_SUM, U18.1)
971 
972 	NET_C(I_DOCKING_BANG, U26.3)
973 	NET_C(U26.4, R121.2, U20.2)
974 	NET_C(R121.1, I_V12, R127.2, R126.2, R122.1, C57.1, R142.1, R143.1)
975 	NET_C(R122.2, C63.1, U20.1)
976 #if (ADD_CLIPPING_DIODES)
977 	// fast retriggering relies on clipping diodes which
978 	// aren't implemented by default for speed
979 	D_1N914(D_DOCKING_BANG)
980 	NET_C(D_DOCKING_BANG.A, U20.1)
981 	NET_C(D_DOCKING_BANG.K, I_V12)
982 #endif
983 	NET_C(U20.3, U20.5, U20.6)
984 	NET_C(U20.4, C63.2, D16.K)
985 	NET_C(D16.A, R137.1)
986 	NET_C(R137.2, C57.2, R142.2, Q13.B)
987 	NET_C(Q13.E, R143.2)
988 
989 	//
990 	// Sheet 8, 2nd from bottom (Shoot)
991 	//
992 
993 	NET_C(I_SHOOT, U26.9)
994 	NET_C(U26.8, R126.1, U22.2)
995 #if (ADD_CLIPPING_DIODES)
996 	// fast retriggering relies on clipping diodes which
997 	// aren't implemented by default for speed
998 	D_1N914(D_SHOOT)
999 	NET_C(D_SHOOT.A, U22.2)
1000 	NET_C(D_SHOOT.K, I_V12)
1001 #endif
1002 	NET_C(U22.1, R127.1, C69.2)
1003 	NET_C(C69.1, U22.4, U11.2)
1004 	NET_C(U22.5, U22.6, U22.3)
1005 	NET_C(U22.3, D14.K)
1006 	NET_C(D14.A, R140.1)
1007 	NET_C(R140.2, D15.K, C68.2)
1008 	NET_C(C68.1, C66.1, D13.A, GND)
1009 	NET_C(D15.A, R102.1, D13.K) // and U21.3
1010 	NET_C(C66.2, R103.1)        // and U21.2
1011 	NET_C(R103.2, R102.2, R84.1)// and U21.1
1012 
1013 #if (HLE_SHOOT_VCO)
1014 	//
1015 	//    R2 = 0.96721: HP = (0.000138452*A0) - 0.0000076731
1016 	//    R2 = 0.97638: HP = (0.0000289361*A0*A0) + (0.000074399*A0) + 0.0000125173
1017 	//    R2 = 0.97705: HP = (0.0000152345*A0*A0*A0) - (0.0000278973*A0*A0) + (0.000132881*A0) - 0.00000173354
1018 	//    R2 = 0.97706: HP = (-0.00000384290*A0*A0*A0*A0) + (0.0000353504*A0*A0*A0) - (0.000063189*A0*A0) + (0.000156402*A0) - 0.00000642730
1019 	//    R2 = 0.97712: HP = (0.0000167037*A0*A0*A0*A0*A0) - (0.000115736*A0*A0*A0*A0) + (0.000312133*A0*A0*A0) - (0.000372722*A0*A0) + (0.000308685*A0) - 0.0000319600
1020 	//
1021 	VARCLOCK(SHOOTCLK, 1, "max(0.000001,min(0.1,(0.0000152345*A0*A0*A0) - (0.0000278973*A0*A0) + (0.000132881*A0) - 0.00000173354))")
1022 	NET_C(SHOOTCLK.GND, GND)
1023 	NET_C(SHOOTCLK.VCC, I_V5)
1024 	NET_C(SHOOTCLK.A0, D15.K)
1025 	NET_C(SHOOTCLK.Q, SHOOTENV.A0)
1026 	AFUNC(SHOOTENV, 1, "if(A0>2.5,11.1,-11.1)")
1027 	NET_C(SHOOTENV.Q, U11.1)
1028 	NET_C(GND, U21.3, U21.2)
1029 #else
1030 	NET_C(D15.A, U21.3)
1031 	NET_C(U21.2, C66.2)
1032 	NET_C(R103.2, U21.1)
1033 #endif
1034 
1035 	NET_C(R84.2, U11.1)
1036 	NET_C(U11.12, R81.1)
1037 	NET_C(U11.11, R82.1)
1038 	NET_C(U11.9, R83.1)
1039 	NET_C(U11.6, R69.1)
1040 	NET_C(R81.2, R82.2, R83.2, R69.2, C49.1)
1041 	ALIAS(SHOOT_SUM, C49.2)
1042 
1043 	//
1044 	// Sheet 8, bottom (Crafts Scale)
1045 	//
1046 
1047 	NET_C(I_CRAFTS_SCALE, U31.9)
1048 	NET_C(U31.8, R130.1, R129.1, U17.4)
1049 	NET_C(R130.2, R132.2, C55.1, R104.2, U17.8, C53.1, I_V12)
1050 	NET_C(R129.2, R128.2, Q12.B)
1051 	NET_C(Q12.C, D11.A, R131.1, R132.1)
1052 	NET_C(R128.1, Q12.E, C52.1, U17.1, C54.1, C53.2, GND)
1053 	NET_C(D11.K, R131.2, C55.2, C54.2, U17.5)
1054 	NET_C(R104.1, R105.2, U17.7)
1055 	NET_C(C52.2, U17.6, U17.2, R105.1)
1056 	NET_C(U17.3, C51.1)
1057 	ALIAS(SCALE_SUM, C51.2)
1058 
1059 	//
1060 	// Sheet 8, right (summing)
1061 	//
1062 
1063 	NET_C(JOINING_SUM, R25.1)
1064 	NET_C(BANG_SUM, R21.1)
1065 	NET_C(SHOOT_SUM, R23.1)
1066 	NET_C(SCALE_SUM, R19.1)
1067 	NET_C(EXPL_SUM, R26.1)
1068 	NET_C(THRUST_SUM, R22.1)
1069 	NET_C(MOVING_SUM, R27.1)
1070 	NET_C(FIREBALL_SUM, R24.1)
1071 	NET_C(STAR_SPIN_PARTIAL_WARSHIP_SUM, R20.1)
1072 	NET_C(PSG_SUM, R18.1)
1073 
1074 	NET_C(R25.2, R21.2, R23.2, R19.2, R26.2, R22.2, R27.2, R24.2, R20.2, R18.2)
1075 	ALIAS(OUTPUT, R18.2)
1076 
1077 	//
1078 	// Unconnected inputs
1079 	//
1080 
1081 	NET_C(GND, U21.5, U21.6)
1082 	NET_C(GND, U23.5, U23.6)
1083 
1084 	//
1085 	// Unconnected outputs
1086 	//
1087 
1088 #if (ENABLE_FRONTIERS)
1089 #define RXX 384
1090 	OPTIMIZE_FRONTIER(C36.1, RES_K(3.9), RXX)
1091 	OPTIMIZE_FRONTIER(C44.1, RES_K(4.7), RXX)
1092 	OPTIMIZE_FRONTIER(R25.1, RES_K(47), RXX)
1093 	OPTIMIZE_FRONTIER(R21.1, RES_K(47), RXX)
1094 	OPTIMIZE_FRONTIER(R23.1, RES_K(82), RXX)
1095 	OPTIMIZE_FRONTIER(R19.1, RES_K(470), RXX)
1096 	OPTIMIZE_FRONTIER(R26.1, 100, RXX)
1097 	OPTIMIZE_FRONTIER(R22.1, RES_K(3.9), RXX)
1098 	OPTIMIZE_FRONTIER(R27.1, RES_K(100), RXX)
1099 	OPTIMIZE_FRONTIER(R24.1, RES_K(4.7), RXX)
1100 	OPTIMIZE_FRONTIER(R20.1, RES_K(22), RXX)
1101 #endif
1102 
1103 NETLIST_END()
1104