Previous 199869 Revisions Next

r34439 Saturday 17th January, 2015 at 15:21:12 UTC by Couriersud
Partial netlist sound implementation for Mario Bros. Luigi sound is
missing. By default, the previous discrete.h based sound is compiled.
Those curious can change OLD_SOUND to 0 in mario.h. [Couriersud]
[src/mame/audio]mario.c
[src/mame/includes]mario.h

trunk/src/mame/audio/mario.c
r242950r242951
22#include "cpu/z80/z80.h"
33#include "cpu/mcs48/mcs48.h"
44#include "sound/ay8910.h"
5#include "sound/discrete.h"
65
76#include "includes/mario.h"
87
r242950r242951
3938#define I8035_P1_W_AH(M,B,D) I8035_P1_W(M,ACTIVEHIGH_PORT_BIT(I8035_P1_R(M),B,(D)))
4039#define I8035_P2_W_AH(M,B,D) I8035_P2_W(M,ACTIVEHIGH_PORT_BIT(I8035_P2_R(M),B,(D)))
4140
41
42#if !OLD_SOUND
43
44/* ---------------------------------------------------------------------- */
45/* mario sound                                                            */
46/* ---------------------------------------------------------------------- */
47static NETLIST_START(nl_mario_snd0)
48
49    RES(R17, RES_K(27))               /* 20 according to parts list           */
50                                      /* 27 verified, 30K in schematics       */
51    CAP(C14, CAP_U(4.7))              /* verified                             */
52
53    TTL_74123(2H_A)
54    NET_C(2H_A.VCC, V5)
55    NET_C(2H_A.GND, GND)
56    NET_C(SOUND0.Q, 2H_A.B)
57    NET_C(GND, 2H_A.A)
58    NET_C(2H_A.CLRQ, ttlhigh)         /* NOT IN SCHEMATICS                    */
59    DIODE(D1, "1N4148")               /* FIXME: try to identify */
60    TTL_7404_INVERT(1H_A, 2H_A.QQ)
61    NET_C(R17.1, V5)
62    NET_C(R17.2, D1.A, C14.1)
63    NET_C(D1.K, 2H_A.RC)
64    NET_C(C14.2, 2H_A.C)
65
66    RES(R6, RES_K(4.7))               /* verified                             */
67    CAP(C3, CAP_U(10))                /* verified                             */
68
69    NET_C(1H_A.Q, R6.1)
70    NET_C(R6.2, C3.1, 1J_A.FC)
71    NET_C(R6.2, 2J_A.FC)
72    NET_C(C3.2, GND)
73
74    //#define MR_C6       CAP_N(3.9)        /* verified                           */
75
76    SN74LS629(1J_A, CAP_N(3.9))
77    NET_C(1J_A.RNG, V5)
78    NET_C(1J_A.ENQ, ttllow)
79    NET_C(GND, 1J_A.GND)
80
81    //#define MR_C17      CAP_N(22)        /* verified                            */
82
83    SN74LS629(2J_A, CAP_N(22))
84    NET_C(2J_A.RNG, V5)
85    NET_C(2J_A.ENQ, ttllow)
86    NET_C(GND, 2J_A.GND)
87
88    TTL_7486_XOR(1K_A, 1J_A.Y, 2J_A.Y)
89    TTL_7408_AND(2K_A, 2H_A.Q, 1K_A)
90NETLIST_END()
91
92/* ---------------------------------------------------------------------- */
93/* skid sound                                                            */
94/* ---------------------------------------------------------------------- */
95
96// FIXME: Diodes are 1S953
97static NETLIST_START(nl_mario_snd7)
98
99    RES(R61, RES_K(47))
100    CAP(C41, CAP_U(4.7))              /* verified                             */
101
102    TTL_74123(4L_A)
103    NET_C(4L_A.VCC, V5)
104    NET_C(4L_A.GND, GND)
105    NET_C(SOUND7.Q, 4L_A.B)
106    NET_C(GND, 4L_A.A)
107    NET_C(4L_A.CLRQ, ttlhigh)         /* NOT IN SCHEMATICS                    */
108    DIODE(D10, "1N4148")               /* FIXME: try to identify */
109    TTL_7404_INVERT(4J_A, 4L_A.Q)
110    NET_C(R61.1, V5)
111    NET_C(R61.2, D10.A, C41.1)
112    NET_C(D10.K, 4L_A.RC)
113    NET_C(C41.2, 4L_A.C)
114
115    RES(R65, RES_K(10))
116    CAP(C44, CAP_U(3.3))              /* verified                             */
117
118    SN74LS629(4K_A, CAP_U(0.022))
119    NET_C(4K_A.RNG, V5)
120    NET_C(4K_A.ENQ, ttllow)
121    NET_C(GND, 4K_A.GND)
122    NET_C(R65.1, 4J_A.Q)
123    NET_C(R65.2, 4K_A.FC, C44.1)
124    NET_C(C44.2, GND)
125
126    CD_4020(3H, 4K_B.Y, ttllow, V5, GND)
127    TTL_7404_INVERT(4J_B, 3H.Q12)
128
129    RES(R64, RES_K(20))
130    CAP(C43, CAP_U(3.3))              /* verified                             */
131
132    SN74LS629(4K_B, CAP_U(0.0047))
133    NET_C(4K_B.RNG, V5)
134    NET_C(4K_B.ENQ, ttllow)
135    NET_C(GND, 4K_B.GND)
136    NET_C(R64.1, 4J_B.Q)
137    NET_C(R64.2, 4K_B.FC, C43.1)
138    NET_C(C43.2, GND)
139
140    TTL_7486_XOR(1K_C, 3H.Q4, 4K_A.Y)
141    TTL_7408_AND(2K_C, 4L_A.Q, 1K_C)
142
143NETLIST_END()
144
145/* ---------------------------------------------------------------------- */
146/* DAC sound                                                            */
147/* ---------------------------------------------------------------------- */
148static NETLIST_START(nl_mario_dac)
149    RES(R34, RES_M(2))
150    RES(R35, RES_M(1))
151    RES(R36, RES_M(1.8))
152    LM3900(3M_1)
153    NET_C(3M_1.VM, GND)
154    NET_C(3M_1.VP, V5)
155
156    NET_C(DAC.VOUT, R34.1)
157    NET_C(3M_1.MINUS, R34.2, R35.2)
158    NET_C(3M_1.OUT, R35.1)
159    NET_C(3M_1.PLUS, R36.1)
160    NET_C(R36.2, GND)
161
162    RES(R21, RES_M(1.8))
163    RES(R23, RES_K(10))
164    RES(R25, RES_K(10))
165    RES(R37, RES_K(750))
166    RES(R38, RES_K(360))
167    RES(R39, RES_K(750))
168
169    CAP(C18, CAP_P(100))
170    CAP(C19, CAP_U(10))
171    CAP(C20, CAP_U(1))
172    CAP(C30, CAP_P(100))
173
174    LM3900(3M_2)
175    NET_C(3M_2.VM, GND)
176    NET_C(3M_2.VP, V5)
177
178    NET_C(R35.1, C20.1)
179    NET_C(C20.2, R37.1)
180    NET_C(R37.2, R38.2, C18.1, R39.2)
181
182    NET_C(C18.2, GND)
183    NET_C(R38.1, C30.2, 3M_2.MINUS)
184    NET_C(3M_2.OUT, R39.1, C30.1)
185
186    NET_C(R21.1, 3M_2.PLUS)
187    NET_C(R21.2, C19.1, R25.2, R23.1)
188    NET_C(C19.2, R23.2, GND)
189    NET_C(R25.1, V5)
190NETLIST_END()
191
192static NETLIST_START(nl_mario)
193
194    /* Standard stuff */
195
196    SOLVER(Solver, 48000)
197    PARAM(Solver.ACCURACY, 1e-8)
198    PARAM(Solver.SOR_FACTOR, 1.0)
199    PARAM(Solver.GS_THRESHOLD, 5)
200    PARAM(Solver.GS_LOOPS, 4)
201    //PARAM(Solver.LTE,     5e-2) // Default is not enough for paddle control
202    PARAM(Solver.DYNAMIC_TS,  0)
203    ANALOG_INPUT(V5, 5)
204
205    TTL_INPUT(SOUND0, 1)
206    INCLUDE(nl_mario_snd0)
207
208    TTL_INPUT(SOUND7, 1)
209    INCLUDE(nl_mario_snd7)
210
211    R2R_DAC(DAC, 3.4, 10000.0, 8)
212    NET_C(DAC.VGND, GND)
213
214    INCLUDE(nl_mario_dac)
215
216    /* ---------------------------------------------------------------------- */
217    /* mixing                                                                 */
218    /* ---------------------------------------------------------------------- */
219
220    RES(R20, RES_K(22))               /* verified                             */
221    RES(R19, RES_K(22))               /* verified                             */
222    RES(R40, RES_K(22))               /* verified                             */
223    RES(R41, RES_K(100))              /* verified                             */
224    CAP(C31, CAP_U(0.022))            /*                             */
225
226    NET_C(2K_A.Q, R20.1)
227    NET_C(GND, R19.1) //FIXME
228    NET_C(2K_C.Q, R41.1)
229
230#if 1
231    RES(DUM, RES_K(22))
232    NET_C(R39.1, DUM.1)
233    NET_C(DUM.2, GND)
234    FRONTIER(front1, R39.1, R40.1)
235#else
236    NET_C(R39.1, R40.1)
237#endif
238
239    NET_C(R20.2, R19.2, R40.2, R41.2, C31.1)
240    NET_C(C31.2, GND)
241
242    CAP(C32, CAP_U(1))                /* verified                             */
243    RES(R42, RES_K(43))               /* verified                             */
244    RES(R43, RES_K(100))              /* verified                             */
245
246    NET_C(C31.1, C32.1)
247    NET_C(C32.2, R42.1, R43.2, Q10.B)
248    //NET_C(C32.2, R42.1, R43.2)
249    NET_C(R43.1, V5)
250    NET_C(R42.2, GND)
251#if 1
252    RES(R63, RES_K(1))                /*                                      */
253    RES(R62, 150)                     /*                                      */
254
255    QBJT_EB(Q10, "2SC1815")
256
257    NET_C(R62.2, GND)
258    NET_C(R62.1, Q10.E)
259
260    NET_C(R63.1, V5)
261    NET_C(R63.2, Q10.C)
262
263    CAP(C42, CAP_U(0.1))
264    CAP(C47, CAP_U(4.7))
265    RES(VR1, RES_K(10))
266
267    NET_C(C42.1, C47.1, R62.1)
268    NET_C(C42.2, GND)
269    NET_C(C47.2, VR1.1)
270    NET_C(VR1.2, GND)
271#endif
272    /* ---------------------------------------------------------------------- */
273    /* Output                                                                 */
274    /* ---------------------------------------------------------------------- */
275
276    RES(ROUT, 1000000)
277
278    //NET_C(Q10.C, ROUT.1)
279    //NET_C(R43.2, ROUT.1)
280    NET_C(VR1.1, ROUT.1)
281
282    NET_C(GND, ROUT.2)
283
284NETLIST_END()
285
286#else
42287/****************************************************************
43288 *
44289 * Discrete Sound defines
r242950r242951
390635   DISCRETE_TASK_END()
391636
392637DISCRETE_SOUND_END
393
638#endif
394639/****************************************************************
395640 *
396641 * EA / Banking
r242950r242951
498743
499744WRITE8_MEMBER(mario_state::mario_sh_sound_w)
500745{
746#if OLD_SOUND
501747   m_discrete->write(space, DS_DAC, data);
748#else
749   m_audio_dac->write(data);
750#endif
502751}
503752
504753WRITE8_MEMBER(mario_state::mario_sh_p1_w)
r242950r242951
538787/* Mario running sample */
539788WRITE8_MEMBER(mario_state::mario_sh1_w)
540789{
790#if OLD_SOUND
541791   m_discrete->write(space, DS_SOUND0_INP, 0);
792#else
793    m_audio_snd0->write(data);
794#endif
542795}
543796
544797/* Luigi running sample */
545798WRITE8_MEMBER(mario_state::mario_sh2_w)
546799{
800#if OLD_SOUND
547801   m_discrete->write(space, DS_SOUND1_INP, 0);
802#endif
548803}
549804
550805/* Misc samples */
r242950r242951
577832         I8035_P1_W_AH(space, 3, data & 1);
578833         break;
579834      case 7: /* skid */
835#if OLD_SOUND
580836         machine().device<discrete_device>("discrete")->write(space, DS_SOUND7_INP, data & 1);
837#else
838          m_audio_snd7->write((data & 1) ^ 1);
839#endif
581840         break;
582841   }
583842}
r242950r242951
626885   MCFG_CPU_IO_MAP(mario_sound_io_map)
627886
628887   MCFG_SPEAKER_STANDARD_MONO("mono")
888
889#if OLD_SOUND
629890   MCFG_SOUND_ADD("discrete", DISCRETE, 0)
630891   MCFG_DISCRETE_INTF(mario)
631892   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1)
893#else
894    MCFG_SOUND_ADD("snd_nl", NETLIST_SOUND, 48000)
895    MCFG_NETLIST_SETUP(nl_mario)
896    MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
632897
898    MCFG_NETLIST_LOGIC_INPUT("snd_nl", "snd0", "SOUND0.IN", 0, 1)
899    MCFG_NETLIST_LOGIC_INPUT("snd_nl", "snd7", "SOUND7.IN", 0, 1)
900    MCFG_NETLIST_LOGIC_INPUT("snd_nl", "dac", "DAC.VAL", 0, 255)
901
902    MCFG_NETLIST_STREAM_OUTPUT("snd_nl", 0, "ROUT.1")
903    MCFG_NETLIST_ANALOG_MULT_OFFSET(150000.0, 0.0)
904#endif
905
633906MACHINE_CONFIG_END
634907
635908MACHINE_CONFIG_FRAGMENT( masao_audio )
trunk/src/mame/includes/mario.h
r242950r242951
11#ifndef MARIO_H_
22#define MARIO_H_
33
4#include "sound/discrete.h"
54#include "machine/z80dma.h"
65
6#define OLD_SOUND   (1)
7
8#if !OLD_SOUND
9#include "machine/netlist.h"
10#include "netlist/devices/net_lib.h"
11#else
12#include "sound/discrete.h"
13#endif
14
715/*
816 * From the schematics:
917 *
r242950r242951
4250      m_gfxdecode(*this, "gfxdecode"),
4351      m_palette(*this, "palette"),
4452      m_z80dma(*this, "z80dma"),
53#if OLD_SOUND
4554      m_discrete(*this, "discrete"),
55#else
56      m_audio_snd0(*this, "snd_nl:snd0"),
57        m_audio_snd7(*this, "snd_nl:snd7"),
58        m_audio_dac(*this, "snd_nl:dac"),
59#endif
4660      m_spriteram(*this, "spriteram"),
4761      m_videoram(*this, "videoram"),
4862      m_monitor(0) { }
r242950r242951
5367   required_device<gfxdecode_device> m_gfxdecode;
5468   required_device<palette_device> m_palette;
5569   optional_device<z80dma_device> m_z80dma;
70#if OLD_SOUND
5671   optional_device<discrete_device> m_discrete;
72#else
73   optional_device<netlist_mame_logic_input_t> m_audio_snd0;
74    optional_device<netlist_mame_logic_input_t> m_audio_snd7;
75    optional_device<netlist_mame_logic_input_t> m_audio_dac;
76#endif
5777
5878   /* memory pointers */
5979   required_shared_ptr<UINT8> m_spriteram;


Previous 199869 Revisions Next


© 1997-2024 The MAME Team