1 // license:CC0 2 // copyright-holders:Couriersud 3 #include "netlist/devices/net_lib.h" 4 5 /* 6 * M51516L pins: 7 * 8 * pin 9 * 9 - power, 10 * 8 - output 1, 11 * 7 - output 2, 12 * 6 - ground (large signal), 13 * 5 - feedback 2, 14 * 4 - feedback 1, 15 * 3 - muting, 16 * 2 - ground (small signal), 17 * 1 - input 18 * 19 * on the block diagram, box to the right of pin 3 says "Muting" 20 * and then to the right of that "ASO protection, surge protection, heat barrier" 21 * 22 */ 23 24 //NL_CONTAINS konami2x konami1x 25 26 static NETLIST_START(filter) 27 CD4066_GATE(G1) 28 PARAM(G1.BASER, 270.0) 29 CD4066_GATE(G2) 30 PARAM(G2.BASER, 270.0) 31 RES(RI, RES_K(1)) 32 RES(RO, RES_K(5)) 33 CAP(C1, CAP_U(0.22)) 34 CAP(C2, CAP_U(0.047)) 35 NET_C(RI.2, RO.1, G1.R.1, G2.R.1) 36 NET_C(G1.R.2, C1.1) 37 NET_C(G2.R.2, C2.1) 38 39 NET_C(C1.2, C2.2, G1.VSS, G2.VSS) 40 NET_C(G1.VDD, G2.VDD) 41 42 ALIAS(I, RI.1) 43 ALIAS(O, RO.2) 44 45 ALIAS(CTL1, G1.CTL) 46 ALIAS(CTL2, G2.CTL) 47 48 ALIAS(VDD, G1.VDD) 49 ALIAS(VSS, G1.VSS) 50 NETLIST_END() 51 52 static NETLIST_START(amp) 53 54 UA741_DIP8(X3A) 55 RES(R1, RES_K(2.2)) 56 RES(R2, RES_K(4.7)) 57 RES(VR, 200) // Actually a potentiometer 58 CAP(C1, CAP_U(0.15)) 59 RES(RI, RES_K(100)) 60 61 NET_C(X3A.2, R1.1) 62 NET_C(X3A.6, R1.2, R2.1) 63 NET_C(R2.2, VR.1) 64 NET_C(VR.1, C1.1) // 100% pot position 65 NET_C(C1.2, RI.1) 66 67 NET_C(GND, VR.2, RI.2) 68 69 // Amplifier M51516L, assume input RI 100k 70 71 ALIAS(OPAMP, X3A.2) 72 ALIAS(OUT, RI.1) 73 ALIAS(VP, X3A.7) 74 ALIAS(VM, X3A.4) 75 ALIAS(GND, X3A.3) 76 77 NETLIST_END() 78 79 static NETLIST_START(AY1) 80 TTL_INPUT(CTL0, 0) 81 TTL_INPUT(CTL1, 0) 82 TTL_INPUT(CTL2, 0) 83 TTL_INPUT(CTL3, 0) 84 TTL_INPUT(CTL4, 0) 85 TTL_INPUT(CTL5, 0) 86 /* AY 8910 internal resistors */ 87 RES(R_AY3D_A, 1000) 88 RES(R_AY3D_B, 1000) 89 RES(R_AY3D_C, 1000) 90 NET_C(VP5, R_AY3D_A.1, R_AY3D_B.1, R_AY3D_C.1) 91 92 SUBMODEL(filter, FCHA1) 93 NET_C(FCHA1.I, R_AY3D_A.2) 94 SUBMODEL(filter, FCHB1) 95 NET_C(FCHB1.I, R_AY3D_B.2) 96 SUBMODEL(filter, FCHC1) 97 NET_C(FCHC1.I, R_AY3D_C.2) 98 99 NET_C(FCHA1.CTL1, CTL0) 100 NET_C(FCHA1.CTL2, CTL1) 101 NET_C(FCHB1.CTL1, CTL2) 102 NET_C(FCHB1.CTL2, CTL3) 103 NET_C(FCHC1.CTL1, CTL4) 104 NET_C(FCHC1.CTL2, CTL5) 105 106 NET_C(VP5, FCHA1.VDD, FCHB1.VDD, FCHC1.VDD) 107 NET_C(GND, FCHA1.VSS, FCHB1.VSS, FCHC1.VSS) 108 109 NET_C(VP5, CTL0.VCC, CTL1.VCC, CTL2.VCC, CTL3.VCC, CTL4.VCC, CTL5.VCC) 110 NET_C(GND, CTL0.GND, CTL1.GND, CTL2.GND, CTL3.GND, CTL4.GND, CTL5.GND) 111 112 NETLIST_END() 113 114 static NETLIST_START(AY2) 115 TTL_INPUT(CTL6, 0) 116 TTL_INPUT(CTL7, 0) 117 TTL_INPUT(CTL8, 0) 118 TTL_INPUT(CTL9, 0) 119 TTL_INPUT(CTL10, 0) 120 TTL_INPUT(CTL11, 0) 121 /* AY 8910 internal resistors */ 122 RES(R_AY3C_A, 1000) 123 RES(R_AY3C_B, 1000) 124 RES(R_AY3C_C, 1000) 125 NET_C(VP5, R_AY3C_A.1, R_AY3C_B.1, R_AY3C_C.1) 126 127 SUBMODEL(filter, FCHA2) 128 NET_C(FCHA2.I, R_AY3C_A.2) 129 SUBMODEL(filter, FCHB2) 130 NET_C(FCHB2.I, R_AY3C_B.2) 131 SUBMODEL(filter, FCHC2) 132 NET_C(FCHC2.I, R_AY3C_C.2) 133 134 NET_C(FCHA2.CTL1, CTL6) 135 NET_C(FCHA2.CTL2, CTL7) 136 NET_C(FCHB2.CTL1, CTL8) 137 NET_C(FCHB2.CTL2, CTL9) 138 NET_C(FCHC2.CTL1, CTL10) 139 NET_C(FCHC2.CTL2, CTL11) 140 141 NET_C(VP5, FCHA2.VDD, FCHB2.VDD, FCHC2.VDD) 142 NET_C(GND, FCHA2.VSS, FCHB2.VSS, FCHC2.VSS) 143 144 NET_C(VP5, CTL6.VCC, CTL7.VCC, CTL8.VCC, CTL9.VCC, CTL10.VCC, CTL11.VCC) 145 NET_C(GND, CTL6.GND, CTL7.GND, CTL8.GND, CTL9.GND, CTL10.GND, CTL11.GND) 146 147 NETLIST_END() 148 149 NETLIST_START(konami2x) 150 151 SOLVER(Solver, 48000) 152 153 ANALOG_INPUT(VP5, 5) 154 ANALOG_INPUT(VM5, -5) 155 156 LOCAL_SOURCE(filter) 157 LOCAL_SOURCE(amp) 158 LOCAL_SOURCE(AY1) 159 LOCAL_SOURCE(AY2) 160 161 INCLUDE(AY1) 162 INCLUDE(AY2) 163 164 NET_C(FCHA1.O, FCHB1.O, FCHC1.O, FCHA2.O, FCHB2.O, FCHC2.O) 165 166 SUBMODEL(amp, AMP) 167 168 NET_C(VP5, AMP.VP) 169 NET_C(GND, AMP.GND) 170 NET_C(VM5, AMP.VM) 171 NET_C(FCHA1.O, AMP.OPAMP) 172 173 ALIAS(OUT, AMP.OUT) 174 NETLIST_END() 175 176 NETLIST_START(konami1x) 177 178 SOLVER(Solver, 48000) 179 180 ANALOG_INPUT(VP5, 5) 181 ANALOG_INPUT(VM5, -5) 182 183 LOCAL_SOURCE(filter) 184 LOCAL_SOURCE(amp) 185 LOCAL_SOURCE(AY1) 186 LOCAL_SOURCE(AY2) 187 188 INCLUDE(AY1) 189 190 NET_C(FCHA1.O, FCHB1.O, FCHC1.O) 191 192 SUBMODEL(amp, AMP) 193 194 NET_C(VP5, AMP.VP) 195 NET_C(GND, AMP.GND) 196 NET_C(VM5, AMP.VM) 197 NET_C(FCHA1.O, AMP.OPAMP) 198 199 ALIAS(OUT, AMP.OUT) 200 NETLIST_END() 201