1 // license:BSD-3-Clause 2 // copyright-holders:Ryan Holtz 3 // 4 // Netlist for Car Polo audio 5 // 6 // Derived from the schematics in the Car Polo manual. 7 // 8 // Known problems/issues: 9 // 10 // * Uses HLE noise due to abusing a 2N3904 in breakdown as a noise source. 11 // * Very slow 12 // 13 14 #include "netlist/devices/net_lib.h" 15 16 #define HLE_NOISE (1) 17 18 // 19 // Player Crash netlist 20 // 21 22 static NETLIST_START(PLAYER_CRASH) 23 ALIAS(V15, R200.1) 24 ALIAS(VCC, 4C.VCC) 25 ALIAS(GND, R210.2) 26 ALIAS(CRASH_IN, 4C.A) 27 ALIAS(AUDIO_OUT, R217.1) 28 ALIAS(NOISE_IN, CR10.K) 29 30 TTL_7407_GATE(4C) 31 NET_C(4C.GND, GND) 32 33 RES(R200, RES_K(1.2)) 34 RES(R202, RES_K(150)) 35 RES(R203, RES_K(550)) 36 RES(R204, RES_K(100)) 37 RES(R205, RES_K(270)) 38 RES(R210, RES_K(33)) 39 RES(R212, RES_K(1)) 40 RES(R213, RES_K(10)) 41 RES(R216, RES_K(47)) 42 RES(R217, RES_K(5)) 43 44 CAP(C89, CAP_U(0.1)) 45 CAP(C90, CAP_U(0.01)) 46 CAP(C91, CAP_U(0.01)) 47 CAP(C92, CAP_U(6.8)) 48 CAP(C93, CAP_U(2.2)) 49 50 DIODE(CR10, "1N4454") 51 DIODE(CR11, "1N4454") 52 DIODE(CR14, "1N4454") 53 54 QBJT_EB(Q6, "2N3904") 55 56 NET_C(R200.1, R212.1, R216.1) 57 NET_C(R200.2, 4C.Y, CR11.A) 58 NET_C(CR11.K, C93.1, R204.1, R205.1) 59 NET_C(C93.2, R205.2, Q6.E, R217.1, R210.2, C92.2) 60 NET_C(R204.2, R203.1, R202.1, CR10.A) 61 NET_C(R202.2, C89.1) 62 NET_C(C89.2, C90.1, R203.2, Q6.B) 63 NET_C(C90.2, R210.1, C91.1) 64 NET_C(C91.2, Q6.C, CR14.K, R213.1) 65 NET_C(R213.2, R212.2, C92.1) 66 NET_C(R217.2, CR14.A, R216.2) 67 NETLIST_END() 68 69 // 70 // Main netlist 71 // 72 73 NETLIST_START(carpolo) 74 75 SOLVER(Solver, 48000) 76 ANALOG_INPUT(V15, 15) 77 ANALOG_INPUT(V7_5, 7.5) 78 ANALOG_INPUT(V5, 5) 79 ALIAS(VCC, V5) 80 81 TTL_INPUT(PL1_CRASH, 1) // active high 82 TTL_INPUT(PL2_CRASH, 0) // active high 83 TTL_INPUT(PL3_CRASH, 0) // active high 84 TTL_INPUT(PL4_CRASH, 0) // active high 85 86 LOCAL_SOURCE(PLAYER_CRASH) 87 88 NET_C(GND, PL1_CRASH.GND, PL2_CRASH.GND, PL3_CRASH.GND, PL4_CRASH.GND) 89 NET_C(VCC, PL1_CRASH.VCC, PL2_CRASH.VCC, PL3_CRASH.VCC, PL4_CRASH.VCC) 90 91 // HLE Noise Gen 92 CLOCK(NOISE_CLOCK, 10000) 93 NET_C(NOISE_CLOCK.GND, GND) 94 NET_C(NOISE_CLOCK.VCC, VCC) 95 96 SYS_NOISE_MT_N(NOISE, 0.1) 97 NET_C(NOISE.I, NOISE_CLOCK.Q) 98 99 // White Noise 100 #if HLE_NOISE 101 NET_C(NOISE.1, V7_5) 102 ALIAS(WHITE_NOISE, NOISE.2) 103 #else 104 RES(R240, RES_K(1.2)) 105 RES(R241, RES_M(1)) 106 RES(R242, 100) 107 RES(R243, RES_M(1)) 108 RES(R244, RES_K(47)) 109 RES(R245, RES_K(10)) 110 RES(R246, RES_K(1)) 111 RES(R247, RES_K(10)) 112 RES(R248, RES_M(1)) 113 114 CAP(C99, CAP_U(2.2)) 115 //CAP(C100, CAP_P(100)) 116 CAP(C101, CAP_U(6.8)) 117 CAP(C102, CAP_U(2.2)) 118 CAP(C103, CAP_U(6.8)) 119 120 //QBJT_EB(Q8, "2N3904") // Used as a reverse-biased noise source. 121 QBJT_EB(Q9, "2N3904") 122 123 OPAMP(1A, "LM748") 124 NET_C(1A.GND, GND) 125 NET_C(1A.VCC, C101.1, R241.1, R240.1) 126 127 DIODE(CR22, "1N4454") 128 129 NET_C(NOISE.1, R241.2, 1A.PLUS) 130 NET_C(NOISE.2, C99.1, GND) 131 132 // White Noise 133 NET_C(V15, R240.2, R246.1) 134 NET_C(C99.2, R242.1) 135 NET_C(R242.2, R243.1, CR22.K, 1A.MINUS) 136 NET_C(CR22.A, R244.1) 137 NET_C(R243.2, R244.2, 1A.OUT, R245.1) 138 NET_C(C101.2, GND) 139 NET_C(R245.2, C102.1) 140 NET_C(C102.2, R248.1, Q9.B) 141 NET_C(Q9.E, GND) 142 NET_C(Q9.C, R248.2, R247.1) 143 NET_C(R247.2, R246.2, C103.1) 144 NET_C(C103.2, GND) 145 ALIAS(WHITE_NOISE, Q9.C) 146 #endif 147 148 SUBMODEL(PLAYER_CRASH, PLAYER_1_CRASH) 149 NET_C(PLAYER_1_CRASH.NOISE_IN, WHITE_NOISE) 150 NET_C(PLAYER_1_CRASH.CRASH_IN, PL1_CRASH.Q) 151 NET_C(PLAYER_1_CRASH.V15, V15) 152 NET_C(PLAYER_1_CRASH.VCC, VCC) 153 NET_C(PLAYER_1_CRASH.GND, GND) 154 NETLIST_END() 155