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