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]
This commit is contained in:
couriersud 2016-12-31 03:18:04 +01:00 committed by angelosa
parent 9aa8f9d714
commit 47f788ed2d
11 changed files with 358 additions and 275 deletions

View File

@ -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",

View File

@ -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",

View File

@ -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
{

View File

@ -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

View File

@ -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, "-")

View File

@ -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()

View File

@ -20,6 +20,9 @@
#define LM358_DIP(name) \
NET_REGISTER_DEV(LM358_DIP, name)
#define LM3900(name) \
NET_REGISTER_DEV(LM3900, name)
/* ----------------------------------------------------------------------------
* External declarations
* ---------------------------------------------------------------------------*/

View File

@ -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)

306
src/mame/audio/nl_mario.cpp Normal file
View File

@ -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()

View File

@ -0,0 +1,4 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner, Couriersud
NETLIST_EXTERNAL(mario)

View File

@ -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