summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/emu/netlist/macro/nlm_opamp.c43
-rw-r--r--src/emu/netlist/macro/nlm_opamp.h6
-rw-r--r--src/mame/audio/irem.c4
-rw-r--r--src/mame/audio/nl_kidniki.c139
4 files changed, 48 insertions, 144 deletions
diff --git a/src/emu/netlist/macro/nlm_opamp.c b/src/emu/netlist/macro/nlm_opamp.c
index 62e2312a3a8..c2038d19a28 100644
--- a/src/emu/netlist/macro/nlm_opamp.c
+++ b/src/emu/netlist/macro/nlm_opamp.c
@@ -23,10 +23,23 @@ NETLIST_START(opamp_layout_4_4_11)
NET_C(A.VCC, B.VCC, C.VCC, D.VCC)
NETLIST_END()
+/*
+ * Generic layout with 2 opamps, VCC on pint 8 and GND on pin 4
+ */
+
+NETLIST_START(opamp_layout_2_8_4)
+ DIPPINS( /* +--------------+ */
+ A.OUT, /* |1 ++ 8| */ A.VCC,
+ A.MINUS, /* |2 7| */ B.OUT,
+ A.PLUS, /* |3 6| */ B.MINUS,
+ A.GND, /* |4 5| */ B.PLUS
+ /* +--------------+ */
+ )
+ NET_C(A.GND, B.GND)
+ NET_C(A.VCC, B.VCC)
+NETLIST_END()
+
NETLIST_START(MB3614_DIP)
- /* The opamp actually has an FPF of about 500k. This doesn't work here and causes oscillations.
- * FPF here therefore about half the Solver clock.
- */
OPAMP(A, "MB3614")
OPAMP(B, "MB3614")
OPAMP(C, "MB3614")
@@ -36,12 +49,36 @@ NETLIST_START(MB3614_DIP)
NETLIST_END()
+NETLIST_START(LM324_DIP)
+ OPAMP(A, "LM324")
+ OPAMP(B, "LM324")
+ OPAMP(C, "LM324")
+ OPAMP(D, "LM324")
+
+ INCLUDE(opamp_layout_4_4_11)
+
+NETLIST_END()
+
+NETLIST_START(LM358_DIP)
+ OPAMP(A, "LM358")
+ OPAMP(B, "LM358")
+
+ INCLUDE(opamp_layout_2_8_4)
+
+NETLIST_END()
+
NETLIST_START(OPAMP_lib)
LOCAL_LIB_ENTRY(opamp_layout_4_4_11)
+ LOCAL_LIB_ENTRY(opamp_layout_2_8_4)
+ NET_MODEL("LM324 OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=500k SLEW=0.3M RI=1000k RO=50 DAB=0.00075)")
+ NET_MODEL("LM358 OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=500k SLEW=0.3M RI=1000k RO=50 DAB=0.001)")
NET_MODEL("MB3614 OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=500k SLEW=0.6M RI=1000k RO=50 DAB=0.002)")
NET_MODEL("MB3614_SLOW OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=11k SLEW=0.6M RI=1000k RO=50 DAB=0.002)")
+
LOCAL_LIB_ENTRY(MB3614_DIP)
+ LOCAL_LIB_ENTRY(LM324_DIP)
+ LOCAL_LIB_ENTRY(LM358_DIP)
NETLIST_END()
diff --git a/src/emu/netlist/macro/nlm_opamp.h b/src/emu/netlist/macro/nlm_opamp.h
index d31a5f0b876..f9ed62d71b3 100644
--- a/src/emu/netlist/macro/nlm_opamp.h
+++ b/src/emu/netlist/macro/nlm_opamp.h
@@ -12,6 +12,12 @@
#define MB3614_DIP(_name) \
NET_REGISTER_DEV(MB3614_DIP, _name)
+#define LM324_DIP(_name) \
+ NET_REGISTER_DEV(LM324_DIP, _name)
+
+#define LM358_DIP(_name) \
+ NET_REGISTER_DEV(LM358_DIP, _name)
+
/* ----------------------------------------------------------------------------
* External declarations
* ---------------------------------------------------------------------------*/
diff --git a/src/mame/audio/irem.c b/src/mame/audio/irem.c
index 67fe2b27de3..5d524b2a002 100644
--- a/src/mame/audio/irem.c
+++ b/src/mame/audio/irem.c
@@ -399,10 +399,10 @@ NETLIST_START(kidniki_interface)
#if (USE_FRONTIERS)
SOLVER(Solver, 18000)
- PARAM(Solver.ACCURACY, 1e-7)
+ PARAM(Solver.ACCURACY, 1e-8)
PARAM(Solver.NR_LOOPS, 300)
PARAM(Solver.GS_LOOPS, 1)
- PARAM(Solver.GS_THRESHOLD, 99)
+ PARAM(Solver.GS_THRESHOLD, 6)
PARAM(Solver.ITERATIVE, "SOR")
PARAM(Solver.PARALLEL, 1)
PARAM(Solver.SOR_FACTOR, 1.00)
diff --git a/src/mame/audio/nl_kidniki.c b/src/mame/audio/nl_kidniki.c
index 429aac1f70c..bdb178f82c4 100644
--- a/src/mame/audio/nl_kidniki.c
+++ b/src/mame/audio/nl_kidniki.c
@@ -15,14 +15,6 @@
#ifndef __PLIB_PREPROCESSOR__
-#define LM324_DIP(_name) \
- NET_REGISTER_DEV(LM324_DIP, _name)
-
-#define LM358_DIP(_name) \
- NET_REGISTER_DEV(LM358_DIP, _name)
-
-NETLIST_EXTERNAL(kidniki_lib)
-
#endif
/* ----------------------------------------------------------------------------
@@ -41,9 +33,6 @@ NETLIST_START(kidniki_schematics)
// IGNORED O_AUDIO0: O_AUDIO0 49 0
// .END
- LOCAL_SOURCE(kidniki_lib)
- INCLUDE(kidniki_lib)
-
/*
* Workaround: The simplified opamp model does not correctly
* model the internals of the inputs.
@@ -316,131 +305,3 @@ NETLIST_START(kidniki_schematics)
NET_C(R26.2, C29.2, GND)
NETLIST_END()
-
-/* ----------------------------------------------------------------------------
- * Library section body START
- * ---------------------------------------------------------------------------*/
-
-NETLIST_START(opamp)
-
- /* Opamp model from
- *
- * http://www.ecircuitcenter.com/Circuits/opmodel1/opmodel1.htm
- *
- * Bandwidth 1Mhz
- *
- */
-
- /* Terminal definitions for calling netlists */
-
- ALIAS(PLUS, G1.IP) // Positive input
- ALIAS(MINUS, G1.IN) // Negative input
- ALIAS(OUT, EBUF.OP) // Opamp output ...
-
- ALIAS(GND, EBUF.ON) // GND terminal
- ALIAS(VCC, DUMMY.I) // VCC terminal
- DUMMY_INPUT(DUMMY)
-
- /* The opamp model */
-
- VCCS(G1)
- PARAM(G1.RI, RES_K(1000))
-#if 1
- PARAM(G1.G, 100) // typical OP-AMP amplification 100 * 1000 = 100000
- RES(RP1, 1000)
- CAP(CP1, 1.59e-5) // <== change to 1.59e-3 for 10Khz bandwidth
-#else
- PARAM(G1.G, 1) // typical OP-AMP amplification 100 * 1000 = 100000
- RES(RP1, 100000)
- CAP(CP1, 1.59e-7) // <== change to 1.59e-3 for 10Khz bandwidth
-#endif
- VCVS(EBUF)
- PARAM(EBUF.RO, 50)
- PARAM(EBUF.G, 1)
-
-// PARAM(EBUF.RI, 1e20)
-// NET_C(EBUF.ON, GND)
-
- NET_C(G1.ON, GND)
- NET_C(RP1.2, GND)
- NET_C(CP1.2, GND)
- NET_C(EBUF.IN, GND)
-
- NET_C(RP1.1, G1.OP)
- NET_C(CP1.1, RP1.1)
-
- DIODE(DP,"1N914")
- DIODE(DN,"1N914")
-
- NET_C(DP.K, VCC)
-#if 1
- NET_C(DP.A, DN.K, RP1.1)
-#else
- RES(RDP, 1000)
- RES(RDN, 1000)
- NET_C(RDP.1, DP.A)
- NET_C(RDN.1, DN.K)
- NET_C(RDP.2, RDN.2, RP1.1)
-#endif
- NET_C(DN.A, GND)
-
- NET_C(EBUF.IP, RP1.1)
-
-NETLIST_END()
-
-NETLIST_START(LM324_DIP)
- SUBMODEL(opamp, op1)
- SUBMODEL(opamp, op2)
- SUBMODEL(opamp, op3)
- SUBMODEL(opamp, op4)
-
- ALIAS( 1, op1.OUT)
- ALIAS( 2, op1.MINUS)
- ALIAS( 3, op1.PLUS)
-
- ALIAS( 7, op2.OUT)
- ALIAS( 6, op2.MINUS)
- ALIAS( 5, op2.PLUS)
-
- ALIAS( 8, op3.OUT)
- ALIAS( 9, op3.MINUS)
- ALIAS(10, op3.PLUS)
-
- ALIAS(14, op4.OUT)
- ALIAS(13, op4.MINUS)
- ALIAS(12, op4.PLUS)
-
- NET_C(op1.GND, op2.GND, op3.GND, op4.GND)
- NET_C(op1.VCC, op2.VCC, op3.VCC, op4.VCC)
-
- ALIAS(11, op1.GND)
- ALIAS( 4, op1.VCC)
-NETLIST_END()
-
-NETLIST_START(LM358_DIP)
- SUBMODEL(opamp, op1)
- SUBMODEL(opamp, op2)
-
- ALIAS( 1, op1.OUT)
- ALIAS( 2, op1.MINUS)
- ALIAS( 3, op1.PLUS)
-
- ALIAS( 7, op2.OUT)
- ALIAS( 6, op2.MINUS)
- ALIAS( 5, op2.PLUS)
-
-
- NET_C(op1.GND, op2.GND)
- NET_C(op1.VCC, op2.VCC)
-
- ALIAS( 4, op1.GND)
- ALIAS( 8, op1.VCC)
-NETLIST_END()
-
-NETLIST_START(kidniki_lib)
-
- LOCAL_LIB_ENTRY(LM324_DIP)
- LOCAL_LIB_ENTRY(LM358_DIP)
-
-NETLIST_END()
-