1 // license:BSD-3-Clause 2 // copyright-holders:Ryan Holtz 3 4 // 5 // Netlist for Star Cruiser 6 // 7 // Derived from the schematics in the Star Cruiser manual. 8 // 9 // Known problems/issues: 10 // 11 // * Uses HLE noise due to abusing a 2N4124 in breakdown as a noise source. 12 // 13 14 #include "netlist/devices/net_lib.h" 15 16 // 17 // Main netlist 18 // 19 20 NETLIST_START(starcrus) 21 22 SOLVER(Solver, 48000) 23 ANALOG_INPUT(V12, 12) 24 ANALOG_INPUT(V5, 5) 25 ANALOG_INPUT(VM5, -5) 26 ALIAS(VCC, V5) 27 28 TTL_INPUT(EXPLODE_1, 1) // active low 29 TTL_INPUT(EXPLODE_2, 1) // active low 30 TTL_INPUT(LAUNCH_1, 1) // active low 31 TTL_INPUT(LAUNCH_2, 1) // active low 32 TTL_INPUT(ENGINE_1, 1) // active low 33 TTL_INPUT(ENGINE_2, 1) // active low 34 35 NET_C(GND, EXPLODE_1.GND, EXPLODE_2.GND, LAUNCH_1.GND, LAUNCH_2.GND, ENGINE_1.GND, ENGINE_2.GND) 36 NET_C(V5, EXPLODE_1.VCC, EXPLODE_2.VCC, LAUNCH_1.VCC, LAUNCH_2.VCC, ENGINE_1.VCC, ENGINE_2.VCC) 37 38 RES(R22, 470) 39 POT(R23, RES_K(2.5)) 40 RES(R24, RES_K(10)) 41 RES(R25, RES_K(15)) 42 RES(R26, RES_K(2.2)) 43 RES(R28, RES_K(100)) 44 RES(R29, RES_K(220)) 45 RES(R30, RES_K(220)) 46 RES(R31, RES_K(470)) 47 RES(R32, RES_K(100)) 48 RES(R33, RES_K(2.2)) 49 RES(R34, RES_K(2.2)) 50 RES(R35, RES_K(2.2)) 51 RES(R36, RES_K(2.2)) 52 RES(R37, 220) 53 RES(R38, RES_K(10)) 54 RES(R39, RES_K(10)) 55 RES(R40, RES_K(56)) 56 RES(R41, RES_K(100)) 57 RES(R42, RES_K(1)) 58 RES(R43, RES_K(100)) 59 RES(R44, RES_K(2.2)) 60 RES(R45, RES_K(2.2)) 61 RES(R46, RES_K(10)) 62 RES(R47, RES_K(3)) 63 RES(R48, RES_K(10)) 64 RES(R49, 220) 65 RES(R50, RES_K(150)) 66 RES(R51, RES_K(10)) 67 RES(R52, RES_K(10)) 68 RES(R53, RES_K(2.2)) 69 RES(R54, RES_K(10)) 70 RES(R55, 220) 71 RES(R56, RES_K(2.2)) 72 RES(R57, RES_K(2.2)) 73 RES(R58, RES_K(2.2)) 74 RES(R59, RES_K(10)) 75 RES(R60, RES_K(3)) 76 RES(R61, RES_K(10)) 77 RES(R62, 220) 78 RES(R63, RES_K(150)) 79 RES(R64, RES_K(10)) 80 RES(R65, RES_K(10)) 81 RES(R66, RES_K(2.2)) 82 RES(R67, RES_K(10)) 83 RES(R68, 220) 84 RES(R69, RES_K(2.2)) 85 RES(R70, RES_K(47)) 86 RES(R71, RES_K(100)) 87 RES(R72, RES_K(6.8)) 88 RES(R73, RES_K(6.8)) 89 RES(R74, RES_K(3.3)) 90 POT(R75, RES_K(50)) 91 RES(R76, RES_K(22)) 92 RES(R77, 470) 93 94 CAP(C12, CAP_U(0.1)) 95 //CAP(C13, CAP_U(3.3)) 96 CAP(C14, CAP_U(0.1)) 97 CAP(C16, CAP_U(1.0)) 98 CAP(C17, CAP_U(0.47)) 99 CAP(C18, CAP_U(39)) 100 CAP(C19, CAP_U(4.7)) 101 CAP(C20, CAP_U(22)) 102 CAP(C21, CAP_U(0.15)) 103 CAP(C22, CAP_U(0.047)) 104 CAP(C23, CAP_U(1.0)) 105 CAP(C24, CAP_U(22)) 106 CAP(C25, CAP_U(0.15)) 107 CAP(C26, CAP_U(0.047)) 108 CAP(C27, CAP_U(1.0)) 109 CAP(C28, CAP_P(470)) 110 CAP(C29, CAP_U(4.7)) 111 CAP(C30, CAP_U(4.7)) 112 CAP(C31, CAP_U(4.7)) 113 CAP(C32, CAP_U(0.1)) 114 115 QBJT_EB(Q6, "2N4124") 116 //QBJT_EB(Q7, "2N4124") 117 QBJT_EB(Q8, "2N4124") 118 QBJT_EB(Q9, "2N4124") 119 QBJT_EB(Q10, "2N4126") 120 QBJT_EB(Q11, "2N4124") 121 QBJT_EB(Q12, "2N4124") 122 QBJT_EB(Q13, "2N4124") 123 QBJT_EB(Q14, "2N4124") 124 QBJT_EB(Q15, "2N4126") 125 QBJT_EB(Q16, "2N4124") 126 QBJT_EB(Q17, "2N4124") 127 QBJT_EB(Q18, "2N4124") 128 QBJT_EB(Q19, "2N4126") 129 QBJT_EB(Q20, "2N4124") 130 QBJT_EB(Q21, "2N4124") 131 132 UA741_DIP8(U1) 133 UA741_DIP8(U2) 134 UA741_DIP8(U5) 135 136 NE566_DIP(U3) 137 NE566_DIP(U4) 138 139 DIODE(CR29, "1N4154") 140 DIODE(CR30, "1N4154") 141 DIODE(CR31, "1N4154") 142 DIODE(CR32, "1N4154") 143 144 TTL_7408_DIP(H6) 145 NET_C(H6.7, GND) 146 NET_C(H6.14, V5) 147 NET_C(ENGINE_1, H6.9) 148 NET_C(ENGINE_2, H6.10) 149 NET_C(EXPLODE_1, H6.4) 150 NET_C(EXPLODE_2, H6.5) 151 NET_C(LAUNCH_1, H6.1, H6.2) 152 NET_C(LAUNCH_2, H6.12, H6.13) 153 154 TTL_7404_INVERT(F8) 155 NET_C(F8.GND, GND) 156 NET_C(F8.VCC, V5) 157 NET_C(H6.6, F8.A) 158 159 // HLE Noise Gen 160 CLOCK(NOISE_CLOCK, 10000) 161 NET_C(NOISE_CLOCK.GND, GND) 162 NET_C(NOISE_CLOCK.VCC, V5) 163 164 SYS_NOISE_MT_N(NOISE, 0.05) 165 NET_C(NOISE.I, NOISE_CLOCK.Q) 166 NET_C(NOISE.1, R24.2) 167 NET_C(NOISE.2, Q6.B) 168 169 // Engine Sound 170 NET_C(H6.8, R26.1) 171 NET_C(R26.2, Q8.B) 172 NET_C(Q8.E, GND) 173 NET_C(Q8.C, R25.1, R70.1) 174 NET_C(R25.2, C14.1) 175 NET_C(C14.2, R23.2, C12.1) 176 NET_C(R23.1, R22.1) 177 NET_C(R22.2, V12) 178 NET_C(R23.3, R24.1, Q6.C) 179 //NET_C(R24.2, Q7.E, C13.1) 180 //NET_C(C13.2, GND) 181 //NET_C(Q7.B, Q7.C, Q6.B) 182 NET_C(Q6.E, GND) 183 NET_C(C12.2, U2.3, R28.1) 184 NET_C(R28.2, GND) 185 NET_C(U2.7, V5) 186 NET_C(U2.4, VM5) 187 NET_C(U2.2, R29.1) 188 NET_C(R29.2, C16.1, R30.1) 189 NET_C(C16.2, GND) 190 NET_C(R30.2, U2.6, R31.1) 191 NET_C(R31.2, C17.1, Q12.C, R32.1, U1.3) 192 NET_C(C17.2, GND) 193 NET_C(R32.2, GND) 194 NET_C(U1.7, V5) 195 NET_C(U1.4, VM5) 196 NET_C(U1.2, R43.1, R42.1) 197 NET_C(R43.2, U1.6, R71.1) 198 NET_C(R42.2, C19.1) 199 NET_C(C19.2, Q13.C) 200 NET_C(Q13.E, GND) 201 NET_C(Q13.B, R41.1, R40.1) 202 NET_C(R41.2, GND) 203 NET_C(R40.2, C18.1, R38.1, R37.1) 204 NET_C(C18.2, GND) 205 NET_C(R38.2, Q11.B) 206 NET_C(Q11.E, GND) 207 NET_C(Q12.E, GND) 208 NET_C(Q11.C, R39.1, Q12.B) 209 NET_C(R39.2, V5) 210 NET_C(R37.2, Q10.C) 211 NET_C(Q10.E, R35.1, V5) 212 NET_C(R35.2, Q10.B, R36.1) 213 NET_C(R36.2, Q9.C) 214 NET_C(Q9.E, GND) 215 NET_C(Q9.B, R34.1) 216 NET_C(R34.2, R33.1, F8.Q) 217 NET_C(R33.2, V5) 218 219 // Launch Sound 1 220 NET_C(H6.3, R44.1) 221 NET_C(R44.2, Q14.B) 222 NET_C(Q14.E, GND) 223 NET_C(Q14.C, R46.1) 224 NET_C(R46.2, Q15.B) 225 NET_C(R46.2, R45.1) 226 NET_C(R45.2, R47.1) 227 NET_C(R45.2, Q15.E) 228 NET_C(R47.2, R48.1) 229 NET_C(R48.2, GND) 230 NET_C(R48.1, Q16.B) 231 NET_C(Q15.C, CR29.A) 232 NET_C(CR29.K, R49.1) 233 NET_C(R49.2, Q16.C) 234 NET_C(Q16.E, R50.1) 235 NET_C(R50.2, GND) 236 NET_C(Q15.E, R51.1) 237 NET_C(Q15.E, V12) 238 NET_C(Q15.E, U3.8) 239 NET_C(R51.2, U3.6) 240 NET_C(Q16.C, C20.1) 241 NET_C(C20.2, GND) 242 NET_C(C20.1, U3.5) 243 NET_C(U3.1, GND) 244 NET_C(U3.7, C21.1) 245 NET_C(C21.2, GND) 246 NET_C(U3.3, C22.1) 247 NET_C(C22.2, R52.1) 248 NET_C(R52.2, GND) 249 NET_C(R52.1, CR30.A) 250 NET_C(CR30.K, R53.1) 251 NET_C(R53.2, Q17.C) 252 NET_C(Q17.E, GND) 253 NET_C(Q17.B, R56.1) 254 NET_C(R56.2, R44.1) 255 NET_C(Q17.C, R54.1) 256 NET_C(R54.2, R55.1) 257 NET_C(R55.2, GND) 258 NET_C(R55.1, C23.1) 259 NET_C(C23.2, GND) 260 NET_C(C23.1, R72.1) 261 262 // Launch Sound 2 263 NET_C(H6.11, R57.1) 264 NET_C(R57.2, Q18.B) 265 NET_C(Q18.E, GND) 266 NET_C(Q18.C, R59.1) 267 NET_C(R59.2, Q19.B) 268 NET_C(R59.2, R58.1) 269 NET_C(R58.2, R60.1) 270 NET_C(R58.2, Q19.E) 271 NET_C(R60.2, R61.1) 272 NET_C(R61.2, GND) 273 NET_C(R61.1, Q20.B) 274 NET_C(Q19.C, CR31.A) 275 NET_C(CR31.K, R62.1) 276 NET_C(R62.2, Q20.C) 277 NET_C(Q20.E, R63.1) 278 NET_C(R63.2, GND) 279 NET_C(Q19.E, R64.1) 280 NET_C(Q19.E, V12) 281 NET_C(Q19.E, U4.8) 282 NET_C(R64.2, U4.6) 283 NET_C(Q20.C, C24.1) 284 NET_C(C24.2, GND) 285 NET_C(C24.1, U4.5) 286 NET_C(U4.1, GND) 287 NET_C(U4.7, C25.1) 288 NET_C(C25.2, GND) 289 NET_C(U4.3, C26.1) 290 NET_C(C26.2, R65.1) 291 NET_C(R65.2, GND) 292 NET_C(R65.1, CR32.A) 293 NET_C(CR32.K, R66.1) 294 NET_C(R66.2, Q21.C) 295 NET_C(Q21.E, GND) 296 NET_C(Q21.B, R69.1) 297 NET_C(R69.2, R57.1) 298 NET_C(Q21.C, R67.1) 299 NET_C(R67.2, R68.1) 300 NET_C(R68.2, GND) 301 NET_C(R68.1, C27.1) 302 NET_C(C27.2, GND) 303 NET_C(C27.1, R73.1) 304 305 NET_C(R70.2, R71.2, R72.2, R73.2, R74.1, U5.2, C28.1) 306 307 NET_C(R74.2, R75.2, R75.3) 308 NET_C(C28.2, R75.1, R77.1, U5.6) 309 NET_C(C29.1, U5.7, V5) 310 NET_C(C29.2, GND) 311 NET_C(U5.3, C31.1, R76.1) 312 NET_C(C31.2, GND) 313 NET_C(R76.2, GND) 314 NET_C(U5.4, C30.1, VM5) 315 NET_C(C30.2, GND) 316 NET_C(R77.2, C32.1) 317 NET_C(C32.2, GND) 318 319 // Separate each input into the summing network 320 OPTIMIZE_FRONTIER(R70.1, RES_M(1), 50) 321 OPTIMIZE_FRONTIER(R71.1, RES_M(1), 50) 322 OPTIMIZE_FRONTIER(R72.1, RES_M(1), 50) 323 OPTIMIZE_FRONTIER(R73.1, RES_M(1), 50) 324 325 NETLIST_END() 326