1 // license:CC0 2 // copyright-holders:Aaron Giles 3 4 // 5 // Netlist for Solar Quest 6 // 7 // Derived from the schematics in the Solar Quest manual. 8 // 9 // Known problems/issues: 10 // 11 // * This was the most challenging netlist so far to get 12 // into realtime performance. 13 // 14 // * The FIRE sound in particular uses a complex network 15 // of op-amps (mix of TL081 and CA3080) with lots of 16 // feedback. The default "fast" CA3080 is not sufficient 17 // here because it uses an instantaneous AFUNC which 18 // is bad in feedback loops, so instead we use the 19 // much slower 15xBJT model. Frontiers are used to 20 // isolate the two relevant CA3080s from the more 21 // common CA3080s used for final mixing. 22 // 23 // * A few important frontiers are used to isolate parts 24 // of the circuit from one another. 25 // 26 27 #include "netlist/devices/net_lib.h" 28 #include "nl_cinemat_common.h" 29 30 31 // 32 // Optimizations 33 // 34 35 #define HLE_MUSIC_CLOCK (1) 36 #define HLE_CAPTURE_VCO (1) 37 #define HLE_PHOTON_VCO (1) 38 #define HLE_NOISE_CONVERT (1) 39 #define ENABLE_FRONTIERS (1) 40 41 42 43 // 44 // Main netlist 45 // 46 47 NETLIST_START(solarq) 48 49 SOLVER(Solver, 1000) 50 PARAM(Solver.DYNAMIC_TS, 1) 51 PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 4e-5) 52 53 TTL_INPUT(I_OUT_0, 0) // active high 54 TTL_INPUT(I_OUT_1, 0) // active high 55 TTL_INPUT(I_OUT_2, 0) // active high 56 TTL_INPUT(I_OUT_3, 0) // active high 57 TTL_INPUT(I_OUT_4, 0) // active high 58 TTL_INPUT(I_OUT_7, 0) // active high 59 60 NET_C(GND, I_OUT_0.GND, I_OUT_1.GND, I_OUT_2.GND, I_OUT_3.GND, I_OUT_4.GND, I_OUT_7.GND) 61 NET_C(I_V5, I_OUT_0.VCC, I_OUT_1.VCC, I_OUT_2.VCC, I_OUT_3.VCC, I_OUT_4.VCC, I_OUT_7.VCC) 62 63 CINEMAT_LOCAL_MODELS 64 65 ANALOG_INPUT(I_V5, 5) 66 ANALOG_INPUT(I_V15, 15) 67 ANALOG_INPUT(I_VM15, -15) 68 69 RES(R1, RES_K(1)) 70 RES(R2, RES_K(1)) 71 RES(R3, RES_K(1)) 72 RES(R4, RES_K(2)) 73 RES(R5, RES_K(15)) 74 RES(R6, 390) 75 RES(R7, RES_M(1)) 76 RES(R8, RES_K(4.7)) 77 RES(R9, 330) 78 RES(R10, 330) 79 RES(R11, RES_K(4.7)) 80 RES(R12, RES_K(20)) 81 RES(R13, RES_K(24)) 82 RES(R14, RES_M(1)) 83 RES(R15, RES_K(6.8)) 84 RES(R16, RES_K(18)) 85 RES(R17, RES_K(47)) 86 RES(R18, 390) 87 RES(R19, 390) 88 RES(R20, RES_K(4.7)) 89 RES(R21, RES_K(2.7)) 90 RES(R22, RES_K(4.7)) 91 RES(R23, RES_K(39)) 92 RES(R24, RES_K(12)) 93 RES(R25, RES_K(1)) 94 RES(R26, RES_K(75)) 95 RES(R27, RES_K(4.7)) 96 RES(R28, RES_K(2.7)) 97 RES(R29, RES_K(4.7)) 98 RES(R30, RES_K(39)) 99 RES(R31, RES_K(12)) 100 RES(R32, RES_K(1)) 101 RES(R33, RES_K(200)) 102 RES(R34, RES_K(8.2)) 103 RES(R35, RES_K(47)) 104 RES(R36, RES_K(22)) 105 RES(R37, RES_K(1)) 106 RES(R38, RES_K(1)) 107 RES(R39, RES_K(4.7)) 108 RES(R40, RES_K(2.7)) 109 RES(R41, RES_K(4.7)) 110 RES(R42, RES_K(39)) 111 RES(R43, RES_K(12)) 112 RES(R44, RES_K(1)) 113 RES(R45, RES_K(36)) 114 RES(R46, RES_K(100)) 115 RES(R47, RES_K(2)) 116 RES(R48, RES_M(1)) 117 RES(R49, RES_K(4.7)) 118 RES(R50, RES_K(2.7)) 119 RES(R51, RES_K(4.7)) 120 RES(R52, RES_K(39)) 121 RES(R53, RES_K(2.7)) 122 RES(R54, RES_K(12)) 123 // RES(R55, xx) -- deleted 124 // RES(R56, xx) -- deleted 125 // RES(R57, xx) -- deleted 126 RES(R58, RES_K(8.2)) 127 RES(R59, RES_K(51)) 128 RES(R60, RES_M(1)) 129 RES(R61, RES_K(20)) 130 RES(R62, RES_K(20)) 131 RES(R63, 100) 132 RES(R64, RES_K(100)) 133 RES(R65, RES_K(20)) 134 RES(R66, RES_K(2)) 135 RES(R67, 100) 136 RES(R68, RES_K(100)) 137 RES(R69, RES_K(20)) 138 RES(R70, RES_K(20)) 139 RES(R71, RES_K(13)) 140 RES(R72, RES_K(300)) 141 RES(R73, 100) 142 RES(R74, 100) 143 RES(R75, RES_K(4.7)) 144 RES(R76, RES_K(2.7)) 145 RES(R77, RES_K(4.7)) 146 RES(R78, RES_K(39)) 147 RES(R79, RES_K(12)) 148 RES(R80, RES_K(1)) 149 RES(R81, RES_K(360)) 150 RES(R82, RES_K(4.7)) 151 RES(R83, RES_K(2.7)) 152 RES(R84, RES_K(4.7)) 153 RES(R85, RES_K(39)) 154 RES(R86, RES_K(12)) 155 RES(R87, RES_K(2.7)) 156 RES(R88, RES_K(270)) 157 RES(R89, RES_K(51)) 158 RES(R90, RES_M(1)) 159 RES(R91, RES_K(10)) 160 RES(R92, RES_K(10)) 161 RES(R93, RES_K(1)) 162 RES(R94, RES_K(2)) 163 RES(R95, RES_K(10)) 164 RES(R96, RES_K(12)) 165 RES(R97, RES_K(1)) 166 RES(R98, RES_K(10)) 167 RES(R99, RES_K(11)) 168 RES(R100, RES_K(100)) 169 RES(R101, RES_K(100)) 170 RES(R102, RES_K(240)) 171 RES(R103, RES_K(100)) 172 RES(R104, RES_K(100)) 173 RES(R105, RES_K(100)) 174 RES(R106, 200) 175 RES(R107, 200) 176 RES(R108, RES_K(120)) 177 RES(R109, RES_M(10)) 178 RES(R110, RES_K(100)) 179 RES(R111, 200) 180 RES(R112, 200) 181 RES(R113, RES_K(4.7)) 182 RES(R114, RES_K(2.7)) 183 RES(R115, RES_K(4.7)) 184 RES(R116, RES_K(39)) 185 RES(R117, RES_K(12)) 186 RES(R118, RES_K(1)) 187 RES(R119, RES_K(120)) 188 RES(R120, RES_M(10)) 189 RES(R121, RES_K(4.7)) 190 RES(R122, RES_M(1.5)) 191 RES(R123, 390) 192 RES(R124, 390) 193 RES(R125, RES_K(4.7)) 194 RES(R126, RES_K(2.7)) 195 RES(R127, RES_K(4.7)) 196 RES(R128, RES_K(39)) 197 RES(R129, RES_K(12)) 198 RES(R130, RES_K(1)) 199 // RES(R131, xx) -- deleted 200 RES(R132, RES_K(75)) 201 RES(R133, RES_K(4.7)) 202 RES(R134, RES_K(2.7)) 203 RES(R135, RES_K(4.7)) 204 RES(R136, RES_K(39)) 205 RES(R137, RES_K(12)) 206 RES(R138, RES_K(1)) 207 RES(R139, RES_K(51)) 208 RES(R140, RES_K(100)) 209 RES(R141, RES_K(4.7)) 210 RES(R142, RES_K(2.7)) 211 RES(R143, RES_K(4.7)) 212 RES(R144, RES_K(39)) 213 RES(R145, RES_K(12)) 214 RES(R146, RES_K(1)) 215 RES(R147, RES_K(51)) 216 RES(R148, RES_K(200)) 217 RES(R149, RES_K(30)) 218 RES(R150, RES_K(8.2)) 219 RES(R151, RES_K(51)) 220 // POT(R152, RES_K(10)) -- part of final amp (not emulated) 221 // RES(R153, RES_K(15)) -- part of final amp (not emulated) 222 // RES(R154, RES_K(390)) -- part of final amp (not emulated) 223 // RES(R155, RES_K(150)) -- part of final amp (not emulated) 224 // RES(R156, 150) -- part of final amp (not emulated) 225 // RES(R157, RES_K(22)) -- part of final amp (not emulated) 226 // RES(R158, 0.51) -- part of final amp (not emulated) 227 // RES(R159, 0.51) -- part of final amp (not emulated) 228 // RES(R160, RES_K(390)) -- part of final amp (not emulated) 229 RES(R161, RES_K(1)) 230 RES(R162, RES_K(1)) 231 RES(R163, RES_K(1)) 232 RES(R164, RES_K(1)) 233 234 CAP(C1, CAP_U(0.001)) 235 CAP(C2, CAP_U(0.01)) 236 CAP(C3, CAP_U(0.1)) 237 CAP(C4, CAP_P(680)) 238 CAP(C5, CAP_U(0.1)) 239 CAP(C6, CAP_U(0.1)) 240 CAP(C7, CAP_U(0.01)) 241 CAP(C8, CAP_U(3.3)) 242 CAP(C9, CAP_U(1)) 243 CAP(C10, CAP_U(0.22)) 244 CAP(C11, CAP_U(0.33)) 245 CAP(C12, CAP_U(4.7)) 246 CAP(C13, CAP_U(0.1)) 247 CAP(C14, CAP_U(0.01)) 248 CAP(C15, CAP_U(1)) 249 CAP(C16, CAP_U(0.1)) 250 CAP(C17, CAP_U(1)) 251 CAP(C18, CAP_U(0.47)) 252 CAP(C19, CAP_U(0.001)) 253 CAP(C20, CAP_U(0.01)) 254 CAP(C21, CAP_U(0.1)) 255 CAP(C22, CAP_U(0.1)) 256 CAP(C23, CAP_P(330)) 257 CAP(C24, CAP_U(0.68)) 258 CAP(C25, CAP_P(330)) 259 CAP(C26, CAP_U(2.2)) 260 CAP(C27, CAP_U(0.22)) 261 CAP(C28, CAP_U(2.2)) 262 CAP(C29, CAP_U(2.2)) 263 CAP(C30, CAP_U(0.1)) 264 CAP(C31, CAP_U(0.33)) 265 // CAP(C32, CAP_U(0.68)) -- part of final amp (not emulated) 266 // CAP(C33, CAP_P(470)) -- part of final amp (not emulated) 267 // CAP(C34, CAP_P(470)) -- part of final amp (not emulated) 268 // CAP(C35, CAP_U(0.005)) -- part of final amp (not emulated) 269 // CAP(C36, CAP_P(470)) -- part of final amp (not emulated) 270 // CAP(C37, CAP_U(0.1)) -- part of voltage converter (not emulated) 271 // CAP(C38, CAP_U(25)) -- part of voltage converter (not emulated) 272 // CAP(C39, CAP_U(25)) -- part of voltage converter (not emulated) 273 // CAP(C40, CAP_U(0.1)) -- part of voltage converter (not emulated) 274 // CAP(C41, CAP_U(25)) -- part of voltage converter (not emulated) 275 // CAP(C42, CAP_U(25)) -- part of voltage converter (not emulated) 276 // CAP(C43, CAP_U(25)) -- part of voltage converter (not emulated) 277 278 // D_1N4003(D1) -- part of voltage converter (not emulated) 279 // D_1N4003(D2) -- part of voltage converter (not emulated) 280 // D_1N4003(D3) -- part of voltage converter (not emulated) 281 // D_1N4003(D4) -- part of voltage converter (not emulated) 282 D_1N5240(D5) 283 D_1N5240(D6) 284 D_1N914(D7) 285 D_1N914(D8) 286 // D_1N4003(D9) -- part of final amp (not emulated) 287 // D_1N4003(D10) -- part of final amp (not emulated) 288 289 Q_2N3906(Q1) // PNP 290 Q_2N3906(Q2) // PNP 291 Q_2N3906(Q3) // PNP 292 Q_2N3906(Q4) // PNP 293 Q_2N3906(Q5) // PNP 294 Q_2N3906(Q6) // PNP 295 Q_2N3906(Q7) // PNP 296 Q_2N3904(Q8) // NPN 297 Q_2N3906(Q9) // PNP 298 Q_2N3906(Q10) // PNP 299 Q_2N3906(Q11) // PNP 300 Q_2N3904(Q12) // NPN 301 #if !(HLE_CAPTURE_VCO) 302 Q_2N3904(Q13) // NPN 303 #endif 304 Q_2N3906(Q14) // PNP 305 Q_2N3906(Q15) // PNP 306 Q_2N3906(Q16) // PNP 307 Q_2N3906(Q17) // PNP 308 Q_2N3906(Q18) // PNP 309 Q_2N3906(Q19) // PNP 310 Q_2N3906(Q20) // PNP 311 Q_2N3906(Q21) // PNP 312 // Q_2N6292(Q22) // NPN -- part of final amp (not emulated) 313 // Q_2N6107(Q23) // PNP -- part of final amp (not emulated) 314 315 #if (!HLE_MUSIC_CLOCK) 316 CLOCK(Y1, 20000000) 317 NET_C(Y1.GND, GND) 318 NET_C(Y1.VCC, I_V5) 319 #endif 320 321 TTL_7414_DIP(U1) // Hex Inverter 322 NET_C(U1.7, GND) 323 NET_C(U1.14, I_V5) 324 325 TTL_7414_DIP(U2) // Hex Inverter 326 NET_C(U2.7, GND) 327 NET_C(U2.14, I_V5) 328 329 TTL_74LS164_DIP(U3) // 8-bit Shift Reg. 330 NET_C(U3.7, GND) 331 NET_C(U3.14, I_V5) 332 333 TTL_74LS164_DIP(U4) // 8-bit Shift Reg. 334 NET_C(U4.7, GND) 335 NET_C(U4.14, I_V5) 336 337 TTL_74LS377_DIP(U5) // Octal D Flip Flop 338 NET_C(U5.10, GND) 339 NET_C(U5.20, I_V5) 340 341 TTL_74LS377_DIP(U6) // Octal D Flip Flop 342 NET_C(U6.10, GND) 343 NET_C(U6.20, I_V5) 344 345 TTL_74LS377_DIP(U7) // Octal D Flip Flop 346 NET_C(U7.10, GND) 347 NET_C(U7.20, I_V5) 348 349 TTL_74LS163_DIP(U8) // Binary Counter 350 NET_C(U8.8, GND) 351 NET_C(U8.16, I_V5) 352 353 TTL_74LS163_DIP(U9) // Binary Counter 354 NET_C(U9.8, GND) 355 NET_C(U9.16, I_V5) 356 357 TTL_74LS163_DIP(U10) // Binary Counter 358 NET_C(U10.8, GND) 359 NET_C(U10.16, I_V5) 360 361 TTL_74LS163_DIP(U11) // Binary Counter 362 NET_C(U11.8, GND) 363 NET_C(U11.16, I_V5) 364 365 TTL_74LS163_DIP(U12) // Binary Counter 366 NET_C(U12.8, GND) 367 NET_C(U12.16, I_V5) 368 369 LM555_DIP(U13) 370 371 TTL_74LS74_DIP(U14) // Dual D Flip Flop 372 NET_C(U14.7, GND) 373 NET_C(U14.14, I_V5) 374 375 TTL_74LS74_DIP(U15) // Dual D Flip Flop 376 NET_C(U15.7, GND) 377 NET_C(U15.14, I_V5) 378 379 TTL_74LS107_DIP(U16) // DUAL J-K FLIP-FLOPS WITH CLEAR 380 NET_C(U16.7, GND) 381 NET_C(U16.14, I_V5) 382 383 TTL_74LS393_DIP(U17) // Dual 4-Stage Binary Counter 384 NET_C(U17.7, GND) 385 NET_C(U17.14, I_V5) 386 387 TTL_74LS86_DIP(U18) // Quad 2-Input XOR Gates 388 NET_C(U18.7, GND) 389 NET_C(U18.14, I_V5) 390 391 TTL_74LS74_DIP(U19) // Dual D Flip Flop 392 NET_C(U19.7, GND) 393 NET_C(U19.14, I_V5) 394 395 TTL_74LS74_DIP(U20) // Dual D Flip Flop 396 NET_C(U20.7, GND) 397 NET_C(U20.14, I_V5) 398 399 TTL_74LS393_DIP(U21) // Dual 4-Stage Binary Counter 400 NET_C(U21.7, GND) 401 NET_C(U21.14, I_V5) 402 403 TTL_74LS02_DIP(U22) // Quad 2-input Nor Gate 404 NET_C(U22.7, GND) 405 NET_C(U22.14, I_V5) 406 407 TTL_74LS74_DIP(U23) // Dual D Flip Flop 408 NET_C(U23.7, GND) 409 NET_C(U23.14, I_V5) 410 411 TTL_74S04_DIP(U24) // Hex Inverting Gates 412 NET_C(U24.7, GND) 413 NET_C(U24.14, I_V5) 414 415 TTL_74S113A_DIP(U25) // Dual JK Negative Edge-Trigged Flip Flop 416 NET_C(U25.7, GND) 417 NET_C(U25.14, I_V5) 418 419 TTL_74LS163_DIP(U26) // Binary Counter 420 NET_C(U26.8, GND) 421 NET_C(U26.16, I_V5) 422 423 TTL_74LS107_DIP(U27) // DUAL J-K FLIP-FLOPS WITH CLEAR 424 NET_C(U27.7, GND) 425 NET_C(U27.14, I_V5) 426 427 TTL_74LS164_DIP(U28) // 8-bit Shift Reg. 428 NET_C(U28.7, GND) 429 NET_C(U28.14, I_V5) 430 431 TTL_74LS164_DIP(U29) // 8-bit Shift Reg. 432 NET_C(U29.7, GND) 433 NET_C(U29.14, I_V5) 434 435 TTL_74LS164_DIP(U30) // 8-bit Shift Reg. 436 NET_C(U30.7, GND) 437 NET_C(U30.14, I_V5) 438 439 TTL_74LS393_DIP(U31) // Dual 4-Stage Binary Counter 440 NET_C(U31.7, GND) 441 NET_C(U31.14, I_V5) 442 443 TL081_DIP(U32) // Op. Amp. 444 NET_C(U32.7, I_V15) 445 NET_C(U32.4, I_VM15) 446 447 CA3080_DIP(U33) // Op. Amp. 448 NET_C(U33.4, I_VM15) 449 NET_C(U33.7, I_V15) 450 451 CA3080_DIP(U34) // Op. Amp. 452 NET_C(U34.4, I_VM15) 453 NET_C(U34.7, I_V15) 454 455 LM555_DIP(U35) 456 457 TL081_DIP(U36) // Op. Amp. 458 NET_C(U36.7, I_V15) 459 NET_C(U36.4, I_VM15) 460 461 TL081_DIP(U37) // Op. Amp. 462 NET_C(U37.7, I_V15) 463 NET_C(U37.4, I_VM15) 464 465 TL081_DIP(U38) // Op. Amp. 466 NET_C(U38.7, I_V15) 467 NET_C(U38.4, I_VM15) 468 469 TL081_DIP(U39) // Op. Amp. 470 NET_C(U39.7, I_V15) 471 NET_C(U39.4, I_VM15) 472 473 TL081_DIP(U40) // Op. Amp. 474 NET_C(U40.7, I_V15) 475 NET_C(U40.4, I_VM15) 476 477 CA3080_DIP(U41) // Op. Amp. 478 NET_C(U41.4, I_VM15) 479 NET_C(U41.7, I_V15) 480 481 #if (!HLE_CAPTURE_VCO) 482 LM566_DIP(U42) 483 #endif 484 485 TL081_DIP(U43) // Op. Amp. 486 NET_C(U43.7, I_V15) 487 NET_C(U43.4, I_VM15) 488 489 CA3080_SLOW_DIP(U44) // Op. Amp. 490 NET_C(U44.4, I_VM15) 491 NET_C(U44.7, I_V15) 492 493 TL081_DIP(U45) // Op. Amp. 494 NET_C(U45.7, I_V15) 495 NET_C(U45.4, I_VM15) 496 497 CA3080_SLOW_DIP(U46) // Op. Amp. 498 NET_C(U46.4, I_VM15) 499 NET_C(U46.7, I_V15) 500 501 TL081_DIP(U47) // Op. Amp. 502 NET_C(U47.7, I_V15) 503 NET_C(U47.4, I_VM15) 504 505 CA3080_DIP(U48) // Op. Amp. 506 NET_C(U48.4, I_VM15) 507 NET_C(U48.7, I_V15) 508 509 TL081_DIP(U49) // Op. Amp. 510 NET_C(U49.7, I_V15) 511 NET_C(U49.4, I_VM15) 512 513 TL081_DIP(U50) // Op. Amp. 514 NET_C(U50.7, I_V15) 515 NET_C(U50.4, I_VM15) 516 517 // TL081_DIP(U51) // Op. Amp. -- part of final amp (not emulated) 518 // NET_C(U51.7, I_V15) 519 // NET_C(U51.4, I_VM15) 520 521 // TTL_7815_DIP(U52) // +15V Regulator -- part of voltage converter (not emulated) 522 // TTL_7915_DIP(U53) // -15V Regulator -- part of voltage converter (not emulated) 523 524 // 525 // Page 1, top left 526 // 527 528 NET_C(I_OUT_7, U1.1) 529 NET_C(U1.2, U1.3) 530 NET_C(U1.4, U3.1) 531 532 NET_C(I_OUT_4, U1.5) 533 NET_C(U1.6, U1.13) 534 NET_C(U1.12, U3.8, U4.8) 535 536 NET_C(I_V5, R1.1, R2.1, R3.1) 537 ALIAS(HIA_P, R1.2) 538 ALIAS(HIB_P, R2.2) 539 ALIAS(HIC_P, R3.2) 540 541 NET_C(HIA_P, U3.9, U3.2) 542 NET_C(U3.3, U5.3, U7.3) 543 NET_C(U3.4, U5.4, U7.4) 544 NET_C(U3.5, U5.7, U7.7) 545 NET_C(U3.6, U5.8, U7.8) 546 NET_C(U3.10, U5.13, U7.13) 547 NET_C(U3.11, U5.14, U7.14) 548 NET_C(U3.12, U5.17, U7.17) 549 NET_C(U3.13, U5.18, U7.18, U4.1) 550 551 NET_C(HIA_P, U4.2, U4.9) 552 NET_C(U4.3, U6.3) 553 NET_C(U4.4, U6.4) 554 NET_C(U4.5, U6.7) 555 NET_C(U4.6, U6.8) 556 NET_C(U4.10, U6.13) 557 NET_C(U4.11, U6.14) 558 NET_C(U4.12, U6.17) 559 NET_C(U4.13, U6.18) 560 561 ALIAS(MEN_P, U5.2) 562 ALIAS(AS2_M, U5.5) 563 ALIAS(AS1_M, U5.6) 564 ALIAS(AS0_M, U5.9) 565 ALIAS(FS11_P, U5.12) 566 ALIAS(FS10_P, U5.15) 567 ALIAS(FS09_P, U5.16) 568 ALIAS(FS08_P, U5.19) 569 ALIAS(MLATCH_P, U5.11) 570 NET_C(U5.1, GND) 571 572 ALIAS(FS07_P, U6.2) 573 ALIAS(FS06_P, U6.5) 574 ALIAS(FS05_P, U6.6) 575 ALIAS(FS04_P, U6.9) 576 ALIAS(FS03_P, U6.12) 577 ALIAS(FS02_P, U6.15) 578 ALIAS(FS01_P, U6.16) 579 ALIAS(FS00_P, U6.19) 580 NET_C(U6.11, MLATCH_P) 581 NET_C(U6.1, GND) 582 583 // 584 // Page 1, bottom 585 // 586 587 NET_C(I_OUT_0, U2.3) 588 NET_C(U2.4, U2.5) 589 ALIAS(LATCH_CLK_P, U2.6) 590 591 NET_C(I_OUT_1, U1.11) 592 NET_C(U1.10, U1.9) 593 NET_C(U1.8, U7.11) 594 595 ALIAS(LOUD_EXP_M, U7.2) 596 ALIAS(SOFT_EXP_M, U7.5) 597 ALIAS(THRUST_M, U7.6) 598 ALIAS(FIRE_M, U7.9) 599 ALIAS(CAPTURE_M, U7.12) 600 ALIAS(NUKE_P, U7.15) 601 ALIAS(PHOTON_M, U7.16) 602 HINT(U7.19, NC) 603 NET_C(U7.1, GND) 604 605 NET_C(HIA_P, U19.4, U19.1) 606 ALIAS(MACLK_M, U19.2) 607 ALIAS(_227KC_P, U19.3) 608 ALIAS(MBCLK_P, U19.5) 609 ALIAS(MBCLK_M, U19.6) 610 611 NET_C(HIA_P, U19.10, U19.13) 612 NET_C(MBCLK_P, U19.12) 613 ALIAS(_227KC_M, U19.11) 614 ALIAS(MACLK_P, U19.9) 615 NET_C(U19.8, MACLK_M, U20.11) 616 617 NET_C(HIA_P, U16.8, U16.11, U16.10) 618 NET_C(U16.9, U20.9, U22.8) 619 ALIAS(DMUSIC_P, U16.5) 620 HINT(U16.6, NC) 621 622 NET_C(HIA_P, U20.10) 623 ALIAS(MCARRY_P, U20.12) 624 NET_C(R162.1, I_V5) 625 NET_C(R162.2, U20.13) 626 ALIAS(MLOAD_M, U20.8) 627 628 NET_C(MBCLK_M, U21.13) 629 HINT(U21.8, NC) 630 NET_C(U21.9, U22.11, U22.12) 631 HINT(U21.10, NC) 632 HINT(U21.11, NC) 633 NET_C(U21.12, U20.6, U22.9) 634 635 NET_C(HIA_P, U20.2, U20.4) 636 NET_C(LATCH_CLK_P, U20.3) 637 ALIAS(KILL_FLAG_M, U20.1) 638 HINT(U20.5, NC) 639 640 NET_C(U22.13, U23.10) 641 NET_C(U22.10, U23.12) 642 NET_C(MBCLK_P, U23.11) 643 NET_C(HIA_P, U23.13) 644 HINT(U23.8, NC) 645 NET_C(U23.9, U23.2, MLATCH_P) 646 647 NET_C(HIA_P, U23.4) 648 NET_C(MACLK_P, U23.3) 649 NET_C(I_V5, R163.1) 650 NET_C(R163.2, U23.1) 651 HINT(U23.5, NC) 652 NET_C(U23.6, KILL_FLAG_M) 653 654 // 655 // Page 1, middle 656 // 657 658 NET_C(FS11_P, U8.6) 659 NET_C(FS10_P, U8.5) 660 NET_C(FS09_P, U8.4) 661 NET_C(FS08_P, U8.3) 662 NET_C(HIB_P, U8.1) 663 NET_C(MEN_P, U8.7) 664 NET_C(MLOAD_M, U8.9) 665 NET_C(MBCLK_P, U8.2) 666 NET_C(U8.10, U9.15) 667 NET_C(U8.15, MCARRY_P) 668 HINT(U8.11, NC) 669 HINT(U8.12, NC) 670 HINT(U8.13, NC) 671 HINT(U8.14, NC) 672 673 NET_C(FS07_P, U9.6) 674 NET_C(FS06_P, U9.5) 675 NET_C(FS05_P, U9.4) 676 NET_C(FS04_P, U9.3) 677 NET_C(HIB_P, U9.1) 678 NET_C(MEN_P, U9.7) 679 NET_C(MLOAD_M, U9.9) 680 NET_C(MACLK_P, U9.2) 681 NET_C(U9.10, U10.15) 682 HINT(U9.11, NC) 683 HINT(U9.12, NC) 684 HINT(U9.13, NC) 685 HINT(U9.14, NC) 686 687 NET_C(FS03_P, U10.6) 688 NET_C(FS02_P, U10.5) 689 NET_C(FS01_P, U10.4) 690 NET_C(FS00_P, U10.3) 691 NET_C(HIB_P, U10.1) 692 NET_C(MLOAD_M, U10.9) 693 NET_C(MBCLK_M, U10.2) 694 NET_C(MEN_P, U10.7, U10.10) 695 HINT(U10.11, NC) 696 HINT(U10.12, NC) 697 HINT(U10.13, NC) 698 HINT(U10.14, NC) 699 700 // 701 // Page 1, top-right 702 // 703 704 NET_C(GND, U11.6, U11.4, U11.3) 705 NET_C(HIB_P, U11.5, U11.1, U11.7) 706 ALIAS(NLOAD_M, U11.9) 707 ALIAS(NBCLK_P, U11.2) 708 NET_C(U11.10, U12.15) 709 NET_C(U11.15, U15.12) 710 HINT(U11.11, NC) 711 HINT(U11.12, NC) 712 HINT(U11.13, NC) 713 HINT(U11.14, NC) 714 715 NET_C(GND, U12.6, U12.5, U12.4) 716 NET_C(HIB_P, U12.3, U12.1, U12.7, U12.10) 717 NET_C(NLOAD_M, U12.9) 718 ALIAS(NACLK_M, U12.2) 719 HINT(U12.11, NC) 720 HINT(U12.12, NC) 721 HINT(U12.13, NC) 722 HINT(U12.14, NC) 723 724 NET_C(HIB_P, U15.10) 725 ALIAS(NBCLK_M, U15.11) 726 NET_C(I_V5, R164.1) 727 NET_C(R164.2, U15.13) 728 NET_C(U15.9, U16.12) 729 NET_C(U15.8, NLOAD_M) 730 731 NET_C(U16.1, U16.4, U16.13, HIB_P) 732 NET_C(U16.3, U18.2) 733 HINT(U16.2, NC) 734 735 NET_C(GND, U17.2) 736 NET_C(NBCLK_P, U17.1) 737 NET_C(U17.6, U17.13) 738 HINT(U17.5, NC) 739 HINT(U17.4, NC) 740 HINT(U17.3, NC) 741 742 NET_C(GND, U17.12) 743 HINT(U17.8, NC) 744 NET_C(U17.9, U18.1) 745 HINT(U17.10, NC) 746 HINT(U17.11, NC) 747 748 NET_C(U18.3, R7.1, R8.2) 749 NET_C(R7.2, C3.1) 750 ALIAS(SJ, C3.2) 751 NET_C(R8.1, I_V5) 752 753 // 754 // Page 1, middle-right 755 // 756 757 NET_C(I_V5, U13.8, R4.2) 758 NET_C(R4.1, U13.7, R5.2) 759 NET_C(R5.1, U13.2, U13.6, C1.2) 760 NET_C(C1.1, GND) 761 NET_C(NUKE_P, U13.4) 762 NET_C(U13.1, GND) 763 NET_C(U13.5, C2.2) 764 NET_C(C2.1, GND) 765 NET_C(U13.3, R6.2, U2.1) 766 NET_C(R6.1, GND) 767 NET_C(U2.2, U2.13, U14.3) 768 769 NET_C(HIB_P, U14.1, U14.13) 770 NET_C(U14.6, NACLK_M) 771 NET_C(U14.5, U14.12) 772 NET_C(U14.2, U14.8, NBCLK_M) 773 NET_C(HIB_P, U14.4, U14.10) 774 NET_C(U14.9, NBCLK_P) 775 NET_C(U2.12, U14.11) 776 777 #if (HLE_MUSIC_CLOCK) 778 // 779 // The 20MHz clock (Y1) is divided by 4 via a pair 780 // of JK flip-flops (U25) to 5MHz. That signal is only 781 // used to clock a 74LS163 counter (U26) that divides 782 // the clock by 9 via a preset value. It then goes 783 // through another JK flip-flop (U27) for another 784 // divide by 2, ending up at 277778Hz. No sense in 785 // running all this manually. 786 // 787 CLOCK(MUSICCLK, 277778) 788 NET_C(MUSICCLK.VCC, I_V5) 789 NET_C(MUSICCLK.GND, GND) 790 NET_C(_227KC_P, MUSICCLK.Q) 791 NET_C(MUSICCLK.Q, U24.13) 792 NET_C(_227KC_M, U24.12) 793 NET_C(GND, R9.1, R9.2, R10.1, R10.2, R161.1, R161.2, C4.1, C4.2) 794 NET_C(GND, U15.1, U15.2, U15.3, U15.4) 795 NET_C(GND, U24.1, U24.5) 796 NET_C(GND, U25.1, U25.2, U25.3, U25.4, U25.10, U25.11, U25.12, U25.13) 797 NET_C(GND, U26.1, U26.2, U26.3, U26.4, U26.5, U26.6, U26.7, U26.9, U26.10) 798 NET_C(GND, U27.1, U27.4, U27.12) 799 NET_C(HIC_P, U27.13) 800 801 #else 802 803 // 804 // Page 2, top-left (clock) 805 // 806 807 // 808 // This is just here for documentation; the crystal is 809 // not modelled for this circuit. 810 // 811 NET_C(U24.5, R9.1, C4.1) 812 NET_C(U24.6, R9.2, Y1.1) 813 NET_C(Y1.2, R10.1, U24.1) 814 NET_C(R10.2, U24.2, C4.2, U24.13) 815 NET_C(U24.12, U25.1) 816 NET_C(HIC_P, U25.3, U25.2, U25.4, U25.11, U25.12, U25.10) 817 NET_C(U25.5, U25.13) 818 ALIAS(_5MC_P, U25.9) 819 ALIAS(_5MC_M, U25.8) 820 821 // 822 // Page 2, middle-left 823 // 824 825 NET_C(HIC_P, U26.5, U26.3, U26.1, U26.10, U26.7) 826 NET_C(GND, U26.6, U26.4) 827 NET_C(_5MC_P, U26.2) 828 HINT(U26.11, NC) 829 HINT(U26.12, NC) 830 HINT(U26.13, NC) 831 HINT(U26.14, NC) 832 NET_C(U26.9, U27.12, U15.6) 833 NET_C(U26.15, U15.2) 834 835 NET_C(_5MC_M, U15.3) 836 NET_C(HIC_P, U15.4) 837 NET_C(I_V5, R161.1) 838 NET_C(R161.2, U15.1) 839 840 NET_C(HIC_P, U27.1, U27.4, U27.13) 841 NET_C(_227KC_P, U27.3) 842 NET_C(_227KC_M, U27.2) 843 #endif 844 845 // 846 // Page 2, top-middle 847 // 848 849 NET_C(MACLK_P, U29.8) 850 ALIAS(IN_M, U29.2) 851 NET_C(U29.2, U29.1) 852 ALIAS(RN_M, U29.9) 853 NET_C(U29.9, U28.9, U30.9) 854 NET_C(U29.13, U28.1, U28.2) 855 HINT(U29.12, NC) 856 HINT(U29.11, NC) 857 HINT(U29.10, NC) 858 HINT(U29.6, NC) 859 HINT(U29.5, NC) 860 HINT(U29.4, NC) 861 HINT(U29.3, NC) 862 863 NET_C(MACLK_P, U28.8) 864 NET_C(U28.13, U30.1, U30.2) 865 HINT(U28.12, NC) 866 HINT(U28.11, NC) 867 HINT(U28.10, NC) 868 HINT(U28.6, NC) 869 HINT(U28.5, NC) 870 HINT(U28.4, NC) 871 HINT(U28.3, NC) 872 873 NET_C(MACLK_P, U30.8) 874 NET_C(U30.13, U18.10) 875 NET_C(U30.6, U18.5) 876 NET_C(U30.5, U18.4) 877 NET_C(U30.3, U18.9) 878 HINT(U30.12, NC) 879 HINT(U30.11, NC) 880 HINT(U30.10, NC) 881 HINT(U30.4, NC) 882 883 #if (HLE_NOISE_CONVERT) 884 // 885 // The TTL-to-analog conversion takes a noticeable 886 // amount of time, so just do it directly. The 4.2 887 // P-P value is observed from the original netlist. 888 // 889 AFUNC(NOISECONV, 1, "if(A0>2.5,-4.2,4.2)") 890 NET_C(U30.13, NOISECONV.A0) 891 ALIAS(NOISE, NOISECONV.Q) 892 NET_C(GND, C5.1, C5.2, R11.1, R11.2, R12.1, R12.2, R13.1, R13.2, R14.1, R14.2, U32.2, U32.3) 893 #else 894 NET_C(U30.13, R11.1, C5.1) 895 NET_C(R11.2, I_V5) 896 NET_C(C5.2, R14.2, U32.3) 897 NET_C(R14.1, GND) 898 NET_C(U32.2, R12.2, R13.1) 899 NET_C(R12.1, GND) 900 NET_C(R13.2, U32.6) 901 ALIAS(NOISE, R13.2) 902 #endif 903 904 NET_C(U18.6, U18.12) 905 NET_C(U18.8, U18.13) 906 NET_C(U18.11, U31.12, U31.2, U24.9) 907 NET_C(U24.8, IN_M) 908 909 NET_C(MACLK_M, U31.1) 910 NET_C(U31.6, U31.13) 911 HINT(U31.5, NC) 912 HINT(U31.4, NC) 913 HINT(U31.3, NC) 914 NET_C(U31.10, U24.11) 915 HINT(U31.8, NC) 916 HINT(U31.9, NC) 917 HINT(U31.11, NC) 918 NET_C(U24.10, RN_M) 919 920 // 921 // Page 2, bottom-middle and top-right (fire) 922 // 923 924 NET_C(FIRE_M, R113.1, R114.1) 925 NET_C(R113.2, I_V5, R115.2, Q14.E) 926 NET_C(R114.2, R115.1, Q14.B) 927 NET_C(Q14.C, R116.2, R117.2, Q15.E) 928 NET_C(R116.1, I_VM15) 929 NET_C(R117.1, R118.1, GND) 930 NET_C(R118.2, Q15.B) 931 NET_C(Q15.C, C26.1, R108.1, R119.1) 932 NET_C(C26.2, I_VM15) 933 NET_C(R119.2, U46.5) 934 NET_C(R108.2, U44.5) 935 936 NET_C(NOISE, R98.2) 937 NET_C(R98.1, R99.2, R100.1) 938 NET_C(R99.1, GND) 939 NET_C(R100.2, U43.2, R104.1, R102.1, R101.1) 940 NET_C(U43.3, GND) 941 NET_C(R104.2, U43.6, R105.1) 942 NET_C(R105.2, R106.2, U44.3) 943 NET_C(R106.1, GND) 944 NET_C(U44.2, R107.2) 945 NET_C(R107.1, GND) 946 NET_C(U44.6, C23.2, R109.2, U45.3) 947 NET_C(C23.1, GND) 948 NET_C(R109.1, GND) 949 NET_C(U45.6, U45.2, R110.1, R103.1, R102.2) 950 NET_C(R103.2, C24.1) 951 NET_C(C24.2, SJ) 952 NET_C(R110.2, R111.2, U46.3) 953 NET_C(R111.1, R112.1, GND) 954 NET_C(R112.2, U46.2) 955 NET_C(U46.6, C25.2, R120.2, U47.3) 956 NET_C(C25.1, R120.1, GND) 957 NET_C(U47.2, U47.6, R101.2) 958 959 // 960 // Page 2, bottom-right (AS0-2) 961 // 962 963 NET_C(I_V5, R121.1) 964 NET_C(R121.2, DMUSIC_P, R122.1) 965 NET_C(R122.2, C27.1) 966 NET_C(C27.2, R123.2, U48.2) 967 NET_C(R123.1, GND, R124.1) 968 NET_C(R124.2, U48.3) 969 NET_C(R148.2, R140.2, R132.2, U48.5) 970 ALIAS(CS, U48.6) 971 972 NET_C(AS2_M, R125.1, R126.1) 973 NET_C(R125.2, I_V5, R127.2, Q16.E) 974 NET_C(R126.2, R127.1, Q16.B) 975 NET_C(Q16.C, R128.2, R129.2, Q17.E) 976 NET_C(R128.1, I_VM15) 977 NET_C(R129.1, R130.1, GND) 978 NET_C(R130.2, Q17.B) 979 NET_C(Q17.C, C28.1, R132.1) 980 NET_C(C28.2, I_VM15) 981 982 NET_C(AS1_M, R133.1, R134.1) 983 NET_C(R133.2, I_V5, R135.2, Q18.E) 984 NET_C(R134.2, R135.1, Q18.B) 985 NET_C(Q18.C, R136.2, R137.2, Q19.E) 986 NET_C(R136.1, I_VM15) 987 NET_C(R137.1, R138.1, GND) 988 NET_C(R138.2, Q19.B) 989 NET_C(Q19.C, R139.1) 990 NET_C(R139.2, C29.1, R140.1) 991 NET_C(C29.2, I_VM15) 992 993 NET_C(AS0_M, R141.1, R142.1) 994 NET_C(R141.2, I_V5, R143.2, Q20.E) 995 NET_C(R142.2, R143.1, Q20.B) 996 NET_C(Q20.C, R144.2, R145.2, Q21.E) 997 NET_C(R144.1, I_VM15) 998 NET_C(R145.1, R146.1, GND) 999 NET_C(R146.2, Q21.B) 1000 NET_C(Q21.C, R147.1) 1001 NET_C(R147.2, C30.1, R148.1) 1002 NET_C(C30.2, I_VM15) 1003 1004 // 1005 // Page 3, top-left (explosions) 1006 // 1007 1008 NET_C(NOISE, R15.1) 1009 NET_C(R15.2, C6.2, R16.1) 1010 NET_C(C6.1, GND) 1011 NET_C(R16.2, C7.2, R17.1) 1012 NET_C(C7.1, GND) 1013 NET_C(R17.2, R18.2, U33.2) 1014 NET_C(R18.1, GND) 1015 NET_C(U33.3, R19.2) 1016 NET_C(R19.1, GND) 1017 NET_C(CS, U33.6) 1018 1019 NET_C(LOUD_EXP_M, R20.1, R21.1) 1020 NET_C(R20.2, I_V5, R22.2, Q1.E) 1021 NET_C(R21.2, R22.1, Q1.B) 1022 NET_C(Q1.C, R23.2, R24.2, Q2.E) 1023 NET_C(R23.1, I_VM15) 1024 NET_C(R24.1, GND) 1025 NET_C(Q2.B, R25.2) 1026 NET_C(R25.1, GND) 1027 NET_C(Q2.C, C8.1, R26.1) 1028 NET_C(C8.2, I_VM15) 1029 NET_C(R26.2, U33.5) 1030 1031 NET_C(SOFT_EXP_M, R27.1, R28.1) 1032 NET_C(R27.2, I_V5, R29.2, Q3.E) 1033 NET_C(R28.2, R29.1, Q3.B) 1034 NET_C(Q3.C, R30.2, R31.2, Q4.E) 1035 NET_C(R30.1, I_VM15) 1036 NET_C(R31.1, GND) 1037 NET_C(Q4.B, R32.2) 1038 NET_C(R32.1, GND) 1039 NET_C(Q4.C, C9.1, R33.1) 1040 NET_C(C9.2, I_VM15) 1041 NET_C(R33.2, U33.5) 1042 1043 // 1044 // Page 3, bottom-left (thrust) 1045 // 1046 1047 NET_C(NOISE, R34.1) 1048 NET_C(R34.2, C10.2, R35.1) 1049 NET_C(C10.1, GND) 1050 NET_C(R35.2, C11.2, R36.1) 1051 NET_C(C11.1, GND) 1052 NET_C(R36.2, R37.2, U34.2) 1053 NET_C(R37.1, GND) 1054 NET_C(U34.3, R38.2) 1055 NET_C(R38.1, GND) 1056 NET_C(U34.6, CS) 1057 1058 NET_C(THRUST_M, R39.1, R40.1) 1059 NET_C(R39.2, I_V5, R41.2, Q5.E) 1060 NET_C(R40.2, R41.1, Q5.B) 1061 NET_C(Q5.C, R42.2, R43.2, Q6.E) 1062 NET_C(R42.1, I_VM15) 1063 NET_C(R43.1, GND) 1064 NET_C(Q6.B, R44.2) 1065 NET_C(R44.1, GND) 1066 NET_C(Q6.C, R45.1) 1067 NET_C(R45.2, C12.1, R46.1) 1068 NET_C(C12.2, I_VM15) 1069 NET_C(R46.2, U34.5) 1070 1071 // 1072 // Page 3, top-middle/right (capture) 1073 // 1074 1075 NET_C(CAPTURE_M, R82.1, R83.1, U21.2) 1076 NET_C(R82.2, I_V5, R84.2, Q11.E) 1077 NET_C(R83.2, R84.1, Q11.B) 1078 NET_C(Q11.C, R85.2, R86.2, R87.1) 1079 NET_C(R85.1, I_VM15) 1080 NET_C(R86.1, GND) 1081 NET_C(R87.2, Q12.B) 1082 NET_C(Q12.E, GND) 1083 NET_C(Q12.C, R88.1) 1084 NET_C(R88.2, R89.1, C18.2, R90.2, C19.1) 1085 NET_C(R89.2, I_V15) 1086 NET_C(C18.1, GND) 1087 NET_C(R90.1, GND) 1088 1089 #if (HLE_CAPTURE_VCO) 1090 // 1091 // The capture VCO actually doesn't sound bad at default 1092 // settings, but still takes up a lot of horsepower, so 1093 // HLE it as usual. The mappings aren't as good as they 1094 // usually are, but the sound is short and the result is 1095 // pretty indistinguishable from reality, so we'll go 1096 // with it. 1097 // 1098 // R2 = 0.87013: HP = (0.000085296*A0) - 0.000965124 1099 // R2 = 0.91754: HP = (0.0000395501*A0*A0) - (0.000953905*A0) + 0.00585023 1100 // R2 = 0.91858: HP = (-0.0000119561*A0*A0*A0) + (0.000513446*A0*A0) - (0.00720853*A0) + 0.0333386 1101 // R2 = 0.93063: HP = (-0.000085348*A0*A0*A0*A0) + (0.00450954*A0*A0*A0) - (0.089245*A0*A0) + (0.784128*A0) - 2.580951 1102 // R2 = 0.84993: HP = (0.00000301512*A0*A0*A0*A0*A0) - (0.000286000*A0*A0*A0*A0) + (0.0098476*A0*A0*A0) - (0.160207*A0*A0) + (1.255519*A0) - 3.832746 1103 // 1104 VARCLOCK(CAPTURECLK, 1, "max(0.000001,min(0.1,(-0.0000119561*A0*A0*A0) + (0.000513446*A0*A0) - (0.00720853*A0) + 0.0333386))") 1105 NET_C(CAPTURECLK.GND, GND) 1106 NET_C(CAPTURECLK.VCC, I_V5) 1107 NET_C(CAPTURECLK.Q, U21.1) 1108 NET_C(CAPTURECLK.A0, C19.1) 1109 NET_C(GND, R91.1, R91.2, R92.1, R92.2, R93.1, R93.2, R94.1, R94.2, C19.2, C20.1, C20.2, C21.1, C21.2, D7.A, D7.K, D8.A, D8.K) 1110 #else 1111 NET_C(R88.2, U42.5) 1112 NET_C(C19.2, U42.6, R91.1) 1113 NET_C(R91.2, I_V15, U42.8) 1114 NET_C(U42.7, C20.2) 1115 NET_C(C20.1, GND) 1116 NET_C(U42.1, GND) 1117 NET_C(U42.3, C21.1) 1118 NET_C(C21.2, D7.K, R92.1) 1119 NET_C(D7.A, GND) 1120 NET_C(R92.2, Q13.B) 1121 NET_C(Q13.C, R93.1, U21.1) 1122 NET_C(R93.2, I_V5) 1123 NET_C(Q13.E, D8.K, R94.2) 1124 NET_C(D8.A, GND) 1125 NET_C(R94.1, I_VM15) 1126 #endif 1127 1128 NET_C(U21.3, R95.1) 1129 HINT(U21.6, NC) 1130 HINT(U21.5, NC) 1131 HINT(U21.4, NC) 1132 NET_C(R95.2, R97.2, R96.1) 1133 NET_C(R97.1, GND) 1134 NET_C(R96.2, C22.1) 1135 NET_C(C22.2, SJ) 1136 1137 // 1138 // Page 3, bottom-middle+right (photon) 1139 // 1140 1141 NET_C(U35.1, GND) 1142 NET_C(U35.6, U35.2, R48.1, C13.2) 1143 NET_C(C13.1, GND) 1144 NET_C(R48.2, U35.7, R47.1) 1145 NET_C(R47.2, U35.8, U35.4, R49.2, R51.2, I_V5, Q7.E) 1146 NET_C(U35.5, C14.2) 1147 NET_C(C14.1, GND) 1148 NET_C(U35.3, R49.1, R50.1) 1149 NET_C(R50.2, R51.1, Q7.B) 1150 NET_C(Q7.C, R52.2, R54.2, R53.1) 1151 NET_C(R52.1, I_VM15) 1152 NET_C(R54.1, GND) 1153 NET_C(R53.2, Q8.B) 1154 NET_C(Q8.E, GND) 1155 NET_C(Q8.C, R58.1) 1156 NET_C(R58.2, R59.1, R60.2, C15.1, U36.3) 1157 NET_C(R59.2, I_V15) 1158 NET_C(R60.1, GND) 1159 NET_C(C15.2, GND) 1160 NET_C(U36.2, U36.6, R61.2) 1161 ALIAS(VP, R61.2) 1162 NET_C(R61.1, R62.1, U37.2) 1163 NET_C(R62.2, U37.6) 1164 ALIAS(VN, R62.2) 1165 NET_C(U37.3, GND) 1166 1167 NET_C(VP, R63.1) 1168 NET_C(R63.2, U38.3, R64.1) 1169 NET_C(R64.2, U38.6, R65.1) 1170 NET_C(U38.2, R71.1, C16.2, U39.2) 1171 NET_C(C16.1, GND) 1172 1173 #if (HLE_PHOTON_VCO) 1174 // 1175 // The PHOTON VCO is modulated by the 555 timer U35, 1176 // fed through some capacitors and an op-amp to 1177 // produce a periodic charge/discharge curve. The 1178 // output of the op-amp U36 tracks the final 1179 // frequency pretty closely, but only if charge and 1180 // discharge curves are considered separately. Use 1181 // the raw U35.3 output as a switch to pick the 1182 // appropriate curve. 1183 // 1184 // U35.3 on: 1185 // R2 = 0.95303: HP = (0.000454865*A0) - 0.000727100 1186 // R2 = 0.97158: HP = (0.0000320398*A0*A0) + (0.000096187*A0) + 0.000101501 1187 // R2 = 0.99149: HP = (0.0000173739*A0*A0*A0) - (0.000265948*A0*A0) + (0.00163589*A0) - 0.00222259 1188 // R2 = 0.99201: HP = (-0.00000151250*A0*A0*A0*A0) + (0.0000522525*A0*A0*A0) - (0.000547752*A0*A0) + (0.00256844*A0) - 0.00327534 1189 // R2 = 0.99549: HP = (0.00000220778*A0*A0*A0*A0*A0) - (0.000065312*A0*A0*A0*A0) + (0.000753266*A0*A0*A0) - (0.00418112*A0*A0) + (0.0113844*A0) - 0.0112392 1190 // 1191 // U35.3 off: 1192 // R2 = 0.18174: HP = (0.000065384*A0) + 0.000468783 1193 // R2 = 0.83543: HP = (-0.0000468095*A0*A0) + (0.000655196*A0) - 0.000641642 1194 // R2 = 0.99434: HP = (-0.0000088969*A0*A0*A0) + (0.000127464*A0*A0) - (0.000276787*A0) + 0.000661774 1195 // R2 = 0.99978: HP = (-0.000000655767*A0*A0*A0*A0) + (0.0000088937*A0*A0*A0) - (0.0000336865*A0*A0) + (0.000281719*A0) + 0.0000419612 1196 // R2 = 0.99987: HP = (0.0000000525584*A0*A0*A0*A0*A0) - (0.00000241385*A0*A0*A0*A0) + (0.0000304913*A0*A0*A0) - (0.000153608*A0*A0) + (0.000579685*A0) - 0.000223579 1197 // 1198 VARCLOCK(PHOTONCLK, 2, "max(0.000001,min(0.1,if(A1>2.5,(0.0000173739*A0*A0*A0) - (0.000265948*A0*A0) + (0.00163589*A0) - 0.00222259,(-0.0000088969*A0*A0*A0) + (0.000127464*A0*A0) - (0.000276787*A0) + 0.000661774)))") 1199 NET_C(PHOTONCLK.GND, GND) 1200 NET_C(PHOTONCLK.VCC, I_V5) 1201 NET_C(PHOTONCLK.Q, PHOTONENV.A0) 1202 NET_C(PHOTONCLK.A0, U36.6) 1203 NET_C(PHOTONCLK.A1, U35.3) 1204 AFUNC(PHOTONENV, 1, "if(A0>2.5,0.0038,-0.0038)") 1205 NET_C(PHOTONENV.Q, U41.2) 1206 NET_C(GND, U40.2, U40.3, R65.2, R66.1, R66.2, R69.2, R70.1, R70.2, R71.2, R72.1, R72.2, R73.2, D5.A, D5.K, D6.A, D6.K) 1207 #else 1208 NET_C(R65.2, U40.3, R70.1, R69.2) 1209 NET_C(U40.2, GND, D5.A) 1210 NET_C(D5.K, D6.K) 1211 NET_C(D6.A, R71.2, R72.2, R66.2) 1212 NET_C(U40.6, R66.1, R70.2) 1213 NET_C(R72.1, R73.2, U41.2) 1214 #endif 1215 1216 NET_C(R73.1, GND) 1217 NET_C(U41.3, R74.2) 1218 NET_C(R74.1, GND) 1219 NET_C(VN, R67.1) 1220 NET_C(R67.2, U39.3, R68.1) 1221 NET_C(R68.2, U39.6, R69.1) 1222 1223 NET_C(PHOTON_M, R75.1, R76.1) 1224 NET_C(R75.2, I_V5, R77.2, Q9.E) 1225 NET_C(R76.2, R77.1, Q9.B) 1226 NET_C(Q9.C, R78.2, R79.2, Q10.E) 1227 NET_C(R78.1, I_VM15) 1228 NET_C(R79.1, GND) 1229 NET_C(Q10.B, R80.2) 1230 NET_C(R80.1, GND) 1231 NET_C(Q10.C, C17.1, R81.1) 1232 NET_C(C17.2, I_VM15) 1233 NET_C(R81.2, U41.5) 1234 1235 NET_C(U41.6, CS, R149.2, U49.3) 1236 NET_C(R149.1, GND) 1237 NET_C(U49.2, U49.6, C31.1) 1238 NET_C(C31.2, R150.1) 1239 NET_C(R150.2, SJ, U50.2, R151.1) 1240 NET_C(U50.3, GND) 1241 NET_C(R151.2, U50.6) 1242 ALIAS(OUTPUT, R151.2) 1243 1244 // 1245 // Unconnected inputs 1246 // 1247 1248 NET_C(GND, U2.8, U2.10, U22.2, U22.3, U22.5, U22.6, U24.3, U27.8, U27.9, U27.10, U27.11) 1249 1250 // 1251 // Unconnected outputs 1252 // 1253 1254 HINT(U2.9, NC) 1255 HINT(U2.11, NC) 1256 HINT(U24.4, NC) 1257 1258 #if (ENABLE_FRONTIERS) 1259 // 1260 // Isolate the NOISE consumers from one another; the first one 1261 // in particular is a big win 1262 // 1263 OPTIMIZE_FRONTIER(R100.1, RES_M(1), 50) 1264 OPTIMIZE_FRONTIER(R15.1, RES_M(1), 50) 1265 OPTIMIZE_FRONTIER(R34.1, RES_M(1), 50) 1266 1267 // 1268 // Isolate the CS sounds from the rest of the mixer (huge!) 1269 // 1270 OPTIMIZE_FRONTIER(U49.3, RES_M(1), 50) 1271 #endif 1272 1273 NETLIST_END() 1274