diff options
author | couriersud <couriersud@arcor.de> | 2016-12-31 03:18:04 +0100 |
---|---|---|
committer | couriersud <couriersud@arcor.de> | 2016-12-31 15:21:05 +0100 |
commit | 3a4bc804c0b39537ede76f7b2d9c939ab8fdcd09 (patch) | |
tree | bfa2f2e75f207adafebc94f9d4dee05213d584f9 | |
parent | 6787cd3bb81b5696ceabd048a6c2f88c2d633e7a (diff) |
Hook up luigi walking sound in netlist mario sound implementation.
Mario driver now uses netlist audio implementation instead of discrete
implementation. The previous discrete sound emulation has not been
removed yet because it still contains a lot of documentation.
[Couriersud]
-rw-r--r-- | scripts/target/mame/arcade.lua | 2 | ||||
-rw-r--r-- | scripts/target/mame/nl.lua | 2 | ||||
-rw-r--r-- | src/lib/netlist/analog/nld_opamps.cpp | 29 | ||||
-rw-r--r-- | src/lib/netlist/analog/nld_opamps.h | 5 | ||||
-rw-r--r-- | src/lib/netlist/devices/net_lib.cpp | 2 | ||||
-rw-r--r-- | src/lib/netlist/macro/nlm_opamp.cpp | 32 | ||||
-rw-r--r-- | src/lib/netlist/macro/nlm_opamp.h | 3 | ||||
-rw-r--r-- | src/mame/audio/mario.cpp | 244 | ||||
-rw-r--r-- | src/mame/audio/nl_mario.cpp | 306 | ||||
-rw-r--r-- | src/mame/audio/nl_mario.h | 4 | ||||
-rw-r--r-- | src/mame/includes/mario.h | 4 |
11 files changed, 358 insertions, 275 deletions
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<discrete_device> m_discrete; #else optional_device<netlist_mame_logic_input_t> m_audio_snd0; + optional_device<netlist_mame_logic_input_t> m_audio_snd1; optional_device<netlist_mame_logic_input_t> m_audio_snd7; optional_device<netlist_mame_int_input_t> m_audio_dac; #endif |