// license:CC0
// copyright-holders:Couriersud
#include "netlist/devices/net_lib.h"
/*
* M51516L pins:
*
* pin
* 9 - power,
* 8 - output 1,
* 7 - output 2,
* 6 - ground (large signal),
* 5 - feedback 2,
* 4 - feedback 1,
* 3 - muting,
* 2 - ground (small signal),
* 1 - input
*
* on the block diagram, box to the right of pin 3 says "Muting"
* and then to the right of that "ASO protection, surge protection, heat barrier"
*
*/
//NL_CONTAINS konami2x konami1x
static NETLIST_START(filter)
CD4066_GATE(G1)
PARAM(G1.BASER, 270.0)
CD4066_GATE(G2)
PARAM(G2.BASER, 270.0)
RES(RI, RES_K(1))
RES(RO, RES_K(5))
CAP(C1, CAP_U(0.22))
CAP(C2, CAP_U(0.047))
NET_C(RI.2, RO.1, G1.R.1, G2.R.1)
NET_C(G1.R.2, C1.1)
NET_C(G2.R.2, C2.1)
NET_C(C1.2, C2.2, G1.VSS, G2.VSS)
NET_C(G1.VDD, G2.VDD)
ALIAS(I, RI.1)
ALIAS(O, RO.2)
ALIAS(CTL1, G1.CTL)
ALIAS(CTL2, G2.CTL)
ALIAS(VDD, G1.VDD)
ALIAS(VSS, G1.VSS)
NETLIST_END()
static NETLIST_START(amp)
UA741_DIP8(X3A)
RES(R1, RES_K(2.2))
RES(R2, RES_K(4.7))
RES(VR, 200) // Actually a potentiometer
CAP(C1, CAP_U(0.15))
RES(RI, RES_K(100))
NET_C(X3A.2, R1.1)
NET_C(X3A.6, R1.2, R2.1)
NET_C(R2.2, VR.1)
NET_C(VR.1, C1.1) // 100% pot position
NET_C(C1.2, RI.1)
NET_C(GND, VR.2, RI.2)
// Amplifier M51516L, assume input RI 100k
ALIAS(OPAMP, X3A.2)
ALIAS(OUT, RI.1)
ALIAS(VP, X3A.7)
ALIAS(VM, X3A.4)
ALIAS(GND, X3A.3)
NETLIST_END()
static NETLIST_START(AY1)
TTL_INPUT(CTL0, 0)
TTL_INPUT(CTL1, 0)
TTL_INPUT(CTL2, 0)
TTL_INPUT(CTL3, 0)
TTL_INPUT(CTL4, 0)
TTL_INPUT(CTL5, 0)
/* AY 8910 internal resistors */
RES(R_AY3D_A, 1000)
RES(R_AY3D_B, 1000)
RES(R_AY3D_C, 1000)
NET_C(VP5, R_AY3D_A.1, R_AY3D_B.1, R_AY3D_C.1)
SUBMODEL(filter, FCHA1)
NET_C(FCHA1.I, R_AY3D_A.2)
SUBMODEL(filter, FCHB1)
NET_C(FCHB1.I, R_AY3D_B.2)
SUBMODEL(filter, FCHC1)
NET_C(FCHC1.I, R_AY3D_C.2)
NET_C(FCHA1.CTL1, CTL0)
NET_C(FCHA1.CTL2, CTL1)
NET_C(FCHB1.CTL1, CTL2)
NET_C(FCHB1.CTL2, CTL3)
NET_C(FCHC1.CTL1, CTL4)
NET_C(FCHC1.CTL2, CTL5)
NET_C(VP5, FCHA1.VDD, FCHB1.VDD, FCHC1.VDD)
NET_C(GND, FCHA1.VSS, FCHB1.VSS, FCHC1.VSS)
NET_C(VP5, CTL0.VCC, CTL1.VCC, CTL2.VCC, CTL3.VCC, CTL4.VCC, CTL5.VCC)
NET_C(GND, CTL0.GND, CTL1.GND, CTL2.GND, CTL3.GND, CTL4.GND, CTL5.GND)
NETLIST_END()
static NETLIST_START(AY2)
TTL_INPUT(CTL6, 0)
TTL_INPUT(CTL7, 0)
TTL_INPUT(CTL8, 0)
TTL_INPUT(CTL9, 0)
TTL_INPUT(CTL10, 0)
TTL_INPUT(CTL11, 0)
/* AY 8910 internal resistors */
RES(R_AY3C_A, 1000)
RES(R_AY3C_B, 1000)
RES(R_AY3C_C, 1000)
NET_C(VP5, R_AY3C_A.1, R_AY3C_B.1, R_AY3C_C.1)
SUBMODEL(filter, FCHA2)
NET_C(FCHA2.I, R_AY3C_A.2)
SUBMODEL(filter, FCHB2)
NET_C(FCHB2.I, R_AY3C_B.2)
SUBMODEL(filter, FCHC2)
NET_C(FCHC2.I, R_AY3C_C.2)
NET_C(FCHA2.CTL1, CTL6)
NET_C(FCHA2.CTL2, CTL7)
NET_C(FCHB2.CTL1, CTL8)
NET_C(FCHB2.CTL2, CTL9)
NET_C(FCHC2.CTL1, CTL10)
NET_C(FCHC2.CTL2, CTL11)
NET_C(VP5, FCHA2.VDD, FCHB2.VDD, FCHC2.VDD)
NET_C(GND, FCHA2.VSS, FCHB2.VSS, FCHC2.VSS)
NET_C(VP5, CTL6.VCC, CTL7.VCC, CTL8.VCC, CTL9.VCC, CTL10.VCC, CTL11.VCC)
NET_C(GND, CTL6.GND, CTL7.GND, CTL8.GND, CTL9.GND, CTL10.GND, CTL11.GND)
NETLIST_END()
NETLIST_START(konami2x)
SOLVER(Solver, 48000)
ANALOG_INPUT(VP5, 5)
ANALOG_INPUT(VM5, -5)
LOCAL_SOURCE(filter)
LOCAL_SOURCE(amp)
LOCAL_SOURCE(AY1)
LOCAL_SOURCE(AY2)
INCLUDE(AY1)
INCLUDE(AY2)
NET_C(FCHA1.O, FCHB1.O, FCHC1.O, FCHA2.O, FCHB2.O, FCHC2.O)
SUBMODEL(amp, AMP)
NET_C(VP5, AMP.VP)
NET_C(GND, AMP.GND)
NET_C(VM5, AMP.VM)
NET_C(FCHA1.O, AMP.OPAMP)
ALIAS(OUT, AMP.OUT)
NETLIST_END()
NETLIST_START(konami1x)
SOLVER(Solver, 48000)
ANALOG_INPUT(VP5, 5)
ANALOG_INPUT(VM5, -5)
LOCAL_SOURCE(filter)
LOCAL_SOURCE(amp)
LOCAL_SOURCE(AY1)
LOCAL_SOURCE(AY2)
INCLUDE(AY1)
NET_C(FCHA1.O, FCHB1.O, FCHC1.O)
SUBMODEL(amp, AMP)
NET_C(VP5, AMP.VP)
NET_C(GND, AMP.GND)
NET_C(VM5, AMP.VM)
NET_C(FCHA1.O, AMP.OPAMP)
ALIAS(OUT, AMP.OUT)
NETLIST_END()