diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 7ab6bc16515..c2607815f6a 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -2809,6 +2809,8 @@ files { MAME_DIR .. "src/mame/video/dkong.cpp", MAME_DIR .. "src/mame/drivers/mario.cpp", MAME_DIR .. "src/mame/includes/mario.h", + MAME_DIR .. "src/mame/audio/nl_mario.cpp", + MAME_DIR .. "src/mame/audio/nl_mario.h", MAME_DIR .. "src/mame/audio/mario.cpp", MAME_DIR .. "src/mame/video/mario.cpp", MAME_DIR .. "src/mame/drivers/mmagic.cpp", diff --git a/scripts/target/mame/nl.lua b/scripts/target/mame/nl.lua index 0ad6c16419c..9ea0dfb1966 100644 --- a/scripts/target/mame/nl.lua +++ b/scripts/target/mame/nl.lua @@ -136,6 +136,8 @@ files{ MAME_DIR .. "src/mame/drivers/mario.cpp", MAME_DIR .. "src/mame/includes/mario.h", + MAME_DIR .. "src/mame/audio/nl_mario.cpp", + MAME_DIR .. "src/mame/audio/nl_mario.h", MAME_DIR .. "src/mame/video/mario.cpp", MAME_DIR .. "src/mame/audio/mario.cpp", diff --git a/src/lib/netlist/analog/nld_opamps.cpp b/src/lib/netlist/analog/nld_opamps.cpp index d587f691e56..3dc6711c406 100644 --- a/src/lib/netlist/analog/nld_opamps.cpp +++ b/src/lib/netlist/analog/nld_opamps.cpp @@ -8,35 +8,6 @@ #include "nld_opamps.h" #include "devices/net_lib.h" -NETLIST_START(opamp_lm3900) - - /* - * Fast norton opamp model without bandwidth - */ - - /* Terminal definitions for calling netlists */ - - ALIAS(PLUS, R1.1) // Positive input - ALIAS(MINUS, R2.1) // Negative input - ALIAS(OUT, G1.OP) // Opamp output ... - ALIAS(VM, G1.ON) // V- terminal - ALIAS(VP, DUMMY.I) // V+ terminal - - DUMMY_INPUT(DUMMY) - - /* The opamp model */ - - RES(R1, 1) - RES(R2, 1) - NET_C(R1.1, G1.IP) - NET_C(R2.1, G1.IN) - NET_C(R1.2, R2.2, G1.ON) - VCVS(G1) - PARAM(G1.G, 10000000) - //PARAM(G1.RI, 1) - PARAM(G1.RO, RES_K(8)) - -NETLIST_END() namespace netlist { diff --git a/src/lib/netlist/analog/nld_opamps.h b/src/lib/netlist/analog/nld_opamps.h index 5d9825d4b21..95060dfdbd3 100644 --- a/src/lib/netlist/analog/nld_opamps.h +++ b/src/lib/netlist/analog/nld_opamps.h @@ -23,15 +23,10 @@ NET_REGISTER_DEV(OPAMP, name) \ NETDEV_PARAMI(name, MODEL, model) -#define LM3900(name) \ - SUBMODEL(opamp_lm3900, name) - // ---------------------------------------------------------------------------------------- // Devices ... // ---------------------------------------------------------------------------------------- -NETLIST_EXTERNAL(opamp_lm3900) - namespace netlist { namespace devices diff --git a/src/lib/netlist/devices/net_lib.cpp b/src/lib/netlist/devices/net_lib.cpp index 5250135feb8..bc391e98728 100644 --- a/src/lib/netlist/devices/net_lib.cpp +++ b/src/lib/netlist/devices/net_lib.cpp @@ -152,7 +152,7 @@ static void initialize_factory(factory_list_t &factory) ENTRYX(CD4020, CD4020_WI, "+IP,RESET,VDD,VSS") //ENTRY(4066, CD_4066, "+A,B") ENTRYX(NE555, NE555, "-") - ENTRYX(r2r_dac, R2R_DAC, "+VIN,R,N") + ENTRYX(r2r_dac, R2R_DAC, "VIN,R,N") ENTRYX(tristate, TTL_TRISTATE, "+CEQ1,D1,CEQ2,D2") ENTRYX(tristate3, TTL_TRISTATE3, "-") ENTRYX(2102A_dip, RAM_2102A_DIP, "-") diff --git a/src/lib/netlist/macro/nlm_opamp.cpp b/src/lib/netlist/macro/nlm_opamp.cpp index 08dc5f60b27..5c68cfc86a3 100644 --- a/src/lib/netlist/macro/nlm_opamp.cpp +++ b/src/lib/netlist/macro/nlm_opamp.cpp @@ -186,6 +186,37 @@ static NETLIST_START(LM747A_DIP) NETLIST_END() +static NETLIST_START(LM3900) + + /* + * Fast norton opamp model without bandwidth + */ + + /* Terminal definitions for calling netlists */ + + ALIAS(PLUS, R1.1) // Positive input + ALIAS(MINUS, R2.1) // Negative input + ALIAS(OUT, G1.OP) // Opamp output ... + ALIAS(VM, G1.ON) // V- terminal + ALIAS(VP, DUMMY.I) // V+ terminal + + DUMMY_INPUT(DUMMY) + + /* The opamp model */ + + RES(R1, 1) + RES(R2, 1) + NET_C(R1.1, G1.IP) + NET_C(R2.1, G1.IN) + NET_C(R1.2, R2.2, G1.ON) + VCVS(G1) + PARAM(G1.G, 10000000) + //PARAM(G1.RI, 1) + PARAM(G1.RO, RES_K(8)) + +NETLIST_END() + + NETLIST_START(OPAMP_lib) LOCAL_LIB_ENTRY(opamp_layout_4_4_11) LOCAL_LIB_ENTRY(opamp_layout_2_8_4) @@ -209,5 +240,6 @@ NETLIST_START(OPAMP_lib) LOCAL_LIB_ENTRY(UA741_DIP14) LOCAL_LIB_ENTRY(LM747_DIP) LOCAL_LIB_ENTRY(LM747A_DIP) + LOCAL_LIB_ENTRY(LM3900) NETLIST_END() diff --git a/src/lib/netlist/macro/nlm_opamp.h b/src/lib/netlist/macro/nlm_opamp.h index f349f11911c..6e3c1f615e7 100644 --- a/src/lib/netlist/macro/nlm_opamp.h +++ b/src/lib/netlist/macro/nlm_opamp.h @@ -20,6 +20,9 @@ #define LM358_DIP(name) \ NET_REGISTER_DEV(LM358_DIP, name) +#define LM3900(name) \ + NET_REGISTER_DEV(LM3900, name) + /* ---------------------------------------------------------------------------- * External declarations * ---------------------------------------------------------------------------*/ diff --git a/src/mame/audio/mario.cpp b/src/mame/audio/mario.cpp index 7ef691acc68..28f0ca4f1fe 100644 --- a/src/mame/audio/mario.cpp +++ b/src/mame/audio/mario.cpp @@ -6,7 +6,7 @@ #include "sound/ay8910.h" #include "includes/mario.h" - +#include "audio/nl_mario.h" /**************************************************************** * @@ -43,243 +43,6 @@ #if !OLD_SOUND -/* ---------------------------------------------------------------------- */ -/* mario sound */ -/* ---------------------------------------------------------------------- */ -static NETLIST_START(nl_mario_snd0) - - RES(R17, RES_K(27)) /* 20 according to parts list */ - /* 27 verified, 30K in schematics */ - CAP(C14, CAP_U(4.7)) /* verified */ - - TTL_74123(2H_A) - NET_C(2H_A.VCC, V5) - NET_C(2H_A.GND, GND) - NET_C(SOUND0.Q, 2H_A.B) - NET_C(GND, 2H_A.A) - NET_C(2H_A.CLRQ, ttlhigh) /* NOT IN SCHEMATICS */ - DIODE(D1, "1N4148") /* FIXME: try to identify */ - TTL_7404_INVERT(1H_A, 2H_A.QQ) - NET_C(R17.1, V5) - NET_C(R17.2, D1.A, C14.1) - NET_C(D1.K, 2H_A.RC) - NET_C(C14.2, 2H_A.C) - - RES(R6, RES_K(4.7)) /* verified */ - CAP(C3, CAP_U(10)) /* verified */ - - NET_C(1H_A.Q, R6.1) - NET_C(R6.2, C3.1, 1J_A.FC) - NET_C(R6.2, 2J_A.FC) - NET_C(C3.2, GND) - - //#define MR_C6 CAP_N(3.9) /* verified */ - - SN74LS629(1J_A, CAP_N(3.9)) - NET_C(1J_A.RNG, V5) - NET_C(1J_A.ENQ, ttllow) - NET_C(GND, 1J_A.GND) - - //#define MR_C17 CAP_N(22) /* verified */ - - SN74LS629(2J_A, CAP_N(22)) - NET_C(2J_A.RNG, V5) - NET_C(2J_A.ENQ, ttllow) - NET_C(GND, 2J_A.GND) - - TTL_7486_XOR(1K_A, 1J_A.Y, 2J_A.Y) - TTL_7408_AND(2K_A, 2H_A.Q, 1K_A) -NETLIST_END() - -/* ---------------------------------------------------------------------- */ -/* skid sound */ -/* ---------------------------------------------------------------------- */ - -// FIXME: Diodes are 1S953 -static NETLIST_START(nl_mario_snd7) - - RES(R61, RES_K(47)) - CAP(C41, CAP_U(4.7)) /* verified */ - - TTL_74123(4L_A) - NET_C(4L_A.VCC, V5) - NET_C(4L_A.GND, GND) - NET_C(SOUND7.Q, 4L_A.B) - NET_C(GND, 4L_A.A) - NET_C(4L_A.CLRQ, ttlhigh) /* NOT IN SCHEMATICS */ - DIODE(D10, "1N4148") /* FIXME: try to identify */ - TTL_7404_INVERT(4J_A, 4L_A.Q) - NET_C(R61.1, V5) - NET_C(R61.2, D10.A, C41.1) - NET_C(D10.K, 4L_A.RC) - NET_C(C41.2, 4L_A.C) - - RES(R65, RES_K(10)) - CAP(C44, CAP_U(3.3)) /* verified */ - - SN74LS629(4K_A, CAP_U(0.022)) - NET_C(4K_A.RNG, V5) - NET_C(4K_A.ENQ, ttllow) - NET_C(GND, 4K_A.GND) - NET_C(R65.1, 4J_A.Q) - NET_C(R65.2, 4K_A.FC, C44.1) - NET_C(C44.2, GND) - - CD4020_WI(3H, 4K_B.Y, ttllow, V5, GND) - TTL_7404_INVERT(4J_B, 3H.Q12) - - RES(R64, RES_K(20)) - CAP(C43, CAP_U(3.3)) /* verified */ - - SN74LS629(4K_B, CAP_U(0.0047)) - NET_C(4K_B.RNG, V5) - NET_C(4K_B.ENQ, ttllow) - NET_C(GND, 4K_B.GND) - NET_C(R64.1, 4J_B.Q) - NET_C(R64.2, 4K_B.FC, C43.1) - NET_C(C43.2, GND) - - TTL_7486_XOR(1K_C, 3H.Q4, 4K_A.Y) - TTL_7408_AND(2K_C, 4L_A.Q, 1K_C) - -NETLIST_END() - -/* ---------------------------------------------------------------------- */ -/* DAC sound */ -/* ---------------------------------------------------------------------- */ -static NETLIST_START(nl_mario_dac) - RES(R34, RES_M(2)) - RES(R35, RES_M(1)) - RES(R36, RES_M(1.8)) - LM3900(3M_1) - NET_C(3M_1.VM, GND) - NET_C(3M_1.VP, V5) - - NET_C(DAC.VOUT, R34.1) - NET_C(3M_1.MINUS, R34.2, R35.2) - NET_C(3M_1.OUT, R35.1) - NET_C(3M_1.PLUS, R36.1) - NET_C(R36.2, GND) - - RES(R21, RES_M(1.8)) - RES(R23, RES_K(10)) - RES(R25, RES_K(10)) - RES(R37, RES_K(750)) - RES(R38, RES_K(360)) - RES(R39, RES_K(750)) - - CAP(C18, CAP_P(100)) - CAP(C19, CAP_U(10)) - CAP(C20, CAP_U(1)) - CAP(C30, CAP_P(100)) - - LM3900(3M_2) - NET_C(3M_2.VM, GND) - NET_C(3M_2.VP, V5) - - NET_C(R35.1, C20.1) - NET_C(C20.2, R37.1) - NET_C(R37.2, R38.2, C18.1, R39.2) - - NET_C(C18.2, GND) - NET_C(R38.1, C30.2, 3M_2.MINUS) - NET_C(3M_2.OUT, R39.1, C30.1) - - NET_C(R21.1, 3M_2.PLUS) - NET_C(R21.2, C19.1, R25.2, R23.1) - NET_C(C19.2, R23.2, GND) - NET_C(R25.1, V5) -NETLIST_END() - -static NETLIST_START(nl_mario) - - LOCAL_SOURCE(nl_mario_snd0) - LOCAL_SOURCE(nl_mario_snd7) - LOCAL_SOURCE(nl_mario_dac) - - SOLVER(Solver, 48000) - PARAM(Solver.ACCURACY, 1e-6) - PARAM(Solver.SOR_FACTOR, 1.0) - PARAM(Solver.GS_THRESHOLD, 5) - PARAM(Solver.GS_LOOPS, 1) - //PARAM(Solver.LTE, 5e-2) - PARAM(Solver.DYNAMIC_TS, 0) - ANALOG_INPUT(V5, 5) - - TTL_INPUT(SOUND0, 1) - INCLUDE(nl_mario_snd0) - - TTL_INPUT(SOUND7, 1) - INCLUDE(nl_mario_snd7) - - R2R_DAC(DAC, 3.4, 10000.0, 8) - NET_C(DAC.VGND, GND) - - INCLUDE(nl_mario_dac) - - /* ---------------------------------------------------------------------- */ - /* mixing */ - /* ---------------------------------------------------------------------- */ - - RES(R20, RES_K(22)) /* verified */ - RES(R19, RES_K(22)) /* verified */ - RES(R40, RES_K(22)) /* verified */ - RES(R41, RES_K(100)) /* verified */ - CAP(C31, CAP_U(0.022)) /* */ - - NET_C(2K_A.Q, R20.1) - NET_C(GND, R19.1) //FIXME - NET_C(2K_C.Q, R41.1) - - NET_C(R39.1, R40.1) - - NET_C(R20.2, R19.2, R40.2, R41.2, C31.1) - NET_C(C31.2, GND) - - CAP(C32, CAP_U(1)) /* verified */ - RES(R42, RES_K(43)) /* verified */ - RES(R43, RES_K(100)) /* verified */ - - NET_C(C31.1, C32.1) - NET_C(C32.2, R42.1, R43.2, Q10.B) - //NET_C(C32.2, R42.1, R43.2) - NET_C(R43.1, V5) - NET_C(R42.2, GND) -#if 1 - RES(R63, RES_K(1)) /* */ - RES(R62, 150) /* */ - - QBJT_EB(Q10, "2SC1815") - - NET_C(R62.2, GND) - NET_C(R62.1, Q10.E) - - NET_C(R63.1, V5) - NET_C(R63.2, Q10.C) - - CAP(C42, CAP_U(0.1)) - CAP(C47, CAP_U(4.7)) - RES(VR1, RES_K(10)) - - NET_C(C42.1, C47.1, R62.1) - NET_C(C42.2, GND) - NET_C(C47.2, VR1.1) - NET_C(VR1.2, GND) -#endif - /* ---------------------------------------------------------------------- */ - /* Output */ - /* ---------------------------------------------------------------------- */ - - RES(ROUT, 1000000) - - //NET_C(Q10.C, ROUT.1) - //NET_C(R43.2, ROUT.1) - NET_C(VR1.1, ROUT.1) - - NET_C(GND, ROUT.2) - - OPTIMIZE_FRONTIER(R40.1, RES_K(22), 50) -NETLIST_END() #else /**************************************************************** @@ -797,6 +560,8 @@ WRITE8_MEMBER(mario_state::mario_sh2_w) { #if OLD_SOUND m_discrete->write(space, DS_SOUND1_INP, 0); +#else + m_audio_snd1->write(data); #endif } @@ -895,10 +660,11 @@ MACHINE_CONFIG_FRAGMENT( mario_audio ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1) #else MCFG_SOUND_ADD("snd_nl", NETLIST_SOUND, 48000) - MCFG_NETLIST_SETUP(nl_mario) + MCFG_NETLIST_SETUP(mario) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_NETLIST_LOGIC_INPUT("snd_nl", "snd0", "SOUND0.IN", 0) + MCFG_NETLIST_LOGIC_INPUT("snd_nl", "snd1", "SOUND1.IN", 0) MCFG_NETLIST_LOGIC_INPUT("snd_nl", "snd7", "SOUND7.IN", 0) MCFG_NETLIST_INT_INPUT("snd_nl", "dac", "DAC.VAL", 0, 255) diff --git a/src/mame/audio/nl_mario.cpp b/src/mame/audio/nl_mario.cpp new file mode 100644 index 00000000000..1f6c2fb4ab6 --- /dev/null +++ b/src/mame/audio/nl_mario.cpp @@ -0,0 +1,306 @@ +// license:BSD-3-Clause +// copyright-holders:Couriersud +#include "netlist/devices/net_lib.h" + +/* ---------------------------------------------------------------------------- + * Library section header START + * ---------------------------------------------------------------------------*/ + +#ifndef __PLIB_PREPROCESSOR__ + +#endif + +/* ---------------------------------------------------------------------------- + * Library section header END + * ---------------------------------------------------------------------------*/ + +/* ---------------------------------------------------------------------------- + * Mario schematics + * ---------------------------------------------------------------------------*/ + +/* ---------------------------------------------------------------------- */ +/* mario sound */ +/* ---------------------------------------------------------------------- */ +static NETLIST_START(nl_mario_snd0) + + RES(R17, RES_K(27)) /* 20 according to parts list */ + /* 27 verified, 30K in schematics */ + CAP(C14, CAP_U(4.7)) /* verified */ + + TTL_74123(2H_A) + NET_C(2H_A.VCC, V5) + NET_C(2H_A.GND, GND) + NET_C(SOUND0.Q, 2H_A.B) + NET_C(GND, 2H_A.A) + NET_C(2H_A.CLRQ, ttlhigh) /* NOT IN SCHEMATICS */ + DIODE(D1, "1N4148") /* FIXME: try to identify */ + TTL_7404_INVERT(1H_A, 2H_A.QQ) + NET_C(R17.1, V5) + NET_C(R17.2, D1.A, C14.1) + NET_C(D1.K, 2H_A.RC) + NET_C(C14.2, 2H_A.C) + + RES(R6, RES_K(4.7)) /* verified */ + CAP(C3, CAP_U(10)) /* verified */ + + NET_C(1H_A.Q, R6.1) + NET_C(R6.2, C3.1, 1J_A.FC) + NET_C(R6.2, 2J_A.FC) + NET_C(C3.2, GND) + + // #define MR_C6 CAP_N(3.9) /* verified */ + + SN74LS629(1J_A, CAP_N(3.9)) + NET_C(1J_A.RNG, V5) + NET_C(1J_A.ENQ, ttllow) + NET_C(GND, 1J_A.GND) + + // #define MR_C17 CAP_N(22) /* verified */ + + SN74LS629(2J_A, CAP_N(22)) + NET_C(2J_A.RNG, V5) + NET_C(2J_A.ENQ, ttllow) + NET_C(GND, 2J_A.GND) + + TTL_7486_XOR(1K_A, 1J_A.Y, 2J_A.Y) + TTL_7408_AND(2K_A, 2H_A.Q, 1K_A) +NETLIST_END() + +/* ---------------------------------------------------------------------- */ +/* luigi sound */ +/* ---------------------------------------------------------------------- */ +static NETLIST_START(nl_mario_snd1) + + RES(R18, RES_K(30)) /* 20 according to parts list */ + /* 27 verified, 30K in schematics */ + CAP(C15, CAP_U(4.7)) /* verified */ + + TTL_74123(2H_B) + NET_C(2H_B.VCC, V5) + NET_C(2H_B.GND, GND) + NET_C(SOUND1.Q, 2H_B.B) + NET_C(GND, 2H_B.A) + NET_C(2H_B.CLRQ, ttlhigh) /* NOT IN SCHEMATICS */ + DIODE(D8, "1N4148") /* FIXME: try to identify */ + TTL_7404_INVERT(1H_B, 2H_B.QQ) + NET_C(R18.1, V5) + NET_C(R18.2, D8.A, C15.1) + NET_C(D8.K, 2H_B.RC) + NET_C(C15.2, 2H_B.C) + + RES(R7, RES_K(4.7)) /* verified */ + CAP(C4, CAP_U(4.7)) /* verified */ + + NET_C(1H_B.Q, R7.1) + NET_C(R7.2, C4.1, 1J_B.FC) + NET_C(R7.2, 2J_B.FC) + NET_C(C4.2, GND) + + SN74LS629(1J_B, CAP_N(39)) /* C5 */ + NET_C(1J_B.RNG, V5) + NET_C(1J_B.ENQ, ttllow) + NET_C(GND, 1J_B.GND) + + SN74LS629(2J_B, CAP_N(6.8)) /* C16 */ + NET_C(2J_B.RNG, V5) + NET_C(2J_B.ENQ, ttllow) + NET_C(GND, 2J_B.GND) + + TTL_7486_XOR(1K_B, 1J_B.Y, 2J_B.Y) + TTL_7408_AND(2K_B, 2H_B.Q, 1K_B) +NETLIST_END() + +/* ---------------------------------------------------------------------- */ +/* skid sound */ +/* ---------------------------------------------------------------------- */ + +// FIXME: Diodes are 1S953 +static NETLIST_START(nl_mario_snd7) + + RES(R61, RES_K(47)) + CAP(C41, CAP_U(4.7)) /* verified */ + + TTL_74123(4L_A) + NET_C(4L_A.VCC, V5) + NET_C(4L_A.GND, GND) + NET_C(SOUND7.Q, 4L_A.B) + NET_C(GND, 4L_A.A) + NET_C(4L_A.CLRQ, ttlhigh) /* NOT IN SCHEMATICS */ + DIODE(D10, "1N4148") /* FIXME: try to identify */ + TTL_7404_INVERT(4J_A, 4L_A.Q) + NET_C(R61.1, V5) + NET_C(R61.2, D10.A, C41.1) + NET_C(D10.K, 4L_A.RC) + NET_C(C41.2, 4L_A.C) + + RES(R65, RES_K(10)) + CAP(C44, CAP_U(3.3)) /* verified */ + + SN74LS629(4K_A, CAP_U(0.022)) + NET_C(4K_A.RNG, V5) + NET_C(4K_A.ENQ, ttllow) + NET_C(GND, 4K_A.GND) + NET_C(R65.1, 4J_A.Q) + NET_C(R65.2, 4K_A.FC, C44.1) + NET_C(C44.2, GND) + + CD4020_WI(3H, 4K_B.Y, ttllow, V5, GND) + TTL_7404_INVERT(4J_B, 3H.Q12) + + RES(R64, RES_K(20)) + CAP(C43, CAP_U(3.3)) /* verified */ + + SN74LS629(4K_B, CAP_U(0.0047)) + NET_C(4K_B.RNG, V5) + NET_C(4K_B.ENQ, ttllow) + NET_C(GND, 4K_B.GND) + NET_C(R64.1, 4J_B.Q) + NET_C(R64.2, 4K_B.FC, C43.1) + NET_C(C43.2, GND) + + TTL_7486_XOR(1K_C, 3H.Q4, 4K_A.Y) + TTL_7408_AND(2K_C, 4L_A.Q, 1K_C) + +NETLIST_END() + +/* ---------------------------------------------------------------------- */ +/* DAC sound */ +/* ---------------------------------------------------------------------- */ +static NETLIST_START(nl_mario_dac) + RES(R34, RES_M(2)) + RES(R35, RES_M(1)) + RES(R36, RES_M(1.8)) + LM3900(3M_1) + NET_C(3M_1.VM, GND) + NET_C(3M_1.VP, V5) + + NET_C(DAC.VOUT, R34.1) + NET_C(3M_1.MINUS, R34.2, R35.2) + NET_C(3M_1.OUT, R35.1) + NET_C(3M_1.PLUS, R36.1) + NET_C(R36.2, GND) + + RES(R21, RES_M(1.8)) + RES(R23, RES_K(10)) + RES(R25, RES_K(10)) + RES(R37, RES_K(750)) + RES(R38, RES_K(360)) + RES(R39, RES_K(750)) + + CAP(C18, CAP_P(100)) + CAP(C19, CAP_U(10)) + CAP(C20, CAP_U(1)) + CAP(C30, CAP_P(100)) + + LM3900(3M_2) + NET_C(3M_2.VM, GND) + NET_C(3M_2.VP, V5) + + NET_C(R35.1, C20.1) + NET_C(C20.2, R37.1) + NET_C(R37.2, R38.2, C18.1, R39.2) + + NET_C(C18.2, GND) + NET_C(R38.1, C30.2, 3M_2.MINUS) + NET_C(3M_2.OUT, R39.1, C30.1) + + NET_C(R21.1, 3M_2.PLUS) + NET_C(R21.2, C19.1, R25.2, R23.1) + NET_C(C19.2, R23.2, GND) + NET_C(R25.1, V5) +NETLIST_END() + +NETLIST_START(mario) + + LOCAL_SOURCE(nl_mario_snd0) + LOCAL_SOURCE(nl_mario_snd1) + LOCAL_SOURCE(nl_mario_snd7) + LOCAL_SOURCE(nl_mario_dac) + + SOLVER(Solver, 48000) + PARAM(Solver.ACCURACY, 1e-6) + PARAM(Solver.SOR_FACTOR, 1.0) + PARAM(Solver.GS_THRESHOLD, 5) + PARAM(Solver.GS_LOOPS, 1) + /* Dynamic timestepping avoids excessive newton loops on startup */ + PARAM(Solver.DYNAMIC_LTE, 5e-2) + PARAM(Solver.DYNAMIC_TS, 1) + ANALOG_INPUT(V5, 5) + + TTL_INPUT(SOUND0, 1) + INCLUDE(nl_mario_snd0) + + TTL_INPUT(SOUND1, 1) + INCLUDE(nl_mario_snd1) + + TTL_INPUT(SOUND7, 1) + INCLUDE(nl_mario_snd7) + + R2R_DAC(DAC, 3.4, 10000.0, 8) + NET_C(DAC.VGND, GND) + + INCLUDE(nl_mario_dac) + + /* ---------------------------------------------------------------------- */ + /* mixing */ + /* ---------------------------------------------------------------------- */ + + RES(R20, RES_K(22)) /* verified */ + RES(R19, RES_K(22)) /* verified */ + RES(R40, RES_K(22)) /* verified */ + RES(R41, RES_K(100)) /* verified */ + CAP(C31, CAP_U(0.022)) /* */ + + NET_C(2K_A.Q, R20.1) + NET_C(2K_B.Q, R19.1) + NET_C(2K_C.Q, R41.1) + + NET_C(R39.1, R40.1) + + NET_C(R20.2, R19.2, R40.2, R41.2, C31.1) + NET_C(C31.2, GND) + + CAP(C32, CAP_U(1)) /* verified */ + RES(R42, RES_K(43)) /* verified */ + RES(R43, RES_K(100)) /* verified */ + + NET_C(C31.1, C32.1) + NET_C(C32.2, R42.1, R43.2, Q10.B) + //NET_C(C32.2, R42.1, R43.2) + NET_C(R43.1, V5) + NET_C(R42.2, GND) +#if 1 + RES(R63, RES_K(1)) /* */ + RES(R62, 150) /* */ + + QBJT_EB(Q10, "2SC1815") + + NET_C(R62.2, GND) + NET_C(R62.1, Q10.E) + + NET_C(R63.1, V5) + NET_C(R63.2, Q10.C) + + CAP(C42, CAP_U(0.1)) + CAP(C47, CAP_U(4.7)) + RES(VR1, RES_K(10)) + + NET_C(C42.1, C47.1, R62.1) + NET_C(C42.2, GND) + NET_C(C47.2, VR1.1) + NET_C(VR1.2, GND) +#endif + /* ---------------------------------------------------------------------- */ + /* Output */ + /* ---------------------------------------------------------------------- */ + + RES(ROUT, 1000000) + + //NET_C(Q10.C, ROUT.1) + //NET_C(R43.2, ROUT.1) + NET_C(VR1.1, ROUT.1) + + NET_C(GND, ROUT.2) + + OPTIMIZE_FRONTIER(R40.1, RES_K(22), 50) +NETLIST_END() diff --git a/src/mame/audio/nl_mario.h b/src/mame/audio/nl_mario.h new file mode 100644 index 00000000000..f974efed7e1 --- /dev/null +++ b/src/mame/audio/nl_mario.h @@ -0,0 +1,4 @@ +// license:BSD-3-Clause +// copyright-holders:Andrew Gardner, Couriersud + +NETLIST_EXTERNAL(mario) diff --git a/src/mame/includes/mario.h b/src/mame/includes/mario.h index 40161d4f187..6201d67bb36 100644 --- a/src/mame/includes/mario.h +++ b/src/mame/includes/mario.h @@ -6,7 +6,7 @@ #include "machine/gen_latch.h" #include "machine/z80dma.h" -#define OLD_SOUND (1) +#define OLD_SOUND (0) #if !OLD_SOUND #include "machine/netlist.h" @@ -61,6 +61,7 @@ public: m_discrete(*this, "discrete"), #else m_audio_snd0(*this, "snd_nl:snd0"), + m_audio_snd1(*this, "snd_nl:snd1"), m_audio_snd7(*this, "snd_nl:snd7"), m_audio_dac(*this, "snd_nl:dac"), #endif @@ -82,6 +83,7 @@ public: optional_device m_discrete; #else optional_device m_audio_snd0; + optional_device m_audio_snd1; optional_device m_audio_snd7; optional_device m_audio_dac; #endif