Previous 199869 Revisions Next

r18511 Sunday 14th October, 2012 at 06:28:35 UTC by Aaron Giles
Created a base class delegate_common_base for all delegate
types. Created a binding_type_exception which is thrown when
a bind attempt fails due to mismatched types.

Added helper templates to driver_device to wrap legacy
device read/write handlers into driver_device member functions.
This should help move some things forward until more common
code is converted into proper devices.

Introduce new module devcb2 which contains modernized
versions of devcb. Compared to previous implementation
this one is simpler overall, trampolining calls through
a single internal set of adapter functions. The new
versions are also designed to be specified in the
machine_config rather than in structures, so they are
no longer simple POD types. Additional new/changed
features:

* reads and writes can map to delegates for line or 8/16/32/64-bit
* reads and writes can map to an I/O port
* reads can be mapped to a constant value, with or without logging
* writes can be mapped to a device's input line
* all reads/writes can have a shift, mask, and/or xor applied
* devices can opt to make the functions safe-if-NULL when resolving
* only member function types are supported

Rewrote the YM2151 interface to be fully modernized, and
removed the ym2151_interface struct in favor of inline configs
using the new devcb2 mechanism. In many cases, removed
no longer needed trampolines, instead taking advantage of
direct support for input line writes.
[src/emu]delegate.h devcb.h devcb2.c* devcb2.h* device.h driver.h emu.h emu.mak mconfig.h
[src/emu/sound]2151intf.c 2151intf.h
[src/mame/audio]atarijsa.c leland.c m72.c m72.h seibu.c seibu.h t5182.c t5182.h williams.c
[src/mame/drivers]88games.c ajax.c aliens.c amspdwy.c aquarium.c asterix.c asuka.c atarisy1.c atarisy2.c ataxx.c badlands.c bigstrkb.c bingoc.c bionicc.c blockhl.c blockout.c boogwing.c cabal.c cave.c cbuster.c chinagat.c chqflag.c cischeat.c cninja.c contra.c cps1.c crimfght.c cyberbal.c darkmist.c darkseal.c dassault.c dblewing.c dbz.c ddragon.c ddragon3.c deco32.c dietgo.c dooyong.c exterm.c exzisus.c f-32.c fantland.c fcrash.c flkatck.c funkyjet.c gaiden.c gauntlet.c gbusters.c gotcha.c gradius3.c hyprduel.c jackal.c kaneko16.c lemmings.c m107.c m72.c m90.c m92.c madmotor.c mainevt.c megasys1.c metro.c micro3d.c mlanding.c moo.c mugsmash.c mustache.c namcos1.c namcos2.c namcos21.c namcos86.c nemesis.c nmk16.c opwolf.c overdriv.c panicr.c parodius.c rainbow.c rastan.c rbmk.c rockrage.c rohga.c rpunch.c segahang.c segaorun.c segas16a.c segas16b.c segas24.c segaxbd.c segaybd.c seta.c sf.c shadfrce.c shisen.c sidearms.c silkroad.c silvmil.c simpsons.c snowbros.c suna16.c supbtime.c surpratk.c system16.c taito_x.c tatsumi.c tceptor.c tecmo16.c thunderx.c tmnt.c tnzs.c toaplan2.c tomcat.c topspeed.c tumbleb.c tumblep.c twin16.c ultraman.c unico.c vamphalf.c vaportra.c vball.c vendetta.c vigilant.c wecleman.c wwfsstar.c wwfwfest.c xexex.c xmen.c
[src/mame/includes]blockout.h ddragon.h deco32.h fantland.h megasys1.h rpunch.h segas24.h sidearms.h
[src/mame/machine]atarigen.c atarigen.h tatsumi.c
[src/mess/drivers]x1.c x68k.c
[src/mess/machine]isa_ibm_mfc.c

trunk/src/emu/emu.h
r18510r18511
139139
140140// generic helpers
141141#include "devcb.h"
142#include "devcb2.h"
142143#include "drivers/xtal.h"
143144#include "machine/generic.h"
144145#include "video/generic.h"
trunk/src/emu/sound/2151intf.c
r18510r18511
11/***************************************************************************
22
3  2151intf.c
3   2151intf.c
44
5  Support interface YM2151(OPM)
5   Support interface YM2151(OPM)
66
77***************************************************************************/
88
r18510r18511
1212#include "ym2151.h"
1313
1414
15struct ym2151_state
16{
17   sound_stream *         stream;
18   emu_timer *            timer[2];
19   void *               chip;
20   UINT8               lastreg;
21   devcb_resolved_write_line irqhandler;
22   devcb_resolved_write8 portwritehandler;
23};
2415
16const device_type YM2151 = &device_creator<ym2151_device>;
2517
26INLINE ym2151_state *get_safe_token(device_t *device)
27{
28   assert(device != NULL);
29   assert(device->type() == YM2151);
30   return (ym2151_state *)downcast<ym2151_device *>(device)->token();
31}
3218
19//-------------------------------------------------
20//  ym2151_device - constructor
21//-------------------------------------------------
3322
34static STREAM_UPDATE( ym2151_update )
23ym2151_device::ym2151_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
24   : device_t(mconfig, YM2151, "YM2151", tag, owner, clock),
25     device_sound_interface(mconfig, *this),
26     m_irqhandler(*this),
27     m_portwritehandler(*this)
3528{
36   ym2151_state *info = (ym2151_state *)param;
37   ym2151_update_one(info->chip, outputs, samples);
3829}
3930
40static void ym2151_irq_frontend(device_t *device, int irq)
41{
42   ym2151_state *info = get_safe_token(device);
43   info->irqhandler(irq);
44}
4531
46static void ym2151_port_write_frontend(device_t *device, offs_t offset, UINT8 data)
47{
48   ym2151_state *info = get_safe_token(device);
49   info->portwritehandler(offset, data);
50}
32//-------------------------------------------------
33//  read - read from the device
34//-------------------------------------------------
5135
52static DEVICE_START( ym2151 )
36READ8_MEMBER( ym2151_device::read )
5337{
54   static const ym2151_interface dummy = { DEVCB_NULL };
55   ym2151_state *info = get_safe_token(device);
56   int rate;
57
58   const ym2151_interface *intf = device->static_config() ? (const ym2151_interface *)device->static_config() : &dummy;
59   info->irqhandler.resolve(intf->irqhandler, *device);
60   info->portwritehandler.resolve(intf->portwritehandler, *device);
61
62   rate = device->clock()/64;
63
64   /* stream setup */
65   info->stream = device->machine().sound().stream_alloc(*device,0,2,rate,info,ym2151_update);
66
67   info->chip = ym2151_init(device,device->clock(),rate);
68   assert_always(info->chip != NULL, "Error creating YM2151 chip");
69
70   ym2151_set_irq_handler(info->chip,ym2151_irq_frontend);
71   ym2151_set_port_write_handler(info->chip,ym2151_port_write_frontend);
72}
73
74
75static DEVICE_STOP( ym2151 )
76{
77   ym2151_state *info = get_safe_token(device);
78   ym2151_shutdown(info->chip);
79}
80
81static DEVICE_RESET( ym2151 )
82{
83   ym2151_state *info = get_safe_token(device);
84   ym2151_reset_chip(info->chip);
85}
86
87
88READ8_DEVICE_HANDLER( ym2151_r )
89{
90   ym2151_state *token = get_safe_token(device);
91
9238   if (offset & 1)
9339   {
94      token->stream->update();
95      return ym2151_read_status(token->chip);
40      m_stream->update();
41      return ym2151_read_status(m_chip);
9642   }
9743   else
9844      return 0xff;   /* confirmed on a real YM2151 */
9945}
10046
101WRITE8_DEVICE_HANDLER( ym2151_w )
102{
103   ym2151_state *token = get_safe_token(device);
10447
48//-------------------------------------------------
49//  write - write from the device
50//-------------------------------------------------
51
52WRITE8_MEMBER( ym2151_device::write )
53{
10554   if (offset & 1)
10655   {
107      token->stream->update();
108      ym2151_write_reg(token->chip, token->lastreg, data);
56      m_stream->update();
57      ym2151_write_reg(m_chip, m_lastreg, data);
10958   }
11059   else
111      token->lastreg = data;
60      m_lastreg = data;
11261}
11362
11463
115READ8_DEVICE_HANDLER( ym2151_status_port_r ) { return ym2151_r(device, space, 1); }
64READ8_MEMBER( ym2151_device::status_r ) { return read(space, 1); }
11665
117WRITE8_DEVICE_HANDLER( ym2151_register_port_w ) { ym2151_w(device, space, 0, data); }
118WRITE8_DEVICE_HANDLER( ym2151_data_port_w ) { ym2151_w(device, space, 1, data); }
66WRITE8_MEMBER( ym2151_device::register_w ) { write(space, 0, data); }
67WRITE8_MEMBER( ym2151_device::data_w ) { write(space, 1, data); }
11968
12069
121const device_type YM2151 = &device_creator<ym2151_device>;
122
123ym2151_device::ym2151_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
124   : device_t(mconfig, YM2151, "YM2151", tag, owner, clock),
125     device_sound_interface(mconfig, *this)
126{
127   m_token = global_alloc_clear(ym2151_state);
128}
129
13070//-------------------------------------------------
131//  device_config_complete - perform any
132//  operations now that the configuration is
133//  complete
134//-------------------------------------------------
135
136void ym2151_device::device_config_complete()
137{
138}
139
140//-------------------------------------------------
14171//  device_start - device-specific startup
14272//-------------------------------------------------
14373
14474void ym2151_device::device_start()
14575{
146   DEVICE_START_NAME( ym2151 )(this);
76   m_irqhandler.resolve_safe();
77   m_portwritehandler.resolve_safe();
78   
79   // stream setup
80   int rate = clock() / 64;
81   m_stream = stream_alloc(0, 2, rate);
82
83   m_chip = ym2151_init(this, clock(), rate);
84   assert_always(m_chip != NULL, "Error creating YM2151 chip");
85
86   ym2151_set_irq_handler(m_chip, irq_frontend);
87   ym2151_set_port_write_handler(m_chip, port_write_frontend);
14788}
14889
90
14991//-------------------------------------------------
15092//  device_reset - device-specific reset
15193//-------------------------------------------------
15294
15395void ym2151_device::device_reset()
15496{
155   DEVICE_RESET_NAME( ym2151 )(this);
97   ym2151_reset_chip(m_chip);
15698}
15799
100
158101//-------------------------------------------------
159102//  device_stop - device-specific stop
160103//-------------------------------------------------
161104
162105void ym2151_device::device_stop()
163106{
164   DEVICE_STOP_NAME( ym2151 )(this);
107   ym2151_shutdown(m_chip);
165108}
166109
110
167111//-------------------------------------------------
168112//  sound_stream_update - handle a stream update
169113//-------------------------------------------------
170114
171115void ym2151_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
172116{
173   // should never get here
174   fatalerror("sound_stream_update called; not applicable to legacy sound devices\n");
117   ym2151_update_one(m_chip, outputs, samples);
175118}
176119
177120
121void ym2151_device::irq_frontend(device_t *device, int irq)
122{
123   downcast<ym2151_device *>(device)->m_irqhandler(irq);
124}
125
126void ym2151_device::port_write_frontend(device_t *device, offs_t offset, UINT8 data)
127{
128   downcast<ym2151_device *>(device)->m_portwritehandler(offset, data);
129}
trunk/src/emu/sound/2151intf.h
r18510r18511
1/***************************************************************************
2
3    2151intf.h
4
5    MAME interface to YM2151 emulator.
6
7***************************************************************************/
8
19#pragma once
210
311#ifndef __2151INTF_H__
r18510r18511
311#define __2151INTF_H__
412
5#include "devlegcy.h"
613
7struct ym2151_interface
8{
9   devcb_write_line irqhandler;
10   devcb_write8 portwritehandler;
11};
14//**************************************************************************
15//  INTERFACE CONFIGURATION MACROS
16//**************************************************************************
1217
13DECLARE_READ8_DEVICE_HANDLER( ym2151_r );
14DECLARE_WRITE8_DEVICE_HANDLER( ym2151_w );
18#define MCFG_YM2151_ADD(_tag, _clock) \
19   MCFG_DEVICE_ADD(_tag, YM2151, _clock)
1520
16DECLARE_READ8_DEVICE_HANDLER( ym2151_status_port_r );
17DECLARE_WRITE8_DEVICE_HANDLER( ym2151_register_port_w );
18DECLARE_WRITE8_DEVICE_HANDLER( ym2151_data_port_w );
21#define MCFG_YM2151_IRQ_HANDLER(_devcb) \
22   devcb = &ym2151_device::set_irq_handler(*device, DEVCB2_##_devcb); \
1923
20class ym2151_device : public device_t,
21                                  public device_sound_interface
24#define MCFG_YM2151_PORT_WRITE_HANDLER(_devcb) \
25   devcb = &ym2151_device::set_port_write_handler(*device, DEVCB2_##_devcb); \
26
27
28
29//**************************************************************************
30//  TYPE DEFINITIONS
31//**************************************************************************
32
33
34// ======================> ym2151_device
35
36class ym2151_device :    public device_t,
37                  public device_sound_interface
2238{
2339public:
40   // construction/destruction
2441   ym2151_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
25   ~ym2151_device() { global_free(m_token); }
2642
27   // access to legacy token
28   void *token() const { assert(m_token != NULL); return m_token; }
43   // static configuration helpers
44   template<class _Object> static devcb2_base &set_irq_handler(device_t &device, _Object object) { return downcast<ym2151_device &>(device).m_irqhandler.set_callback(object); }
45   template<class _Object> static devcb2_base &set_port_write_handler(device_t &device, _Object object) { return downcast<ym2151_device &>(device).m_portwritehandler.set_callback(object); }
46
47   // read/write
48   DECLARE_READ8_MEMBER( read );
49   DECLARE_WRITE8_MEMBER( write );
50   
51   DECLARE_READ8_MEMBER( status_r );
52   DECLARE_WRITE8_MEMBER( register_w );
53   DECLARE_WRITE8_MEMBER( data_w );
54
2955protected:
3056   // device-level overrides
31   virtual void device_config_complete();
3257   virtual void device_start();
3358   virtual void device_stop();
r18510r18511
3661
3762   // sound stream update overrides
3863   virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
64
3965private:
66   // internal helpers
67   static void irq_frontend(device_t *device, int irq);
68   static void port_write_frontend(device_t *device, offs_t offset, UINT8 data);
69
4070   // internal state
41   void *m_token;
71   sound_stream *         m_stream;
72   emu_timer *            m_timer[2];
73   void *               m_chip;
74   UINT8               m_lastreg;
75   devcb2_write_line      m_irqhandler;
76   devcb2_write8         m_portwritehandler;
4277};
4378
79
80// device type definition
4481extern const device_type YM2151;
4582
4683
trunk/src/emu/driver.h
r18510r18511
202202      (machine.driver_data<_DriverClass>()->*_Function)();
203203   }
204204
205   // member-to-legacy-static wrappers   
206   template<read_line_device_func _Func>
207   DECLARE_READ_LINE_MEMBER( member_wrapper_line ) { return (*_Func)(this); }
208   template<write_line_device_func _Func>
209   DECLARE_WRITE_LINE_MEMBER( member_wrapper_line ) { (*_Func)(this, state); }
210   template<read8_device_func _Func>
211   DECLARE_READ8_MEMBER( member_wrapper8 ) { return (*_Func)(this, space, offset, mem_mask); }
212   template<write8_device_func _Func>
213   DECLARE_WRITE8_MEMBER( member_wrapper8 ) { (*_Func)(this, space, offset, data, mem_mask); }
214   template<read16_device_func _Func>
215   DECLARE_READ16_MEMBER( member_wrapper16 ) { return (*_Func)(this, space, offset, mem_mask); }
216   template<write16_device_func _Func>
217   DECLARE_WRITE16_MEMBER( member_wrapper16 ) { (*_Func)(this, space, offset, data, mem_mask); }
218   template<read32_device_func _Func>
219   DECLARE_READ32_MEMBER( member_wrapper32 ) { return (*_Func)(this, space, offset, mem_mask); }
220   template<write32_device_func _Func>
221   DECLARE_WRITE32_MEMBER( member_wrapper32 ) { (*_Func)(this, space, offset, data, mem_mask); }
222   template<read64_device_func _Func>
223   DECLARE_READ64_MEMBER( member_wrapper64 ) { return (*_Func)(this, space, offset, mem_mask); }
224   template<write64_device_func _Func>
225   DECLARE_WRITE64_MEMBER( member_wrapper64 ) { (*_Func)(this, space, offset, data, mem_mask); }
226
205227   // dummy driver_init callbacks
206228   void init_0() { }
207229
trunk/src/emu/delegate.h
r18510r18511
107107#ifndef __DELEGATE_H__
108108#define __DELEGATE_H__
109109
110// standard C++ includes
111#include <exception>
112#include <typeinfo>
110113
114
111115//**************************************************************************
112116//  MACROS
113117//**************************************************************************
r18510r18511
151155};
152156
153157
158// ======================> binding_type_exception
159
160// exception that is thrown when a bind fails the dynamic_cast
161class binding_type_exception : public std::exception
162{
163public:
164   binding_type_exception(const std::type_info &target_type, const std::type_info &actual_type)
165      : m_target_type(target_type), m_actual_type(actual_type) { }
166   const std::type_info &m_target_type;
167   const std::type_info &m_actual_type;
168};
169
170
154171// ======================> delegate_traits
155172
156173// delegate_traits is a meta-template that is used to provide a static function pointer
r18510r18511
216233
217234
218235//**************************************************************************
236//  COMMON DELEGATE BASE CLASS
237//**************************************************************************
238
239// ======================> delegate_common_base
240
241// common non-templatized base class
242class delegate_common_base
243{
244protected:
245   typedef delegate_generic_class *(*late_bind_func)(delegate_late_bind &object);
246
247   // construction
248   delegate_common_base(const char *name = NULL, late_bind_func latebinder = NULL, delegate_generic_class *object = NULL)
249      : m_name(name),
250        m_object(object),
251        m_latebinder(latebinder) { }
252
253   delegate_common_base(const delegate_common_base &src)
254      : m_name(src.m_name),
255        m_object(src.m_object),
256        m_latebinder(src.m_latebinder) { }
257
258public:
259   // getters
260   bool has_object() const { return (m_object != NULL); }
261   const char *name() const { return m_name; }
262
263protected:
264   // late binding helper
265   template<class _FunctionClass>
266   static delegate_generic_class *late_bind_helper(delegate_late_bind &object)
267   {
268      _FunctionClass *result = dynamic_cast<_FunctionClass *>(&object);
269      if (result == NULL)
270         throw binding_type_exception(typeid(_FunctionClass), typeid(object));
271      return reinterpret_cast<delegate_generic_class *>(result);
272   }
273
274   // internal state
275   const char *            m_name;            // name string
276   delegate_generic_class *   m_object;         // pointer to the post-cast object
277   late_bind_func            m_latebinder;      // late binding helper
278};
279
280
281
282//**************************************************************************
219283//  COMPATIBLE DELEGATES
220284//**************************************************************************
221285
r18510r18511
272336
273337// general delegate class template supporting up to 4 parameters
274338template<typename _ReturnType, typename _P1Type = _noparam, typename _P2Type = _noparam, typename _P3Type = _noparam, typename _P4Type = _noparam, typename _P5Type = _noparam>
275class delegate_base
339class delegate_base : public delegate_common_base
276340{
277   typedef delegate_generic_class *(*late_bind_func)(delegate_late_bind &object);
278
279341public:
280342   // define our traits
281343   template<class _FunctionClass>
r18510r18511
289351
290352   // generic constructor
291353   delegate_base()
292      : m_name(NULL),
293        m_object(NULL),
294        m_callobject(NULL),
295        m_function(NULL),
296        m_latebinder(NULL) { }
354      : m_function(NULL),
355        m_callobject(NULL) { }
297356
298357   // copy constructor
299358   delegate_base(const delegate_base &src)
300      : m_name(src.m_name),
301        m_object(src.m_object),
359      : delegate_common_base(src),
360        m_function(src.m_function),
302361        m_callobject(src.is_mfp() ? reinterpret_cast<delegate_generic_class *>(this) : src.m_object),
303        m_function(src.m_function),
304        m_rawfunction(src.m_rawfunction),
305        m_latebinder(src.m_latebinder) { }
362        m_rawfunction(src.m_rawfunction) { }
306363
307364   // copy constructor with late bind
308365   delegate_base(const delegate_base &src, delegate_late_bind &object)
309      : m_name(src.m_name),
310        m_object(src.m_object),
366      : delegate_common_base(src),
367        m_function(src.m_function),
311368        m_callobject(src.is_mfp() ? reinterpret_cast<delegate_generic_class *>(this) : src.m_object),
312        m_function(src.m_function),
313        m_rawfunction(src.m_rawfunction),
314        m_latebinder(src.m_latebinder) { late_bind(object); }
369        m_rawfunction(src.m_rawfunction)
370   {
371      late_bind(object);
372   }
315373
316374   // construct from member function with object pointer
317375   template<class _FunctionClass>
318376   delegate_base(typename traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object)
319      : m_name(name),
320        m_object(NULL),
377      : delegate_common_base(name, &late_bind_helper<_FunctionClass>),
378        m_function(&delegate_base::method_stub<_FunctionClass>),
321379        m_callobject(reinterpret_cast<delegate_generic_class *>(this)),
322        m_function(&delegate_base::method_stub<_FunctionClass>),
323        m_rawfunction(funcptr),
324        m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); }
380        m_rawfunction(funcptr)
381   {
382      bind(reinterpret_cast<delegate_generic_class *>(object));
383   }
325384
326385   // construct from static function with object pointer
327386   template<class _FunctionClass>
328387   delegate_base(typename traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object)
329      : m_name(name),
330        m_object(NULL),
331        m_callobject(NULL),
388      : delegate_common_base(name, &late_bind_helper<_FunctionClass>),
332389        m_function(reinterpret_cast<generic_static_func>(funcptr)),
333        m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); }
390        m_callobject(NULL)
391   {
392      bind(reinterpret_cast<delegate_generic_class *>(object));
393   }
334394
335395   // construct from static reference function with object pointer
336396   template<class _FunctionClass>
337397   delegate_base(typename traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object)
338      : m_name(name),
339        m_object(NULL),
340        m_callobject(NULL),
398      : delegate_common_base(name, &late_bind_helper<_FunctionClass>),
341399        m_function(reinterpret_cast<generic_static_func>(funcptr)),
342        m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); }
400        m_callobject(NULL)
401   {
402      bind(reinterpret_cast<delegate_generic_class *>(object));
403   }
343404
344405   // copy operator
345406   delegate_base &operator=(const delegate_base &src)
r18510r18511
364425
365426   // getters
366427   bool isnull() const { return (m_function == NULL); }
367   bool has_object() const { return (m_object != NULL); }
368   const char *name() const { return m_name; }
369428
370429   // call the function
371430   _ReturnType operator()() const { return (*m_function)(m_callobject); }
r18510r18511
444503       return (reinterpret_cast<_FunctionClass *>(_this->m_object)->*mfp)(p1, p2, p3, p4, p5);
445504    }
446505
447   // late binding helper
448   template<class _FunctionClass>
449   static delegate_generic_class *late_bind_helper(delegate_late_bind &object)
450   {
451      _FunctionClass *result = dynamic_cast<_FunctionClass *>(&object);
452      return reinterpret_cast<delegate_generic_class *>(result);
453   }
454
455506   // internal state
456   const char *            m_name;            // name string
457   delegate_generic_class *   m_object;         // pointer to the post-cast object
507   generic_static_func         m_function;         // generic static function pointer
458508   delegate_generic_class *   m_callobject;      // pointer to the object used for calling
459   generic_static_func         m_function;         // generic static function pointer
460509   delegate_raw_mfp         m_rawfunction;      // copy of raw MFP
461   late_bind_func            m_latebinder;      // late binding helper
462510};
463511
464512#endif
r18510r18511
525573// ======================> delegate_base
526574
527575template<typename _ReturnType, typename _P1Type = _noparam, typename _P2Type = _noparam, typename _P3Type = _noparam, typename _P4Type = _noparam, typename _P5Type = _noparam>
528class delegate_base
576class delegate_base : public delegate_common_base
529577{
530   typedef delegate_generic_class *(*late_bind_func)(delegate_late_bind &object);
531
532578public:
533579   // define our traits
534580   template<class _FunctionClass>
r18510r18511
542588
543589   // generic constructor
544590   delegate_base()
545      : m_name(NULL),
546        m_object(NULL),
547        m_function(NULL),
548        m_latebinder(NULL) { }
591      : m_function(NULL) { }
549592
550593   // copy constructor
551594   delegate_base(const delegate_base &src)
552      : m_name(src.m_name),
553        m_object(src.m_object),
595      : delegate_common_base(src),
554596        m_function(src.m_function),
555        m_rawfunction(src.m_rawfunction),
556        m_latebinder(src.m_latebinder) { }
597        m_rawfunction(src.m_rawfunction) { }
557598
558599   // copy constructor with late bind
559600   delegate_base(const delegate_base &src, delegate_late_bind &object)
560      : m_name(src.m_name),
561        m_object(src.m_object),
601      : delegate_common_base(src),
562602        m_function(src.m_function),
563        m_rawfunction(src.m_rawfunction),
564        m_latebinder(src.m_latebinder) { late_bind(object); }
603        m_rawfunction(src.m_rawfunction)
604   {
605      late_bind(object);
606   }
565607
566608   // construct from member function with object pointer
567609   template<class _FunctionClass>
568610   delegate_base(typename traits<_FunctionClass>::member_func_type funcptr, const char *name, _FunctionClass *object)
569      : m_name(name),
570        m_object(NULL),
611      : delegate_common_base(name, &late_bind_helper<_FunctionClass>),
571612        m_function(NULL),
572        m_rawfunction(funcptr),
573        m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); }
613        m_rawfunction(funcptr)
614   {
615      bind(reinterpret_cast<delegate_generic_class *>(object));
616   }
574617
575618   // construct from static function with object pointer
576619   template<class _FunctionClass>
577620   delegate_base(typename traits<_FunctionClass>::static_func_type funcptr, const char *name, _FunctionClass *object)
578      : m_name(name),
579        m_object(NULL),
580        m_function(reinterpret_cast<generic_static_func>(funcptr)),
581        m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); }
621      : delegate_common_base(name, &late_bind_helper<_FunctionClass>),
622        m_function(reinterpret_cast<generic_static_func>(funcptr))
623   {
624      bind(reinterpret_cast<delegate_generic_class *>(object));
625   }
582626
583627   // construct from static reference function with object pointer
584628   template<class _FunctionClass>
585629   delegate_base(typename traits<_FunctionClass>::static_ref_func_type funcptr, const char *name, _FunctionClass *object)
586      : m_name(name),
587        m_object(NULL),
588        m_function(reinterpret_cast<generic_static_func>(funcptr)),
589        m_latebinder(&late_bind_helper<_FunctionClass>) { bind(reinterpret_cast<delegate_generic_class *>(object)); }
630      : delegate_common_base(name, &late_bind_helper<_FunctionClass>),
631        m_function(reinterpret_cast<generic_static_func>(funcptr))
632   {
633      bind(reinterpret_cast<delegate_generic_class *>(object));
634   }
590635
591636   // copy operator
592637   delegate_base &operator=(const delegate_base &src)
r18510r18511
610655
611656   // getters
612657   bool isnull() const { return (m_function == NULL && m_rawfunction.m_function == 0); }
613   bool has_object() const { return (m_object != NULL); }
614   const char *name() const { return m_name; }
615658
616659   // call the function
617660   _ReturnType operator()() const { return (*m_function)(m_object); }
r18510r18511
633676         m_function = reinterpret_cast<generic_static_func>(m_rawfunction.convert_to_generic(m_object));
634677   }
635678
636   // late binding helper
637   template<class _FunctionClass>
638   static delegate_generic_class *late_bind_helper(delegate_late_bind &object)
639   {
640      _FunctionClass *result = dynamic_cast<_FunctionClass *>(&object);
641      return reinterpret_cast<delegate_generic_class *>(result);
642   }
643
644679   // internal state
645   const char *            m_name;            // name string
646   delegate_generic_class *   m_object;         // pointer to the post-cast object
647680   generic_static_func         m_function;         // generic static function pointer
648681   delegate_internal_mfp      m_rawfunction;      // raw member function definition
649   late_bind_func            m_latebinder;      // late binding helper
650682};
651683
652684#endif
trunk/src/emu/emu.mak
r18510r18511
5656   $(EMUOBJ)/delegate.o \
5757   $(EMUOBJ)/devdelegate.o \
5858   $(EMUOBJ)/devcb.o \
59   $(EMUOBJ)/devcb2.o \
5960   $(EMUOBJ)/devcpu.o \
6061   $(EMUOBJ)/device.o \
6162   $(EMUOBJ)/didisasm.o \
trunk/src/emu/devcb2.c
r0r18511
1/***************************************************************************
2
3    devcb2.c
4
5    Device callback interface helpers.
6
7****************************************************************************
8
9    Copyright Aaron Giles
10    All rights reserved.
11
12    Redistribution and use in source and binary forms, with or without
13    modification, are permitted provided that the following conditions are
14    met:
15
16        * Redistributions of source code must retain the above copyright
17          notice, this list of conditions and the following disclaimer.
18        * Redistributions in binary form must reproduce the above copyright
19          notice, this list of conditions and the following disclaimer in
20          the documentation and/or other materials provided with the
21          distribution.
22        * Neither the name 'MAME' nor the names of its contributors may be
23          used to endorse or promote products derived from this software
24          without specific prior written permission.
25
26    THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
27    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29    DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
30    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
35    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36    POSSIBILITY OF SUCH DAMAGE.
37
38***************************************************************************/
39
40#include "emu.h"
41
42
43
44//**************************************************************************
45//  DEVCB BASE CLASS
46//**************************************************************************
47
48//-------------------------------------------------
49//  devcb2_base - constructor
50//-------------------------------------------------
51
52devcb2_base::devcb2_base(device_t &device, UINT64 defmask)
53   : m_device(device),
54     m_rshift(0),
55     m_mask(defmask),
56     m_xor(0)
57{
58   reset();
59}
60
61
62//-------------------------------------------------
63//  reset - reset/initialize state
64//-------------------------------------------------
65
66void devcb2_base::reset(callback_type type)
67{
68   m_type = type;
69   m_target_tag = NULL;
70   m_target_int = 0;
71   m_space_tag = NULL;
72   m_space_num = AS_0;
73   m_space = NULL;
74   m_target.ptr = NULL;
75   m_rshift = 0;
76   m_mask = ~U64(0);
77}
78
79
80//-------------------------------------------------
81//  resolve_ioport - resolve an I/O port or fatal
82//   error if we can't find it
83//-------------------------------------------------
84
85void devcb2_base::resolve_ioport()
86{
87   // attempt to resolve, fatal error if fail
88   m_target.ioport = (m_target_tag != NULL) ? m_device.owner()->ioport(m_target_tag) : NULL;
89   if (m_target.ioport == NULL)
90      throw emu_fatalerror("Unable to resolve I/O port callback reference to '%s' in device '%s'\n", m_target_tag, m_device.tag());
91}
92
93
94//-------------------------------------------------
95//  resolve_inputline - resolve a device and input
96//   number or fatal error if we can't find it
97//-------------------------------------------------
98
99void devcb2_base::resolve_inputline()
100{
101   // attempt to resolve, fatal error if fail
102   m_target.device = (m_target_tag != NULL) ? m_device.owner()->subdevice(m_target_tag) : NULL;
103   if (m_target.device == NULL)
104      throw emu_fatalerror("Unable to resolve device reference to '%s' in device '%s'\n", m_target_tag, m_device.tag());
105
106   // make sure we have an execute interface
107   device_execute_interface *exec;
108   if (!m_target.device->interface(exec))
109      throw emu_fatalerror("No execute interface found for device reference to '%s' in device '%s'\n", m_target_tag, m_device.tag());
110}
111
112
113//-------------------------------------------------
114//  resolve_space - resolve an address space or
115//   fatal error if we can't find it
116//-------------------------------------------------
117
118void devcb2_base::resolve_space()
119{
120   // attempt to resolve, fatal error if fail
121   device_t *spacedev = (m_space_tag != NULL) ? m_device.owner()->subdevice(m_space_tag) : NULL;
122   if (spacedev == NULL)
123      throw emu_fatalerror("Unable to resolve device reference to '%s' in device '%s'\n", m_space_tag, m_device.tag());
124   if (!spacedev->memory().has_space(m_space_num))
125      throw emu_fatalerror("Unable to resolve device address space %d on '%s' in device '%s'\n", m_space_num, m_space_tag, m_device.tag());
126   m_space = &spacedev->memory().space(m_space_num);
127}
128
129
130
131//**************************************************************************
132//  DEVCB READ CLASS
133//**************************************************************************
134
135//-------------------------------------------------
136//  devcb2_read_base - constructor
137//-------------------------------------------------
138
139devcb2_read_base::devcb2_read_base(device_t &device, UINT64 defmask)
140   : devcb2_base(device, defmask)
141{
142}
143
144
145//-------------------------------------------------
146//  reset - reset/initialize state
147//-------------------------------------------------
148
149void devcb2_read_base::reset(callback_type type)
150{
151   // parent first
152   devcb2_base::reset(type);
153   
154   // local stuff
155   m_readline = read_line_delegate();
156   m_read8 = read8_delegate();
157   m_read16 = read16_delegate();
158   m_read32 = read32_delegate();
159   m_read64 = read64_delegate();
160   m_adapter = &devcb2_read_base::read_unresolved_adapter;
161}
162
163
164//-------------------------------------------------
165//  resolve - resolve the specified callback to
166//   its final form
167//-------------------------------------------------
168
169void devcb2_read_base::resolve()
170{
171   // first resolve any address spaces
172   if (m_space_tag != NULL)
173      resolve_space();
174   else
175      m_space = &downcast<driver_device &>(m_device.machine().root_device()).generic_space();
176
177   // then handle the various types
178   try
179   {
180      switch (m_type)
181      {
182         case CALLBACK_NONE:
183            break;
184     
185         case CALLBACK_LINE:
186            m_readline.bind_relative_to(*m_device.owner());
187            m_target_int = 0;
188            m_adapter = m_readline.isnull() ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read_line_adapter;
189            break;
190
191         case CALLBACK_8:
192            m_read8.bind_relative_to(*m_device.owner());
193            m_target_int = 0;
194            m_adapter = m_read8.isnull() ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read8_adapter;
195            break;
196
197         case CALLBACK_16:
198            m_read16.bind_relative_to(*m_device.owner());
199            m_target_int = 0;
200            m_adapter = m_read16.isnull() ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read16_adapter;
201            break;
202
203         case CALLBACK_32:
204            m_read32.bind_relative_to(*m_device.owner());
205            m_target_int = 0;
206            m_adapter = m_read32.isnull() ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read32_adapter;
207            break;
208
209         case CALLBACK_64:
210            m_read64.bind_relative_to(*m_device.owner());
211            m_target_int = 0;
212            m_adapter = m_read64.isnull() ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read64_adapter;
213            break;
214         
215         case CALLBACK_IOPORT:
216            resolve_ioport();
217            m_target_int = 0;
218            m_adapter = (m_target.ioport == NULL) ? &devcb2_read_base::read_constant_adapter : &devcb2_read_base::read_ioport_adapter;
219            break;
220         
221         case CALLBACK_LOG:
222            m_adapter = &devcb2_read_base::read_logged_adapter;
223            break;
224         
225         case CALLBACK_CONSTANT:
226            m_adapter = &devcb2_read_base::read_constant_adapter;
227            break;
228         
229         case CALLBACK_INPUTLINE:
230            throw emu_fatalerror("Device read callbacks can't be connected to input lines\n");
231      }
232   }
233   catch (binding_type_exception &binderr)
234   {
235      throw emu_fatalerror("Error performing a late bind of type %s to %s\n", binderr.m_actual_type.name(), binderr.m_target_type.name());
236   }
237}
238
239
240//-------------------------------------------------
241//  resolve_safe - resolve the callback; if not
242//   specified, resolve to a constant callback with
243//   the given value
244//-------------------------------------------------
245
246void devcb2_read_base::resolve_safe(UINT64 none_constant_value)
247{
248   // convert to a constant if none specified
249   if (m_type == CALLBACK_NONE)
250   {
251      m_target_int = none_constant_value;
252      m_type = CALLBACK_CONSTANT;
253   }
254   resolve();
255}
256
257
258//-------------------------------------------------
259//  read_unresolved_adapter - error-generating
260//   unresolved adapter
261//-------------------------------------------------
262
263UINT64 devcb2_read_base::read_unresolved_adapter(address_space &space, offs_t offset, UINT64 mask)
264{
265   throw emu_fatalerror("Attempted to read through an unresolved devcb item");
266}
267
268
269//-------------------------------------------------
270//  read_line_adapter - read from a line delegate
271//-------------------------------------------------
272
273UINT64 devcb2_read_base::read_line_adapter(address_space &space, offs_t offset, UINT64 mask)
274{
275   return shift_mask_xor(m_readline() & 1);
276}
277
278
279//-------------------------------------------------
280//  read8_adapter - read from an 8-bit delegate
281//-------------------------------------------------
282
283UINT64 devcb2_read_base::read8_adapter(address_space &space, offs_t offset, UINT64 mask)
284{
285   return shift_mask_xor(m_read8(space, offset, unshift_mask(mask)));
286}
287
288
289//-------------------------------------------------
290//  read16_adapter - read from a 16-bit delegate
291//-------------------------------------------------
292
293UINT64 devcb2_read_base::read16_adapter(address_space &space, offs_t offset, UINT64 mask)
294{
295   return shift_mask_xor(m_read16(space, offset, unshift_mask(mask)));
296}
297
298
299//-------------------------------------------------
300//  read32_adapter - read from a 32-bit delegate
301//-------------------------------------------------
302
303UINT64 devcb2_read_base::read32_adapter(address_space &space, offs_t offset, UINT64 mask)
304{
305   return shift_mask_xor(m_read32(space, offset, unshift_mask(mask)));
306}
307
308
309//-------------------------------------------------
310//  read64_adapter - read from a 64-bit delegate
311//-------------------------------------------------
312
313UINT64 devcb2_read_base::read64_adapter(address_space &space, offs_t offset, UINT64 mask)
314{
315   return shift_mask_xor(m_read64(space, offset, unshift_mask(mask)));
316}
317
318
319//-------------------------------------------------
320//  read_ioport - read from an I/O port
321//-------------------------------------------------
322
323UINT64 devcb2_read_base::read_ioport_adapter(address_space &space, offs_t offset, UINT64 mask)
324{
325   return shift_mask_xor(m_target.ioport->read());
326}
327
328
329//-------------------------------------------------
330//  read_logged_adapter - log a read and return a
331//   constant
332//-------------------------------------------------
333
334UINT64 devcb2_read_base::read_logged_adapter(address_space &space, offs_t offset, UINT64 mask)
335{
336   logerror("%s: read %s\n", m_device.machine().describe_context(), m_target_tag);
337   return shift_mask_xor(m_target_int);
338}
339
340
341//-------------------------------------------------
342//  read_constant - read from a constant
343//-------------------------------------------------
344
345UINT64 devcb2_read_base::read_constant_adapter(address_space &space, offs_t offset, UINT64 mask)
346{
347   return shift_mask_xor(m_target_int);
348}
349
350
351
352//**************************************************************************
353//  DEVCB WRITE CLASS
354//**************************************************************************
355
356//-------------------------------------------------
357//  devcb2_write_base - constructor
358//-------------------------------------------------
359
360devcb2_write_base::devcb2_write_base(device_t &device, UINT64 defmask)
361   : devcb2_base(device, defmask)
362{
363}
364
365
366//-------------------------------------------------
367//  reset - reset/initialize state
368//-------------------------------------------------
369
370void devcb2_write_base::reset(callback_type type)
371{
372   // parent first
373   devcb2_base::reset(type);
374   
375   // local stuff
376   m_writeline = write_line_delegate();
377   m_write8 = write8_delegate();
378   m_write16 = write16_delegate();
379   m_write32 = write32_delegate();
380   m_write64 = write64_delegate();
381   m_adapter = &devcb2_write_base::write_unresolved_adapter;
382}
383
384
385//-------------------------------------------------
386//  resolve - resolve the specified callback to
387//   its final form
388//-------------------------------------------------
389
390void devcb2_write_base::resolve()
391{
392   // first resolve any address spaces
393   if (m_space_tag != NULL)
394      resolve_space();
395   else
396      m_space = &downcast<driver_device &>(m_device.machine().root_device()).generic_space();
397
398   // then handle the various types
399   try
400   {
401      switch (m_type)
402      {
403         case CALLBACK_NONE:
404            break;
405     
406         case CALLBACK_LINE:
407            m_writeline.bind_relative_to(*m_device.owner());
408            m_adapter = m_writeline.isnull() ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write_line_adapter;
409            break;
410
411         case CALLBACK_8:
412            m_write8.bind_relative_to(*m_device.owner());
413            m_adapter = m_write8.isnull() ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write8_adapter;
414            break;
415
416         case CALLBACK_16:
417            m_write16.bind_relative_to(*m_device.owner());
418            m_adapter = m_write16.isnull() ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write16_adapter;
419            break;
420
421         case CALLBACK_32:
422            m_write32.bind_relative_to(*m_device.owner());
423            m_adapter = m_write32.isnull() ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write32_adapter;
424            break;
425
426         case CALLBACK_64:
427            m_write64.bind_relative_to(*m_device.owner());
428            m_adapter = m_write64.isnull() ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write64_adapter;
429            break;
430         
431         case CALLBACK_IOPORT:
432            resolve_ioport();
433            m_adapter = (m_target.ioport == NULL) ? &devcb2_write_base::write_noop_adapter : &devcb2_write_base::write_ioport_adapter;
434            break;
435         
436         case CALLBACK_LOG:
437            m_adapter = &devcb2_write_base::write_logged_adapter;
438            break;
439         
440         case CALLBACK_CONSTANT:
441            m_adapter = &devcb2_write_base::write_noop_adapter;
442            break;
443         
444         case CALLBACK_INPUTLINE:
445            resolve_inputline();
446            m_adapter = &devcb2_write_base::write_inputline_adapter;
447            break;
448      }
449   }
450   catch (binding_type_exception &binderr)
451   {
452      throw emu_fatalerror("Error performing a late bind of type %s to %s\n", binderr.m_actual_type.name(), binderr.m_target_type.name());
453   }
454}
455
456
457//-------------------------------------------------
458//  resolve_safe - resolve the callback; if not
459//   specified, resolve to a no-op
460//-------------------------------------------------
461
462void devcb2_write_base::resolve_safe()
463{
464   // convert to a constant if none specified
465   if (m_type == CALLBACK_NONE)
466      m_type = CALLBACK_CONSTANT;
467   resolve();
468}
469
470
471//-------------------------------------------------
472//  write_unresolved_adapter - error-generating
473//   unresolved adapter
474//-------------------------------------------------
475
476void devcb2_write_base::write_unresolved_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask)
477{
478   throw emu_fatalerror("Attempted to write through an unresolved devcb item");
479}
480
481
482//-------------------------------------------------
483//  write_line_adapter - write from a line delegate
484//-------------------------------------------------
485
486void devcb2_write_base::write_line_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask)
487{
488   m_writeline(unshift_mask_xor(data) & 1);
489}
490
491
492//-------------------------------------------------
493//  write8_adapter - write from an 8-bit delegate
494//-------------------------------------------------
495
496void devcb2_write_base::write8_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask)
497{
498   m_write8(space, offset, unshift_mask_xor(data), unshift_mask(mask));
499}
500
501
502//-------------------------------------------------
503//  write16_adapter - write from a 16-bit delegate
504//-------------------------------------------------
505
506void devcb2_write_base::write16_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask)
507{
508   m_write16(space, offset, unshift_mask_xor(data), unshift_mask(mask));
509}
510
511
512//-------------------------------------------------
513//  write32_adapter - write from a 32-bit delegate
514//-------------------------------------------------
515
516void devcb2_write_base::write32_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask)
517{
518   m_write32(space, offset, unshift_mask_xor(data), unshift_mask(mask));
519}
520
521
522//-------------------------------------------------
523//  write64_adapter - write from a 64-bit delegate
524//-------------------------------------------------
525
526void devcb2_write_base::write64_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask)
527{
528   m_write64(space, offset, unshift_mask_xor(data), unshift_mask(mask));
529}
530
531
532//-------------------------------------------------
533//  write_ioport - write from an I/O port
534//-------------------------------------------------
535
536void devcb2_write_base::write_ioport_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask)
537{
538   m_target.ioport->write_safe(unshift_mask_xor(data));
539}
540
541
542//-------------------------------------------------
543//  write_logged_adapter - logging unresolved
544//   adapter
545//-------------------------------------------------
546
547void devcb2_write_base::write_logged_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask)
548{
549   logerror("%s: unresolved devcb write\n", m_device.machine().describe_context());
550}
551
552
553//-------------------------------------------------
554//  write_constant - write from a constant
555//-------------------------------------------------
556
557void devcb2_write_base::write_noop_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask)
558{
559   // constant for writes is a no-op
560}
561
562
563//-------------------------------------------------
564//  write_inputline_adapter - write to an device's
565//   input line
566//-------------------------------------------------
567
568void devcb2_write_base::write_inputline_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask)
569{
570   m_target.device->execute().set_input_line(m_target_int, unshift_mask_xor(data) & 1);
571}
trunk/src/emu/devcb2.h
r0r18511
1/***************************************************************************
2
3    devcb2.h
4
5    Device callback interface helpers.
6
7****************************************************************************
8
9    Copyright Aaron Giles
10    All rights reserved.
11
12    Redistribution and use in source and binary forms, with or without
13    modification, are permitted provided that the following conditions are
14    met:
15
16        * Redistributions of source code must retain the above copyright
17          notice, this list of conditions and the following disclaimer.
18        * Redistributions in binary form must reproduce the above copyright
19          notice, this list of conditions and the following disclaimer in
20          the documentation and/or other materials provided with the
21          distribution.
22        * Neither the name 'MAME' nor the names of its contributors may be
23          used to endorse or promote products derived from this software
24          without specific prior written permission.
25
26    THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR
27    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29    DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT,
30    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
35    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36    POSSIBILITY OF SUCH DAMAGE.
37
38***************************************************************************/
39
40#pragma once
41
42#ifndef __EMU_H__
43#error Dont include this file directly; include emu.h instead.
44#endif
45
46#ifndef __DEVCB2_H__
47#define __DEVCB2_H__
48
49
50//**************************************************************************
51//  MACROS
52//**************************************************************************
53
54// wrappers for ioports, constants, and loggers
55#define DEVCB2_NULL devcb2_base::null_desc()
56#define DEVCB2_NOOP devcb2_base::null_desc()
57#define DEVCB2_IOPORT(_tag) devcb2_base::ioport_desc(_tag)
58#define DEVCB2_CONSTANT(_value) devcb2_base::constant_desc(_value)
59#define DEVCB2_LOGGER(_string, _value) devcb2_base::logger_desc(_string, _value)
60#define DEVCB2_INPUTLINE(_tag, _line) devcb2_base::inputline_desc(_tag, _line)
61
62// wrappers for read callbacks into the owner device
63#define DEVCB2_READLINE(_class, _func) read_line_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0)
64#define DEVCB2_READ8(_class, _func) read8_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0)
65#define DEVCB2_READ16(_class, _func) read16_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0)
66#define DEVCB2_READ32(_class, _func) read32_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0)
67#define DEVCB2_READ64(_class, _func) read64_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0)
68 
69// wrappers for read callbacks into any tagged device
70#define DEVCB2_DEVREADLINE(tag, _class, _func) read_line_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0)
71#define DEVCB2_DEVREAD8(tag, _class, _func) read8_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0)
72#define DEVCB2_DEVREAD16(tag, _class, _func) read16_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0)
73#define DEVCB2_DEVREAD32(tag, _class, _func) read32_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0)
74#define DEVCB2_DEVREAD64(tag, _class, _func) read64_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0)
75 
76// wrappers for write callbacks into the owner device
77#define DEVCB2_WRITELINE(_class, _func) write_line_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0)
78#define DEVCB2_WRITE8(_class, _func) write8_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0)
79#define DEVCB2_WRITE16(_class, _func) write16_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0)
80#define DEVCB2_WRITE32(_class, _func) write32_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0)
81#define DEVCB2_WRITE64(_class, _func) write64_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0)
82 
83// wrappers for write callbacks into any tagged device
84#define DEVCB2_DEVWRITELINE(tag, _class, _func) write_line_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0)
85#define DEVCB2_DEVWRITE8(tag, _class, _func) write8_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0)
86#define DEVCB2_DEVWRITE16(tag, _class, _func) write16_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0)
87#define DEVCB2_DEVWRITE32(tag, _class, _func) write32_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0)
88#define DEVCB2_DEVWRITE64(tag, _class, _func) write64_delegate(&_class::_func, #_class "::" #_func, tag, (_class *)0)
89
90// machine config helpers to add shift, mask, or address space configuration
91#define MCFG_DEVCB_SHIFT(_shift) devcb->set_shift(_shift);
92#define MCFG_DEVCB_MASK(_mask) devcb->set_mask(_mask);
93#define MCFG_DEVCB_XOR(_xor) devcb->set_xor(_xor);
94#define MCFG_DEVCB_INVERT devcb->set_xor(~U64(0));
95#define MCFG_DEVCB_ADDRESS_SPACE(_device, _spacenum) devcb->set_space(_device, _spacenum);
96
97
98
99//**************************************************************************
100//  TYPE DEFINITIONS
101//**************************************************************************
102
103// base delegate type for a read_line/write_line
104typedef device_delegate<int ()> read_line_delegate;
105typedef device_delegate<void (int)> write_line_delegate;
106
107
108// ======================> devcb2_base
109
110class devcb2_base
111{
112protected:
113   // enumerate the types of callbacks
114   enum callback_type
115   {
116      CALLBACK_NONE,
117      CALLBACK_LINE,
118      CALLBACK_8,
119      CALLBACK_16,
120      CALLBACK_32,
121      CALLBACK_64,
122      CALLBACK_IOPORT,
123      CALLBACK_LOG,
124      CALLBACK_CONSTANT,
125      CALLBACK_INPUTLINE
126   };
127
128   // construction/destruction
129   devcb2_base(device_t &device, UINT64 defmask);
130
131public:
132   // getters
133   bool isnull() const { return (m_type == CALLBACK_NONE); }
134
135   // additional configuration
136   devcb2_base &set_space(const char *device, address_spacenum space = AS_0) { m_space_tag = device; m_space_num = space; return *this; }
137   devcb2_base &set_rshift(int rshift) { m_rshift = rshift; return *this; }
138   devcb2_base &set_mask(UINT64 mask) { m_mask = mask; return *this; }
139   devcb2_base &set_xor(UINT64 xorval) { m_xor = xorval; return *this; }
140   
141   // construction helper classes
142   class null_desc
143   {
144   public:
145      null_desc() { }
146   };
147   
148   class ioport_desc
149   {
150   public:
151      ioport_desc(const char *tag) { m_tag = tag; }
152      const char *m_tag;
153   };
154   
155   class constant_desc
156   {
157   public:
158      constant_desc(UINT64 value) { m_value = value; }
159      UINT64 m_value;
160   };
161   
162   class logger_desc
163   {
164   public:
165      logger_desc(const char *string, UINT64 value = 0) { m_string = string; m_value = value; }
166      const char *m_string;
167      UINT64 m_value;
168   };
169
170   class inputline_desc
171   {
172   public:
173      inputline_desc(const char *tag, int inputnum) { m_tag = tag; m_inputnum = inputnum; }
174      const char *m_tag;
175      int m_inputnum;
176   };
177
178   // shared callback setters
179   devcb2_base &set_callback(null_desc null) { reset(CALLBACK_NONE); return *this; }
180   devcb2_base &set_callback(ioport_desc ioport) { reset(CALLBACK_IOPORT); m_target_tag = ioport.m_tag; return *this; }
181   devcb2_base &set_callback(constant_desc constant) { reset(CALLBACK_CONSTANT); m_target_int = constant.m_value; return *this; }
182   devcb2_base &set_callback(logger_desc logger) { reset(CALLBACK_LOG); m_target_int = logger.m_value; m_target_tag = logger.m_string; return *this; }
183   devcb2_base &set_callback(inputline_desc inputline) { reset(CALLBACK_INPUTLINE); m_target_tag = inputline.m_tag; m_target_int = inputline.m_inputnum; return *this; }
184
185protected:
186   // internal helpers
187   inline UINT64 shift_mask_xor(UINT64 value) const { return (((m_rshift < 0) ? (value << -m_rshift) : (value >> m_rshift)) ^ m_xor) & m_mask; }
188   inline UINT64 unshift_mask(UINT64 value) const { return (m_rshift < 0) ? ((value & m_mask) >> -m_rshift) : ((value & m_mask) << m_rshift); }
189   inline UINT64 unshift_mask_xor(UINT64 value) const { return (m_rshift < 0) ? (((value ^ m_xor) & m_mask) >> -m_rshift) : (((value ^ m_xor) & m_mask) << m_rshift); }
190   void reset(callback_type type = CALLBACK_NONE);
191   void resolve_ioport();
192   void resolve_inputline();
193   void resolve_space();
194   
195   // the callback target is going to be one of these
196   union callback_target
197   {
198      void *            ptr;
199      device_t *         device;
200      ioport_port *      ioport;
201   };
202   
203   // configuration
204   device_t &         m_device;            // reference to our owning device
205   callback_type      m_type;               // type of callback registered
206   const char *      m_target_tag;         // tag of target object
207   UINT64            m_target_int;         // integer value of target object
208   const char *      m_space_tag;         // tag of address space device
209   address_spacenum   m_space_num;         // address space number of space device
210
211   // derived state
212   address_space *      m_space;            // target address space
213   callback_target      m_target;            // resolved pointer to target object
214   int             m_rshift;            // right shift to apply to data read
215   UINT64             m_mask;               // mask to apply to data read
216   UINT64             m_xor;               // XOR to apply to data read
217};
218
219
220// ======================> devcb2_read_base
221
222class devcb2_read_base : public devcb2_base
223{
224protected:
225   // construction/destruction
226   devcb2_read_base(device_t &device, UINT64 defmask);
227   
228public:
229   // callback configuration
230   using devcb2_base::set_callback;
231   devcb2_base &set_callback(read_line_delegate func) { reset(CALLBACK_LINE); m_readline = func; return *this; }
232   devcb2_base &set_callback(read8_delegate func) { reset(CALLBACK_8); m_read8 = func; return *this; }
233   devcb2_base &set_callback(read16_delegate func) { reset(CALLBACK_16); m_read16 = func; return *this; }
234   devcb2_base &set_callback(read32_delegate func) { reset(CALLBACK_32); m_read32 = func; return *this; }
235   devcb2_base &set_callback(read64_delegate func) { reset(CALLBACK_64); m_read64 = func; return *this; }
236   
237   // resolution
238   void resolve();
239   void resolve_safe(UINT64 none_constant_value);
240
241protected:
242   // internal helpers
243   void reset(callback_type type = CALLBACK_NONE);
244
245   // adapters
246   UINT64 read_unresolved_adapter(address_space &space, offs_t offset, UINT64 mask);
247   UINT64 read_line_adapter(address_space &space, offs_t offset, UINT64 mask);
248   UINT64 read8_adapter(address_space &space, offs_t offset, UINT64 mask);
249   UINT64 read16_adapter(address_space &space, offs_t offset, UINT64 mask);
250   UINT64 read32_adapter(address_space &space, offs_t offset, UINT64 mask);
251   UINT64 read64_adapter(address_space &space, offs_t offset, UINT64 mask);
252   UINT64 read_ioport_adapter(address_space &space, offs_t offset, UINT64 mask);
253   UINT64 read_logged_adapter(address_space &space, offs_t offset, UINT64 mask);
254   UINT64 read_constant_adapter(address_space &space, offs_t offset, UINT64 mask);
255
256   // configuration
257   read_line_delegate   m_readline;            // copy of registered line reader
258   read8_delegate      m_read8;            // copy of registered 8-bit reader
259   read16_delegate      m_read16;            // copy of registered 16-bit reader
260   read32_delegate      m_read32;            // copy of registered 32-bit reader
261   read64_delegate      m_read64;            // copy of registered 64-bit reader
262
263   // derived state
264   typedef UINT64 (devcb2_read_base::*adapter_func)(address_space &, offs_t, UINT64);
265   adapter_func      m_adapter;            // actual callback to invoke
266};
267
268
269// ======================> devcb2_write_base
270
271class devcb2_write_base : public devcb2_base
272{
273protected:
274   // construction/destruction
275   devcb2_write_base(device_t &device, UINT64 defmask);
276   
277public:
278   // callback configuration
279   using devcb2_base::set_callback;
280   devcb2_base &set_callback(write_line_delegate func) { reset(CALLBACK_LINE); m_writeline = func; return *this; }
281   devcb2_base &set_callback(write8_delegate func) { reset(CALLBACK_8); m_write8 = func; return *this; }
282   devcb2_base &set_callback(write16_delegate func) { reset(CALLBACK_16); m_write16 = func; return *this; }
283   devcb2_base &set_callback(write32_delegate func) { reset(CALLBACK_32); m_write32 = func; return *this; }
284   devcb2_base &set_callback(write64_delegate func) { reset(CALLBACK_64); m_write64 = func; return *this; }
285
286   // resolution
287   void resolve();
288   void resolve_safe();
289
290protected:
291   // internal helpers
292   void reset(callback_type type = CALLBACK_NONE);
293
294   // adapters
295   void write_unresolved_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask);
296   void write_line_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask);
297   void write8_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask);
298   void write16_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask);
299   void write32_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask);
300   void write64_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask);
301   void write_ioport_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask);
302   void write_logged_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask);
303   void write_noop_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask);
304   void write_inputline_adapter(address_space &space, offs_t offset, UINT64 data, UINT64 mask);
305
306   // configuration
307   write_line_delegate   m_writeline;         // copy of registered line writer
308   write8_delegate      m_write8;            // copy of registered 8-bit writer
309   write16_delegate   m_write16;            // copy of registered 16-bit writer
310   write32_delegate   m_write32;            // copy of registered 32-bit writer
311   write64_delegate   m_write64;            // copy of registered 64-bit writer
312
313   // derived state
314   typedef void (devcb2_write_base::*adapter_func)(address_space &, offs_t, UINT64, UINT64);
315   adapter_func      m_adapter;            // actual callback to invoke
316};
317
318
319// ======================> devcb2_read_line
320
321class devcb2_read_line : public devcb2_read_base
322{
323public:
324   devcb2_read_line(device_t &device) : devcb2_read_base(device, 0xff) { }
325   int operator()() { return (this->*m_adapter)(*m_space, 0, U64(0xff)) & 1; }
326   int operator()(address_space &space) { return (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, 0, U64(0xff)) & 1; }
327};
328
329
330// ======================> devcb2_read8
331
332class devcb2_read8 : public devcb2_read_base
333{
334public:
335   devcb2_read8(device_t &device) : devcb2_read_base(device, 0xff) { }
336   UINT8 operator()(offs_t offset = 0, UINT8 mask = 0xff) { return (this->*m_adapter)(*m_space, offset, mask) & mask; }
337   UINT8 operator()(address_space &space, offs_t offset = 0, UINT8 mask = 0xff) { return (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, mask) & mask; }
338};
339
340
341// ======================> devcb2_read16
342
343class devcb2_read16 : public devcb2_read_base
344{
345public:
346   devcb2_read16(device_t &device) : devcb2_read_base(device, 0xffff) { }
347   UINT16 operator()(offs_t offset = 0, UINT16 mask = 0xffff) { return (this->*m_adapter)(*m_space, offset, mask) & mask; }
348   UINT16 operator()(address_space &space, offs_t offset = 0, UINT16 mask = 0xffff) { return (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, mask) & mask; }
349};
350
351
352// ======================> devcb2_read32
353
354class devcb2_read32 : public devcb2_read_base
355{
356public:
357   devcb2_read32(device_t &device) : devcb2_read_base(device, 0xffffffff) { }
358   UINT32 operator()(offs_t offset = 0, UINT32 mask = 0xffffffff) { return (this->*m_adapter)(*m_space, offset, mask) & mask; }
359   UINT32 operator()(address_space &space, offs_t offset = 0, UINT32 mask = 0xffffffff) { return (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, mask) & mask; }
360};
361
362
363// ======================> devcb2_read64
364
365class devcb2_read64 : public devcb2_read_base
366{
367public:
368   devcb2_read64(device_t &device) : devcb2_read_base(device, U64(0xffffffffffffffff)) { }
369   UINT64 operator()(offs_t offset = 0, UINT64 mask = U64(0xffffffffffffffff)) { return (this->*m_adapter)(*m_space, offset, mask) & mask; }
370   UINT64 operator()(address_space &space, offs_t offset = 0, UINT64 mask = U64(0xffffffffffffffff)) { return (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, mask) & mask; }
371};
372
373
374// ======================> devcb2_write_line
375
376class devcb2_write_line : public devcb2_write_base
377{
378public:
379   devcb2_write_line(device_t &device) : devcb2_write_base(device, 0xff) { }
380   void operator()(int state) { (this->*m_adapter)(*m_space, 0, state & 1, U64(0xff)); }
381   void operator()(address_space &space, int state) { (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, 0, state & 1, U64(0xff)); }
382};
383
384
385// ======================> devcb2_write8
386
387class devcb2_write8 : public devcb2_write_base
388{
389public:
390   devcb2_write8(device_t &device) : devcb2_write_base(device, 0xff) { }
391   void operator()(UINT8 data, UINT8 mask = 0xff) { (this->*m_adapter)(*m_space, 0, data, mask); }
392   void operator()(offs_t offset, UINT8 data, UINT8 mask = 0xff) { (this->*m_adapter)(*m_space, offset, data, mask); }
393   void operator()(address_space &space, offs_t offset, UINT8 data, UINT8 mask = 0xff) { (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, data, mask); }
394};
395
396
397// ======================> devcb2_write16
398
399class devcb2_write16 : public devcb2_write_base
400{
401public:
402   devcb2_write16(device_t &device) : devcb2_write_base(device, 0xffff) { }
403   void operator()(UINT16 data, UINT16 mask = 0xffff) { (this->*m_adapter)(*m_space, 0, data, mask); }
404   void operator()(offs_t offset, UINT16 data, UINT16 mask = 0xffff) { (this->*m_adapter)(*m_space, offset, data, mask); }
405   void operator()(address_space &space, offs_t offset, UINT16 data, UINT16 mask = 0xffff) { (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, data, mask); }
406};
407
408
409// ======================> devcb2_write32
410
411class devcb2_write32 : public devcb2_write_base
412{
413public:
414   devcb2_write32(device_t &device) : devcb2_write_base(device, 0xffffffff) { }
415   void operator()(UINT32 data, UINT32 mask = 0xffffffff) { (this->*m_adapter)(*m_space, 0, data, mask); }
416   void operator()(offs_t offset, UINT32 data, UINT32 mask = 0xffffffff) { (this->*m_adapter)(*m_space, offset, data, mask); }
417   void operator()(address_space &space, offs_t offset, UINT32 data, UINT32 mask = 0xffffffff) { (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, data, mask); }
418};
419
420
421// ======================> devcb2_write64
422
423class devcb2_write64 : public devcb2_write_base
424{
425public:
426   devcb2_write64(device_t &device) : devcb2_write_base(device, U64(0xffffffffffffffff)) { }
427   void operator()(UINT64 data, UINT64 mask = U64(0xffffffffffffffff)) { (this->*m_adapter)(*m_space, 0, data, mask); }
428   void operator()(offs_t offset, UINT64 data, UINT64 mask = U64(0xffffffffffffffff)) { (this->*m_adapter)(*m_space, offset, data, mask); }
429   void operator()(address_space &space, offs_t offset, UINT64 data, UINT64 mask = U64(0xffffffffffffffff)) { (this->*m_adapter)((m_space_tag != NULL) ? *m_space : space, offset, data, mask); }
430};
431
432
433#endif   /* __DEVCB2_H__ */
trunk/src/emu/mconfig.h
r18510r18511
177177{ \
178178   device_t *device = NULL; \
179179   (void)device; \
180   devcb2_base *devcb = NULL; \
181   (void)devcb; \
180182   if (owner == NULL) owner = config.device_add(NULL, "root", &driver_device_creator<_class>, 0); \
181183
182184#define MACHINE_CONFIG_FRAGMENT(_name) \
r18510r18511
184186{ \
185187   device_t *device = NULL; \
186188   (void)device; \
189   devcb2_base *devcb = NULL; \
190   (void)devcb; \
187191   assert(owner != NULL); \
188192
189193#define MACHINE_CONFIG_DERIVED(_name, _base) \
r18510r18511
191195{ \
192196   device_t *device = NULL; \
193197   (void)device; \
198   devcb2_base *devcb = NULL; \
199   (void)devcb; \
194200   owner = MACHINE_CONFIG_NAME(_base)(config, owner); \
195201   assert(owner != NULL); \
196202
r18510r18511
199205{ \
200206   device_t *device = NULL; \
201207   (void)device; \
208   devcb2_base *devcb = NULL; \
209   (void)devcb; \
202210   if (owner == NULL) owner = config.device_add(NULL, "root", &driver_device_creator<_class>, 0); \
203211   owner = MACHINE_CONFIG_NAME(_base)(config, owner); \
204212
trunk/src/emu/devcb.h
r18510r18511
239239#define DEVCB_CPU_INPUT_LINE(tag,line)         { DEVCB_TYPE_INPUT_LINE, (line), (tag), NULL, NULL, NULL, NULL }
240240
241241
242// macros for defining read_line/write_line functions
243#define READ_LINE_DEVICE_HANDLER(name)      int  name(ATTR_UNUSED device_t *device)
244#define WRITE_LINE_DEVICE_HANDLER(name)    void name(ATTR_UNUSED device_t *device, ATTR_UNUSED int state)
245242
246#define DECLARE_READ_LINE_MEMBER(name)      int  name()
247#define READ_LINE_MEMBER(name)            int  name()
248#define DECLARE_WRITE_LINE_MEMBER(name)    void name(ATTR_UNUSED int state)
249#define WRITE_LINE_MEMBER(name)            void name(ATTR_UNUSED int state)
250
251
252
253243//**************************************************************************
254244//  TYPE DEFINITIONS
255245//**************************************************************************
trunk/src/emu/device.h
r18510r18511
7575   device_t::static_set_input_default(*device, DEVICE_INPUT_DEFAULTS_NAME(_config)); \
7676
7777
78// macros for defining read_line/write_line functions
79#define READ_LINE_DEVICE_HANDLER(name)      int  name(ATTR_UNUSED device_t *device)
80#define WRITE_LINE_DEVICE_HANDLER(name)    void name(ATTR_UNUSED device_t *device, ATTR_UNUSED int state)
7881
82#define DECLARE_READ_LINE_MEMBER(name)      int  name()
83#define READ_LINE_MEMBER(name)            int  name()
84#define DECLARE_WRITE_LINE_MEMBER(name)    void name(ATTR_UNUSED int state)
85#define WRITE_LINE_MEMBER(name)            void name(ATTR_UNUSED int state)
86
87
88
7989//**************************************************************************
8090//  TYPE DEFINITIONS
8191//**************************************************************************
trunk/src/mess/machine/isa_ibm_mfc.c
r18510r18511
120120static ADDRESS_MAP_START( io_map, AS_IO, 8, isa8_ibm_mfc_device )
121121   ADDRESS_MAP_UNMAP_HIGH
122122   ADDRESS_MAP_GLOBAL_MASK(0xff)
123   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ym2151", ym2151_r, ym2151_w)
123   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
124124   AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("d71051", i8251_device, data_r, data_w)
125125   AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("d71051", i8251_device, status_r, control_w)
126126   AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("d71055c_1", i8255_device, read, write)
r18510r18511
330330   set_z80_interrupt(Z80_IRQ_YM, state);
331331}
332332
333static const ym2151_interface ibm_mfc_ym2151_interface =
334{
335   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_ibm_mfc_device, ibm_mfc_ym_irq),
336   DEVCB_NULL
337};
338333
339
340334//-------------------------------------------------
341335//  Machine config
342336//-------------------------------------------------
r18510r18511
352346   MCFG_PIT8253_ADD("d8253", d8253_intf)
353347
354348   MCFG_SPEAKER_STANDARD_STEREO("ymleft", "ymright")
355   MCFG_SOUND_ADD("ym2151", YM2151, XTAL_4MHz)
356   MCFG_SOUND_CONFIG(ibm_mfc_ym2151_interface)
349   MCFG_YM2151_ADD("ym2151", XTAL_4MHz)
350   MCFG_YM2151_IRQ_HANDLER(WRITELINE(isa8_ibm_mfc_device, ibm_mfc_ym_irq))
357351   MCFG_SOUND_ROUTE(0, "ymleft", 1.00)
358352   MCFG_SOUND_ROUTE(1, "ymright", 1.00)
359353MACHINE_CONFIG_END
trunk/src/mess/drivers/x1.c
r18510r18511
16811681   m_io_bank_mode = 0; //any read disables the extended mode.
16821682
16831683   // a * at the end states devices used on plain X1 too
1684   if(offset == 0x0700)                     { return (ym2151_r(machine().device("ym"), space, offset-0x0700) & 0x7f) | (ioport("SOUND_SW")->read() & 0x80); }
1685   else if(offset == 0x0701)                      { return ym2151_r(machine().device("ym"), space, offset-0x0700); }
1684   if(offset == 0x0700)                     { return (machine().device<ym2151_device>("ym")->read(space, offset-0x0700) & 0x7f) | (ioport("SOUND_SW")->read() & 0x80); }
1685   else if(offset == 0x0701)                      { return machine().device<ym2151_device>("ym")->read(space, offset-0x0700); }
16861686   //0x704 is FM sound detection port on X1 turboZ
16871687   else if(offset >= 0x0704 && offset <= 0x0707)   { return m_ctc->read(space,offset-0x0704); }
16881688   else if(offset == 0x0801)                  { printf("Color image board read\n"); return 0xff; } // *
r18510r18511
17271727{
17281728   // a * at the end states devices used on plain X1 too
17291729   if(m_io_bank_mode == 1)                    { x1_ex_gfxram_w(space, offset, data); }
1730   else if(offset == 0x0700 || offset == 0x0701)   { ym2151_w(machine().device("ym"), space, offset-0x0700,data); }
1730   else if(offset == 0x0700 || offset == 0x0701)   { machine().device<ym2151_device>("ym")->write(space, offset-0x0700,data); }
17311731   //0x704 is FM sound detection port on X1 turboZ
17321732   else if(offset >= 0x0704 && offset <= 0x0707)   { m_ctc->write(space,offset-0x0704,data); }
17331733   else if(offset == 0x0800)                  { printf("Color image board write %02x\n",data); } // *
r18510r18511
26352635   MCFG_DEVICE_REMOVE("fdc")
26362636   MCFG_MB8877_ADD("fdc",x1turbo_mb8877a_interface)
26372637
2638   MCFG_SOUND_ADD("ym", YM2151, MAIN_CLOCK/8) //option board
2639//  MCFG_SOUND_CONFIG(ay8910_config)
2638   MCFG_YM2151_ADD("ym", MAIN_CLOCK/8) //option board
26402639   MCFG_SOUND_ROUTE(0, "lspeaker",  0.50)
26412640   MCFG_SOUND_ROUTE(1, "rspeaker",  0.50)
26422641MACHINE_CONFIG_END
trunk/src/mess/drivers/x68k.c
r18510r18511
10651065   {
10661066   case 0x00:
10671067   case 0x01:
1068      ym2151_w(machine().device("ym2151"), space, offset, data);
1068      machine().device<ym2151_device>("ym2151")->write(space, offset, data);
10691069      break;
10701070   }
10711071}
r18510r18511
10731073READ16_MEMBER(x68k_state::x68k_fm_r)
10741074{
10751075   if(offset == 0x01)
1076      return ym2151_r(machine().device("ym2151"), space, 1);
1076      return machine().device<ym2151_device>("ym2151")->read(space, 1);
10771077
10781078   return 0xffff;
10791079}
r18510r18511
20332033//  { 0, 0, 0, 0 }
20342034};
20352035
2036static const ym2151_interface x68k_ym2151_interface =
2037{
2038   DEVCB_DRIVER_LINE_MEMBER(x68k_state,x68k_fm_irq),
2039   DEVCB_DRIVER_MEMBER(x68k_state,x68k_ct_w)  // CT1, CT2 from YM2151 port 0x1b
2040};
2041
20422036static const okim6258_interface x68k_okim6258_interface =
20432037{
20442038   FOSC_DIV_BY_512,
r18510r18511
26822676
26832677   /* sound hardware */
26842678   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
2685   MCFG_SOUND_ADD("ym2151", YM2151, 4000000)
2686   MCFG_SOUND_CONFIG(x68k_ym2151_interface)
2679   MCFG_YM2151_ADD("ym2151", 4000000)
2680   MCFG_YM2151_IRQ_HANDLER(WRITELINE(x68k_state,x68k_fm_irq))
2681   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(x68k_state,x68k_ct_w))  // CT1, CT2 from YM2151 port 0x1b
26872682   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
26882683   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
26892684   MCFG_SOUND_ADD("okim6258", OKIM6258, 4000000)
trunk/src/mame/machine/tatsumi.c
r18510r18511
337337// self-test in Tatsumi games.  Needs fixed, but hack it here for now.
338338READ8_MEMBER(tatsumi_state::tatsumi_hack_ym2151_r)
339339{
340   int r=ym2151_status_port_r(machine().device("ymsnd"),space,0);
340   int r=machine().device<ym2151_device>("ymsnd")->status_r(space,0);
341341
342342   if (space.device().safe_pc()==0x2aca || space.device().safe_pc()==0x29fe
343343      || space.device().safe_pc()==0xf9721
trunk/src/mame/machine/atarigen.c
r18510r18511
626626    IRQ line.
627627---------------------------------------------------------------*/
628628
629void atarigen_ym2151_irq_gen(device_t *device, int irq)
629WRITE_LINE_MEMBER( atarigen_state::ym2151_irq_gen )
630630{
631   atarigen_state *state = device->machine().driver_data<atarigen_state>();
632   state->m_ym2151_int = irq;
633   update_6502_irq(device->machine());
631   m_ym2151_int = state;
632   update_6502_irq(machine());
634633}
635634
636635
trunk/src/mame/machine/atarigen.h
r18510r18511
119119   DECLARE_WRITE8_MEMBER( earom_w );
120120   DECLARE_WRITE8_MEMBER( earom_control_w );
121121
122   DECLARE_WRITE_LINE_MEMBER( ym2151_irq_gen );
123
122124   // vector and early raster EAROM interface
123125   optional_device<er2055_device> m_earom;
124126   UINT8            m_earom_data;
r18510r18511
262264DECLARE_READ8_HANDLER( atarigen_6502_irq_ack_r );
263265DECLARE_WRITE8_HANDLER( atarigen_6502_irq_ack_w );
264266
265void atarigen_ym2151_irq_gen(device_t *device, int irq);
266
267267DECLARE_WRITE16_HANDLER( atarigen_sound_w );
268268DECLARE_READ16_HANDLER( atarigen_sound_r );
269269DECLARE_WRITE16_HANDLER( atarigen_sound_upper_w );
trunk/src/mame/includes/deco32.h
r18510r18511
6161   device_t *m_deco_tilegen1;
6262   device_t *m_deco_tilegen2;
6363   UINT8 m_irq_source;
64   DECLARE_WRITE_LINE_MEMBER(sound_irq_nslasher);
6465   DECLARE_READ32_MEMBER(deco32_irq_controller_r);
6566   DECLARE_WRITE32_MEMBER(deco32_irq_controller_w);
6667   DECLARE_WRITE32_MEMBER(deco32_sound_w);
trunk/src/mame/includes/segas24.h
r18510r18511
5757   segas24_sprite *vsprite;
5858   segas24_mixer *vmixer;
5959
60   DECLARE_WRITE_LINE_MEMBER(irq_ym);
6061   DECLARE_READ16_MEMBER(  sys16_paletteram_r );
6162   DECLARE_WRITE16_MEMBER( sys16_paletteram_w );
6263   DECLARE_READ16_MEMBER(  irq_r );
trunk/src/mame/includes/ddragon.h
r18510r18511
6464   device_t *m_sub_cpu;
6565   device_t *m_adpcm_1;
6666   device_t *m_adpcm_2;
67   DECLARE_WRITE_LINE_MEMBER(irq_handler);
6768   DECLARE_WRITE8_MEMBER(ddragon_bgvideoram_w);
6869   DECLARE_WRITE8_MEMBER(ddragon_fgvideoram_w);
6970   DECLARE_CUSTOM_INPUT_MEMBER(sub_cpu_busy);
trunk/src/mame/includes/sidearms.h
r18510r18511
5252   TILEMAP_MAPPER_MEMBER(sidearms_tilemap_scan);
5353   virtual void video_start();
5454   UINT32 screen_update_sidearms(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
55   DECLARE_WRITE_LINE_MEMBER(irqhandler);
5556};
trunk/src/mame/includes/blockout.h
r18510r18511
2525   /* devices */
2626   cpu_device *m_maincpu;
2727   cpu_device *m_audiocpu;
28   DECLARE_WRITE_LINE_MEMBER(irq_handler);
2829   DECLARE_WRITE16_MEMBER(blockout_sound_command_w);
2930   DECLARE_WRITE16_MEMBER(blockout_irq6_ack_w);
3031   DECLARE_WRITE16_MEMBER(blockout_irq5_ack_w);
trunk/src/mame/includes/fantland.h
r18510r18511
3131   device_t *m_msm4;
3232   optional_shared_ptr<UINT8> m_spriteram;
3333   optional_shared_ptr<UINT8> m_spriteram2;
34   DECLARE_WRITE_LINE_MEMBER(galaxygn_sound_irq);
3435   DECLARE_WRITE8_MEMBER(fantland_nmi_enable_w);
3536   DECLARE_WRITE16_MEMBER(fantland_nmi_enable_16_w);
3637   DECLARE_WRITE8_MEMBER(fantland_soundlatch_w);
trunk/src/mame/includes/megasys1.h
r18510r18511
5656
5757   int m_mcu_hs;
5858   UINT16 m_mcu_hs_ram[0x10];
59   DECLARE_WRITE_LINE_MEMBER(sound_irq);
5960   DECLARE_READ16_MEMBER(ip_select_r);
6061   DECLARE_WRITE16_MEMBER(ip_select_w);
6162   DECLARE_READ16_MEMBER(protection_peekaboo_r);
trunk/src/mame/includes/rpunch.h
r18510r18511
2121   UINT8 m_bins;
2222   UINT8 m_gins;
2323   required_shared_ptr<UINT16> m_spriteram;
24   DECLARE_WRITE_LINE_MEMBER(ym2151_irq_gen);
2425   DECLARE_WRITE16_MEMBER(sound_command_w);
2526   DECLARE_READ8_MEMBER(sound_command_r);
2627   DECLARE_READ16_MEMBER(sound_busy_r);
trunk/src/mame/drivers/chinagat.c
r18510r18511
338338static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, ddragon_state )
339339   AM_RANGE(0x0000, 0x7fff) AM_ROM
340340   AM_RANGE(0x8000, 0x87ff) AM_RAM
341   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
341   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
342342   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
343343   AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_byte_r)
344344ADDRESS_MAP_END
r18510r18511
364364static ADDRESS_MAP_START( saiyugoub1_sound_map, AS_PROGRAM, 8, ddragon_state )
365365   AM_RANGE(0x0000, 0x7fff) AM_ROM
366366   AM_RANGE(0x8000, 0x87ff) AM_RAM
367   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
367   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
368368   AM_RANGE(0x9800, 0x9800) AM_WRITE_LEGACY(saiyugoub1_mcu_command_w)
369369   AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_byte_r)
370370ADDRESS_MAP_END
r18510r18511
497497   state->m_snd_cpu->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE );
498498}
499499
500static const ym2151_interface ym2151_config =
501{
502   DEVCB_LINE(chinagat_irq_handler)
503};
504
505500/* This on the bootleg board, instead of the m6295 */
506501static const msm5205_interface msm5205_config =
507502{
r18510r18511
596591   /* sound hardware */
597592   MCFG_SPEAKER_STANDARD_MONO("mono")
598593
599   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
600   MCFG_SOUND_CONFIG(ym2151_config)
594   MCFG_YM2151_ADD("ymsnd", 3579545)
595   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
601596   MCFG_SOUND_ROUTE(0, "mono", 0.80)
602597   MCFG_SOUND_ROUTE(1, "mono", 0.80)
603598
r18510r18511
640635   /* sound hardware */
641636   MCFG_SPEAKER_STANDARD_MONO("mono")
642637
643   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
644   MCFG_SOUND_CONFIG(ym2151_config)
638   MCFG_YM2151_ADD("ymsnd", 3579545)
639   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
645640   MCFG_SOUND_ROUTE(0, "mono", 0.80)
646641   MCFG_SOUND_ROUTE(1, "mono", 0.80)
647642
trunk/src/mame/drivers/kaneko16.c
r18510r18511
711711
712712static ADDRESS_MAP_START( blazeon_soundport, AS_IO, 8, kaneko16_state )
713713   ADDRESS_MAP_GLOBAL_MASK(0xff)
714   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
714   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
715715   AM_RANGE(0x06, 0x06) AM_READ(soundlatch_byte_r)
716716ADDRESS_MAP_END
717717
r18510r18511
17961796   /* sound hardware */
17971797   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
17981798
1799   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
1799   MCFG_YM2151_ADD("ymsnd", 4000000)
18001800   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
18011801   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
18021802MACHINE_CONFIG_END
trunk/src/mame/drivers/gauntlet.c
r18510r18511
347347   AM_RANGE(0x1020, 0x102f) AM_MIRROR(0x27c0) AM_READ_PORT("COIN") AM_WRITE(mixer_w)
348348   AM_RANGE(0x1030, 0x103f) AM_MIRROR(0x27c0) AM_READWRITE(switch_6502_r, sound_ctl_w)
349349   AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x27c0) AM_DEVREADWRITE("pokey", pokey_device, read, write)
350   AM_RANGE(0x1810, 0x1811) AM_MIRROR(0x27ce) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
350   AM_RANGE(0x1810, 0x1811) AM_MIRROR(0x27ce) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
351351   AM_RANGE(0x1820, 0x182f) AM_MIRROR(0x27c0) AM_DEVWRITE_LEGACY("tms", tms5220_data_w)
352352   AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x27c0) AM_READWRITE_LEGACY(atarigen_6502_irq_ack_r, atarigen_6502_irq_ack_w)
353353   AM_RANGE(0x4000, 0xffff) AM_ROM
r18510r18511
539539   /* sound hardware */
540540   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
541541
542   MCFG_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4)
542   MCFG_YM2151_ADD("ymsnd", ATARI_CLOCK_14MHz/4)
543543   MCFG_SOUND_ROUTE(1, "lspeaker", 0.48)
544544   MCFG_SOUND_ROUTE(0, "rspeaker", 0.48)
545545
trunk/src/mame/drivers/darkseal.c
r18510r18511
8585static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, darkseal_state )
8686   AM_RANGE(0x000000, 0x00ffff) AM_ROM
8787   AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w)
88   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ym2", ym2151_r, ym2151_w)
88   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
8989   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
9090   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
9191   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
222222
223223/******************************************************************************/
224224
225static void sound_irq(device_t *device, int state)
226{
227   device->machine().device("audiocpu")->execute().set_input_line(1, state); /* IRQ 2 */
228}
229
230static const ym2151_interface ym2151_config =
231{
232   DEVCB_LINE(sound_irq)
233};
234
235225static const deco16ic_interface darkseal_deco16ic_tilegen1_intf =
236226{
237227   "screen",
r18510r18511
297287   MCFG_SOUND_ADD("ym1", YM2203, 32220000/8)
298288   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
299289
300   MCFG_SOUND_ADD("ym2", YM2151, 32220000/9)
301   MCFG_SOUND_CONFIG(ym2151_config)
290   MCFG_YM2151_ADD("ym2", 32220000/9)
291   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
302292   MCFG_SOUND_ROUTE(0, "mono", 0.55)
303293   MCFG_SOUND_ROUTE(1, "mono", 0.55)
304294
trunk/src/mame/drivers/bionicc.c
r18510r18511
163163
164164static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, bionicc_state )
165165   AM_RANGE(0x0000, 0x7fff) AM_ROM
166   AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
166   AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
167167   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
168168   AM_RANGE(0xc000, 0xc7ff) AM_RAM
169169ADDRESS_MAP_END
r18510r18511
382382
383383   MCFG_SPEAKER_STANDARD_MONO("mono")
384384
385   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
385   MCFG_YM2151_ADD("ymsnd", 3579545)
386386   MCFG_SOUND_ROUTE(0, "mono", 0.60)
387387   MCFG_SOUND_ROUTE(1, "mono", 0.60)
388388MACHINE_CONFIG_END
trunk/src/mame/drivers/wwfsstar.c
r18510r18511
180180static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, wwfsstar_state )
181181   AM_RANGE(0x0000, 0x7fff) AM_ROM
182182   AM_RANGE(0x8000, 0x87ff) AM_RAM
183   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
183   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
184184   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
185185   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
186186ADDRESS_MAP_END
r18510r18511
401401
402402
403403/*******************************************************************************
404 Sound Stuff..
405********************************************************************************
406 Straight from Ddragon 3
407*******************************************************************************/
408
409static void wwfsstar_ymirq_handler(device_t *device, int irq)
410{
411   device->machine().device("audiocpu")->execute().set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE );
412}
413
414static const ym2151_interface ym2151_config =
415{
416   DEVCB_LINE(wwfsstar_ymirq_handler)
417};
418
419/*******************************************************************************
420404 Machine Driver(s)
421405*******************************************************************************/
422406
r18510r18511
442426   /* sound hardware */
443427   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
444428
445   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
446   MCFG_SOUND_CONFIG(ym2151_config)
429   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
430   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
447431   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
448432   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
449433
trunk/src/mame/drivers/moo.c
r18510r18511
358358   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
359359   AM_RANGE(0xc000, 0xdfff) AM_RAM
360360   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
361   AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
361   AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
362362   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_byte_w)
363363   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r)
364364   AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_byte_r)
r18510r18511
546546   /* sound hardware */
547547   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
548548
549   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
549   MCFG_YM2151_ADD("ymsnd", 4000000)
550550   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
551551   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
552552
trunk/src/mame/drivers/vaportra.c
r18510r18511
7878static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, vaportra_state )
7979   AM_RANGE(0x000000, 0x00ffff) AM_ROM
8080   AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w)
81   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ym2", ym2151_r, ym2151_w)
81   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
8282   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
8383   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
8484   AM_RANGE(0x140000, 0x140001) AM_READ(vaportra_soundlatch_r)
r18510r18511
199199
200200/******************************************************************************/
201201
202static void sound_irq( device_t *device, int state )
203{
204   vaportra_state *driver_state = device->machine().driver_data<vaportra_state>();
205   driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */
206}
207
208static const ym2151_interface ym2151_config =
209{
210   DEVCB_LINE(sound_irq)
211};
212
213
214202static int vaportra_bank_callback( const int bank )
215203{
216204   return ((bank >> 4) & 0x7) * 0x1000;
r18510r18511
296284   MCFG_SOUND_ADD("ym1", YM2203, 32220000/8)
297285   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
298286
299   MCFG_SOUND_ADD("ym2", YM2151, 32220000/9)
300   MCFG_SOUND_CONFIG(ym2151_config)
287   MCFG_YM2151_ADD("ym2", 32220000/9)
288   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
301289   MCFG_SOUND_ROUTE(0, "mono", 0.60)
302290   MCFG_SOUND_ROUTE(1, "mono", 0.60)
303291
trunk/src/mame/drivers/namcos86.c
r18510r18511
392392   AM_RANGE(0x0080, 0x00ff) AM_RAM                                          \
393393   AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE_LEGACY("namco", namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */   \
394394   AM_RANGE(0x1400, 0x1fff) AM_RAM                                          \
395   AM_RANGE(ADDR_INPUT+0x00, ADDR_INPUT+0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)   \
395   AM_RANGE(ADDR_INPUT+0x00, ADDR_INPUT+0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)   \
396396   AM_RANGE(ADDR_INPUT+0x20, ADDR_INPUT+0x20) AM_READ_PORT("IN0")                  \
397397   AM_RANGE(ADDR_INPUT+0x21, ADDR_INPUT+0x21) AM_READ_PORT("IN1")                  \
398398   AM_RANGE(ADDR_INPUT+0x30, ADDR_INPUT+0x30) AM_READ(dsw0_r)                     \
r18510r18511
10221022   /* sound hardware */
10231023   MCFG_SPEAKER_STANDARD_MONO("mono")
10241024
1025   MCFG_SOUND_ADD("ymsnd", YM2151, 3579580)
1025   MCFG_YM2151_ADD("ymsnd", 3579580)
10261026   MCFG_SOUND_ROUTE(0, "mono", 0.0)
10271027   MCFG_SOUND_ROUTE(1, "mono", 0.60)   /* only right channel is connected */
10281028
trunk/src/mame/drivers/m92.c
r18510r18511
404404   AM_RANGE(0x00000, 0x1ffff) AM_ROM
405405   AM_RANGE(0xa0000, 0xa3fff) AM_RAM
406406   AM_RANGE(0xa8000, 0xa803f) AM_DEVREADWRITE8_LEGACY("irem", irem_ga20_r, irem_ga20_w, 0x00ff)
407   AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff)
407   AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
408408   AM_RANGE(0xa8044, 0xa8045) AM_READWRITE(m92_soundlatch_r, m92_sound_irq_ack_w)
409409   AM_RANGE(0xa8046, 0xa8047) AM_WRITE(m92_sound_status_w)
410410   AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("soundcpu", 0x1fff0)
r18510r18511
909909
910910/***************************************************************************/
911911
912static void sound_irq(device_t *device, int pinstate)
913{
914   m92_state *state = device->machine().driver_data<m92_state>();
915
916   state->m_soundcpu->set_input_line(NEC_INPUT_LINE_INTP0, pinstate ? ASSERT_LINE : CLEAR_LINE);
917}
918
919static const ym2151_interface ym2151_config =
920{
921   DEVCB_LINE(sound_irq)
922};
923
924/***************************************************************************/
925
926912void m92_sprite_interrupt(running_machine &machine)
927913{
928914   m92_state *state = machine.driver_data<m92_state>();
r18510r18511
963949   /* sound hardware */
964950   MCFG_SPEAKER_STANDARD_MONO("mono")
965951
966   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_14_31818MHz/4)
967   MCFG_SOUND_CONFIG(ym2151_config)
952   MCFG_YM2151_ADD("ymsnd", XTAL_14_31818MHz/4)
953   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", NEC_INPUT_LINE_INTP0))
968954   MCFG_SOUND_ROUTE(0, "mono", 0.40)
969955   MCFG_SOUND_ROUTE(1, "mono", 0.40)
970956
trunk/src/mame/drivers/tceptor.c
r18510r18511
179179   AM_RANGE(0x0100, 0x01ff) AM_RAM
180180   AM_RANGE(0x0200, 0x02ff) AM_RAM
181181   AM_RANGE(0x0300, 0x030f) AM_RAM
182   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
182   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
183183   AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("share3")
184184   AM_RANGE(0x3c01, 0x3c01) AM_WRITEONLY
185185   AM_RANGE(0x8000, 0xffff) AM_ROM
r18510r18511
417417   /* sound hardware */
418418   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
419419
420   MCFG_SOUND_ADD("ymsnd", YM2151, 14318180/4)
420   MCFG_YM2151_ADD("ymsnd", 14318180/4)
421421   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
422422   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
423423
trunk/src/mame/drivers/namcos21.c
r18510r18511
13691369static ADDRESS_MAP_START( am_sound_winrun, AS_PROGRAM, 8, namcos21_state )
13701370   AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank6") /* banked */
13711371   AM_RANGE(0x3000, 0x3003) AM_WRITENOP /* ? */
1372   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
1372   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
13731373   AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE_LEGACY("c140", c140_r,c140_w)
13741374   AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) AM_SHARE("mpdualportram")
13751375   AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) /* mirror */
r18510r18511
15401540   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
15411541   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
15421542
1543   MCFG_SOUND_ADD("ymsnd", YM2151, 3579580)
1543   MCFG_YM2151_ADD("ymsnd", 3579580)
15441544   MCFG_SOUND_ROUTE(0, "lspeaker", 0.30)
15451545   MCFG_SOUND_ROUTE(1, "rspeaker", 0.30)
15461546MACHINE_CONFIG_END
r18510r18511
15951595   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
15961596   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
15971597
1598   MCFG_SOUND_ADD("ymsnd", YM2151, 3579580)
1598   MCFG_YM2151_ADD("ymsnd", 3579580)
15991599   MCFG_SOUND_ROUTE(0, "lspeaker", 0.30)
16001600   MCFG_SOUND_ROUTE(1, "rspeaker", 0.30)
16011601MACHINE_CONFIG_END
r18510r18511
16531653   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
16541654   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
16551655
1656   MCFG_SOUND_ADD("ymsnd", YM2151, 3579580)
1656   MCFG_YM2151_ADD("ymsnd", 3579580)
16571657   MCFG_SOUND_ROUTE(0, "lspeaker", 0.30)
16581658   MCFG_SOUND_ROUTE(1, "rspeaker", 0.30)
16591659MACHINE_CONFIG_END
trunk/src/mame/drivers/cninja.c
r18510r18511
298298static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, cninja_state )
299299   AM_RANGE(0x000000, 0x00ffff) AM_ROM
300300   AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w)
301   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ym2", ym2151_r, ym2151_w)
301   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
302302   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
303303   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
304304   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
310310static ADDRESS_MAP_START( sound_map_mutantf, AS_PROGRAM, 8, cninja_state )
311311   AM_RANGE(0x000000, 0x00ffff) AM_ROM
312312   AM_RANGE(0x100000, 0x100001) AM_READNOP AM_WRITENOP
313   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
313   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
314314   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
315315   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
316316   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
322322static ADDRESS_MAP_START( stoneage_s_map, AS_PROGRAM, 8, cninja_state )
323323   AM_RANGE(0x0000, 0x7fff) AM_ROM
324324   AM_RANGE(0x8000, 0x87ff) AM_RAM
325   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
325   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
326326   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
327327   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
328328ADDRESS_MAP_END
r18510r18511
703703
704704/**********************************************************************************/
705705
706static void sound_irq(device_t *device, int state)
707{
708   cninja_state *driver_state = device->machine().driver_data<cninja_state>();
709   driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */
710}
711
712static void sound_irq2(device_t *device, int state)
713{
714   cninja_state *driver_state = device->machine().driver_data<cninja_state>();
715   driver_state->m_audiocpu->set_input_line(0, state);
716}
717
718706WRITE8_MEMBER(cninja_state::sound_bankswitch_w)
719707{
720708   /* the second OKIM6295 ROM is bank switched */
721709   m_oki2->set_bank_base((data & 1) * 0x40000);
722710}
723711
724static const ym2151_interface ym2151_config =
725{
726   DEVCB_LINE(sound_irq),
727   DEVCB_DRIVER_MEMBER(cninja_state,sound_bankswitch_w)
728};
729
730static const ym2151_interface ym2151_interface2 =
731{
732   DEVCB_LINE(sound_irq2)
733};
734
735712/**********************************************************************************/
736713
737714static int cninja_bank_callback( const int bank )
r18510r18511
932909   MCFG_SOUND_ADD("ym1", YM2203, 32220000/8)
933910   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
934911
935   MCFG_SOUND_ADD("ym2", YM2151, 32220000/9)
936   MCFG_SOUND_CONFIG(ym2151_config)
912   MCFG_YM2151_ADD("ym2", 32220000/9)
913   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
914   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(cninja_state,sound_bankswitch_w))
937915   MCFG_SOUND_ROUTE(0, "mono", 0.45)
938916   MCFG_SOUND_ROUTE(1, "mono", 0.45)
939917
r18510r18511
984962   /* sound hardware */
985963   MCFG_SPEAKER_STANDARD_MONO("mono")
986964
987   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
988   MCFG_SOUND_CONFIG(ym2151_interface2)
965   MCFG_YM2151_ADD("ymsnd", 32220000/9)
966   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
989967   MCFG_SOUND_ROUTE(0, "mono", 0.45)
990968   MCFG_SOUND_ROUTE(1, "mono", 0.45)
991969
r18510r18511
10301008   /* sound hardware */
10311009   MCFG_SPEAKER_STANDARD_MONO("mono")
10321010
1033   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
1034   MCFG_SOUND_CONFIG(ym2151_interface2)
1011   MCFG_YM2151_ADD("ymsnd", 32220000/9)
1012   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
10351013   MCFG_SOUND_ROUTE(0, "mono", 0.45)
10361014   MCFG_SOUND_ROUTE(1, "mono", 0.45)
10371015
r18510r18511
10801058   MCFG_SOUND_ADD("ym1", YM2203, 32220000/8)
10811059   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
10821060
1083   MCFG_SOUND_ADD("ym2", YM2151, 32220000/9)
1084   MCFG_SOUND_CONFIG(ym2151_config)
1061   MCFG_YM2151_ADD("ym2", 32220000/9)
1062   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
1063   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(cninja_state,sound_bankswitch_w))
10851064   MCFG_SOUND_ROUTE(0, "mono", 0.45)
10861065   MCFG_SOUND_ROUTE(1, "mono", 0.45)
10871066
r18510r18511
11341113   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60)
11351114   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60)
11361115
1137   MCFG_SOUND_ADD("ym2", YM2151, 32220000/9)
1138   MCFG_SOUND_CONFIG(ym2151_config)
1116   MCFG_YM2151_ADD("ym2", 32220000/9)
1117   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
1118   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(cninja_state,sound_bankswitch_w))
11391119   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
11401120   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
11411121
r18510r18511
11901170   /* sound hardware */
11911171   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
11921172
1193   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
1194   MCFG_SOUND_CONFIG(ym2151_config)
1173   MCFG_YM2151_ADD("ymsnd", 32220000/9)
1174   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
1175   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(cninja_state,sound_bankswitch_w))
11951176   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
11961177   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
11971178
trunk/src/mame/drivers/toaplan2.c
r18510r18511
11301130   AM_RANGE(0x700008, 0x700009) AM_READ_PORT("IN2")
11311131   AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("SYS")
11321132   AM_RANGE(0x700010, 0x700011) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
1133   AM_RANGE(0x700014, 0x700017) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff)
1133   AM_RANGE(0x700014, 0x700017) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
11341134   AM_RANGE(0x70001e, 0x70001f) AM_WRITE(toaplan2_coin_word_w)
11351135ADDRESS_MAP_END
11361136
r18510r18511
12491249   AM_RANGE(0x100000, 0x10ffff) AM_RAM
12501250   AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE_LEGACY("gp9001vdp0", gp9001_vdp_r, gp9001_vdp_w)
12511251   AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
1252   AM_RANGE(0x500000, 0x500003) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff)
1252   AM_RANGE(0x500000, 0x500003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
12531253   AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
12541254   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("JMPR")
12551255   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA")
r18510r18511
14051405static ADDRESS_MAP_START( raizing_sound_z80_mem, AS_PROGRAM, 8, toaplan2_state )
14061406   AM_RANGE(0x0000, 0xbfff) AM_ROM
14071407   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("shared_ram")
1408   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1408   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
14091409   AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_device, read, write)
14101410   AM_RANGE(0xe00e, 0xe00e) AM_WRITE(toaplan2_coin_w)
14111411ADDRESS_MAP_END
r18510r18511
14151415   AM_RANGE(0x0000, 0x7fff) AM_ROM
14161416   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
14171417   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("shared_ram")
1418   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1418   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
14191419   AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_device, read, write)
14201420   AM_RANGE(0xe006, 0xe008) AM_WRITE(raizing_oki_bankswitch_w)
14211421   AM_RANGE(0xe00a, 0xe00a) AM_WRITE(raizing_z80_bankswitch_w)
r18510r18511
14401440   AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w)
14411441   AM_RANGE(0x48, 0x48) AM_READ(soundlatch_byte_r)
14421442   AM_RANGE(0x4a, 0x4a) AM_READ(soundlatch2_byte_r)
1443   AM_RANGE(0x80, 0x81) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1443   AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
14441444   AM_RANGE(0x82, 0x82) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
14451445   AM_RANGE(0x84, 0x84) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
14461446   AM_RANGE(0x88, 0x88) AM_WRITE(raizing_z80_bankswitch_w)
r18510r18511
14751475
14761476
14771477static ADDRESS_MAP_START( v25_mem, AS_PROGRAM, 8, toaplan2_state )
1478   AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1478   AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
14791479   AM_RANGE(0x00004, 0x00004) AM_DEVREADWRITE("oki", okim6295_device, read, write)
14801480   AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram")
14811481ADDRESS_MAP_END
r18510r18511
14831483
14841484static ADDRESS_MAP_START( kbash_v25_mem, AS_PROGRAM, 8, toaplan2_state )
14851485   AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("shared_ram")
1486   AM_RANGE(0x04000, 0x04001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1486   AM_RANGE(0x04000, 0x04001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
14871487   AM_RANGE(0x04002, 0x04002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
14881488   AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_ROM AM_REGION("audiocpu", 0)
14891489ADDRESS_MAP_END
r18510r18511
14911491
14921492static ADDRESS_MAP_START( fixeight_v25_mem, AS_PROGRAM, 8, toaplan2_state )
14931493   AM_RANGE(0x00004, 0x00004) AM_READ(fixeight_region_r)
1494   AM_RANGE(0x0000a, 0x0000b) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1494   AM_RANGE(0x0000a, 0x0000b) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
14951495   AM_RANGE(0x0000c, 0x0000c) AM_DEVREADWRITE("oki", okim6295_device, read, write)
14961496   AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram")
14971497ADDRESS_MAP_END
14981498
14991499
15001500static ADDRESS_MAP_START( vfive_v25_mem, AS_PROGRAM, 8, toaplan2_state )
1501   AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1501   AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
15021502   AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram")
15031503ADDRESS_MAP_END
15041504
r18510r18511
30993099   /* sound hardware */
31003100   MCFG_SPEAKER_STANDARD_MONO("mono")
31013101
3102   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */
3102   MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */
31033103   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
31043104MACHINE_CONFIG_END
31053105
r18510r18511
31903190   /* sound hardware */
31913191   MCFG_SPEAKER_STANDARD_MONO("mono")
31923192
3193   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */
3193   MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */
31943194   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
31953195
31963196   MCFG_OKIM6295_ADD("oki", XTAL_25MHz/24, OKIM6295_PIN7_HIGH) /* verified on pcb */
r18510r18511
32333233   /* sound hardware */
32343234   MCFG_SPEAKER_STANDARD_MONO("mono")
32353235
3236   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8)
3236   MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8)
32373237   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
32383238
32393239   MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH)
r18510r18511
33083308#ifdef TRUXTON2_STEREO   // music data is stereo...
33093309   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
33103310
3311   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8)
3311   MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8)
33123312   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
33133313   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
33143314
r18510r18511
33183318#else   // ...but the hardware is mono
33193319   MCFG_SPEAKER_STANDARD_MONO("mono")
33203320
3321   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */
3321   MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */
33223322   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
33233323
33243324   MCFG_OKIM6295_ADD("oki", XTAL_16MHz/4, OKIM6295_PIN7_LOW) /* verified on pcb */
r18510r18511
34843484   /* sound hardware */
34853485   MCFG_SPEAKER_STANDARD_MONO("mono")
34863486
3487   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */
3487   MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */
34883488   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
34893489
34903490   MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* verified on pcb */
r18510r18511
35613561   /* sound hardware */
35623562   MCFG_SPEAKER_STANDARD_MONO("mono")
35633563
3564   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8) /* verified on pcb */
3564   MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8) /* verified on pcb */
35653565   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
35663566MACHINE_CONFIG_END
35673567
r18510r18511
36003600   /* sound hardware */
36013601   MCFG_SPEAKER_STANDARD_MONO("mono")
36023602
3603   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8)
3603   MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8)
36043604   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
36053605
36063606   MCFG_OKIM6295_ADD("oki", XTAL_32MHz/8, OKIM6295_PIN7_LOW)
r18510r18511
36373637   /* sound hardware */
36383638   MCFG_SPEAKER_STANDARD_MONO("mono")
36393639
3640   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8)
3640   MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8)
36413641   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
36423642
36433643   MCFG_OKIM6295_ADD("oki", XTAL_27MHz/10, OKIM6295_PIN7_HIGH)
r18510r18511
36803680   /* sound hardware */
36813681   MCFG_SPEAKER_STANDARD_MONO("mono")
36823682
3683   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8)
3683   MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8)
36843684   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
36853685
36863686   MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH)
r18510r18511
37233723   /* sound hardware */
37243724   MCFG_SPEAKER_STANDARD_MONO("mono")
37253725
3726   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_27MHz/8)
3726   MCFG_YM2151_ADD("ymsnd", XTAL_27MHz/8)
37273727   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono",1.0)
37283728
37293729   MCFG_OKIM6295_ADD("oki", XTAL_32MHz/32, OKIM6295_PIN7_HIGH)
r18510r18511
37773777   /* sound hardware */
37783778   MCFG_SPEAKER_STANDARD_MONO("mono")
37793779
3780   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_32MHz/8)
3780   MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8)
37813781   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
37823782
37833783   MCFG_OKIM6295_ADD("oki", XTAL_32MHz/16, OKIM6295_PIN7_HIGH)
r18510r18511
38263826   /* sound hardware */
38273827   MCFG_SPEAKER_STANDARD_MONO("mono")
38283828
3829   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_32MHz/8)
3829   MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8)
38303830   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
38313831
38323832   MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/10, OKIM6295_PIN7_HIGH)
trunk/src/mame/drivers/wecleman.c
r18510r18511
630630   AM_RANGE(0x9006, 0x9006) AM_WRITENOP   // ?
631631   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)   // From main CPU
632632   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("konami", k007232_r, k007232_w)   // K007232 (Reading offset 5/b triggers the sample)
633   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
633   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
634634   AM_RANGE(0xf000, 0xf000) AM_WRITE(wecleman_K00723216_bank_w)   // Samples banking
635635ADDRESS_MAP_END
636636
r18510r18511
10851085   /* sound hardware */
10861086   MCFG_SPEAKER_STANDARD_MONO("mono")
10871087
1088   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
1088   MCFG_YM2151_ADD("ymsnd", 3579545)
10891089   MCFG_SOUND_ROUTE(0, "mono", 0.85)
10901090   MCFG_SOUND_ROUTE(1, "mono", 0.85)
10911091
trunk/src/mame/drivers/cischeat.c
r18510r18511
690690   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
691691   AM_RANGE(0x040000, 0x040001) AM_READ(soundlatch_word_r) AM_WRITE(bigrun_soundbank_w)   // From Main CPU
692692   AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w)                     // To Main CPU
693   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff)
693   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
694694   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
695695   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
696696   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM                                       // RAM
r18510r18511
720720   AM_RANGE(0x040004, 0x040005) AM_WRITE(cischeat_soundbank_2_w)            // Sample Banking
721721   AM_RANGE(0x060002, 0x060003) AM_WRITE(soundlatch2_word_w)                     // To Main CPU
722722   AM_RANGE(0x060004, 0x060005) AM_READ(soundlatch_word_r)                        // From Main CPU
723   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff)
723   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
724724   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
725725   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
726726   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM                                       // RAM
r18510r18511
736736   AM_RANGE(0x040004, 0x040005) AM_WRITE(cischeat_soundbank_1_w)            // Sample Banking   (cischeat: 40002)
737737   AM_RANGE(0x040008, 0x040009) AM_WRITE(cischeat_soundbank_2_w)            // Sample Banking   (cischeat: 40004)
738738   AM_RANGE(0x060000, 0x060001) AM_READWRITE(soundlatch_word_r, soundlatch2_word_w)   // From Main CPU    (cischeat: 60004)
739   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff)
739   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
740740   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
741741   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
742742   AM_RANGE(0x0e0000, 0x0fffff) AM_RAM                                       // RAM              (cischeat: f0000-fffff)
r18510r18511
753753   AM_RANGE(0x040008, 0x040009) AM_WRITE(cischeat_soundbank_2_w)               // Sample Banking
754754   AM_RANGE(0x04000e, 0x04000f) AM_WRITENOP                                 // ? 0              (f1gpstar: no)
755755   AM_RANGE(0x060004, 0x060005) AM_READWRITE(soundlatch_word_r, soundlatch2_word_w)      // From Main CPU    (f1gpstar: 60000)
756   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff)
756   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
757757   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
758758   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff)
759759   AM_RANGE(0x0e0000, 0x0fffff) AM_RAM                                          // RAM
r18510r18511
15941594   /* sound hardware */
15951595   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
15961596
1597   MCFG_SOUND_ADD("ymsnd", YM2151, STD_FM_CLOCK)
1597   MCFG_YM2151_ADD("ymsnd", STD_FM_CLOCK)
15981598   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
15991599   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
16001600
trunk/src/mame/drivers/aquarium.c
r18510r18511
129129
130130static ADDRESS_MAP_START( snd_portmap, AS_IO, 8, aquarium_state )
131131   ADDRESS_MAP_GLOBAL_MASK(0xff)
132   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
132   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
133133   AM_RANGE(0x02, 0x02) AM_READWRITE(aquarium_oki_r, aquarium_oki_w)
134134   AM_RANGE(0x04, 0x04) AM_READ(soundlatch_byte_r)
135135   AM_RANGE(0x06, 0x06) AM_WRITE(aquarium_snd_ack_w)
r18510r18511
288288   GFXDECODE_ENTRY( "gfx4", 0, char5bpplayout,   0x400, 32 )
289289GFXDECODE_END
290290
291static void irq_handler( device_t *device, int irq )
292{
293   aquarium_state *state = device->machine().driver_data<aquarium_state>();
294   state->m_audiocpu->set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE);
295}
296
297static const ym2151_interface ym2151_config =
298{
299   DEVCB_LINE(irq_handler)
300};
301
302
303291void aquarium_state::machine_start()
304292{
305293
r18510r18511
340328   /* sound hardware */
341329   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
342330
343   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_14_31818MHz/4) // clock not verified on pcb
344   MCFG_SOUND_CONFIG(ym2151_config)
331   MCFG_YM2151_ADD("ymsnd", XTAL_14_31818MHz/4) // clock not verified on pcb
332   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
345333   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
346334   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
347335
trunk/src/mame/drivers/rbmk.c
r18510r18511
143143{
144144   if(m_mux_data & 8)
145145   {
146      return ym2151_r(machine().device("ymsnd"), space, offset & 1);
146      return machine().device<ym2151_device>("ymsnd")->read(space, offset & 1);
147147   }
148148   else if(m_mux_data & 4)
149149   {
r18510r18511
159159
160160WRITE8_MEMBER(rbmk_state::rbmk_mcu_io_w)
161161{
162   if(m_mux_data & 8) { ym2151_w(machine().device("ymsnd"), space, offset & 1, data); }
162   if(m_mux_data & 8) { machine().device<ym2151_device>("ymsnd")->write(space, offset & 1, data); }
163163   else if(m_mux_data & 4)
164164   {
165165      //printf("%02x %02x W\n",offset,data);
r18510r18511
565565   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
566566   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
567567
568   MCFG_SOUND_ADD("ymsnd", YM2151, 22000000 / 8)
568   MCFG_YM2151_ADD("ymsnd", 22000000 / 8)
569569//  MCFG_SOUND_CONFIG(ym2151_config)
570570   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
571571   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
trunk/src/mame/drivers/namcos1.c
r18510r18511
465465
466466static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, namcos1_state )
467467   AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank17")   /* Banked ROMs */
468   AM_RANGE(0x4000, 0x4001) AM_DEVREAD_LEGACY("ymsnd", ym2151_status_port_r)
469   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
468   AM_RANGE(0x4000, 0x4001) AM_DEVREAD("ymsnd", ym2151_device, status_r)
469   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
470470   AM_RANGE(0x5000, 0x53ff) AM_DEVREADWRITE_LEGACY("namco", namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0x400) /* PSG ( Shared ) */
471471   AM_RANGE(0x7000, 0x77ff) AM_RAMBANK("bank18")   /* TRIRAM (shared) */
472472   AM_RANGE(0x8000, 0x9fff) AM_RAM   /* Sound RAM 3 */
r18510r18511
10561056
10571057
10581058
1059static void namcos1_sound_interrupt( device_t *device, int irq )
1060{
1061   device->machine().device("audiocpu")->execute().set_input_line(M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
1062}
1063
1064static const ym2151_interface ym2151_config =
1065{
1066   DEVCB_LINE(namcos1_sound_interrupt)
1067};
1068
10691059static const namco_interface namco_config =
10701060{
10711061   8,          /* number of voices */
r18510r18511
11211111   /* sound hardware */
11221112   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
11231113
1124   MCFG_SOUND_ADD("ymsnd", YM2151, 3579580)
1125   MCFG_SOUND_CONFIG(ym2151_config)
1114   MCFG_YM2151_ADD("ymsnd", 3579580)
1115   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", M6809_FIRQ_LINE))
11261116   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
11271117   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
11281118
trunk/src/mame/drivers/mainevt.c
r18510r18511
225225   AM_RANGE(0x8000, 0x83ff) AM_RAM
226226   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
227227   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r,k007232_w)
228   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
228   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
229229   AM_RANGE(0xe000, 0xe000) AM_WRITE(devstor_sh_irqcontrol_w)
230230   AM_RANGE(0xf000, 0xf000) AM_WRITE(dv_sh_bankswitch_w)
231231ADDRESS_MAP_END
r18510r18511
536536   /* sound hardware */
537537   MCFG_SPEAKER_STANDARD_MONO("mono")
538538
539   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
539   MCFG_YM2151_ADD("ymsnd", 3579545)
540540   MCFG_SOUND_ROUTE(0, "mono", 0.30)
541541   MCFG_SOUND_ROUTE(1, "mono", 0.30)
542542
trunk/src/mame/drivers/surpratk.c
r18510r18511
9797   AM_RANGE(0x5fa0, 0x5faf) AM_DEVREADWRITE_LEGACY("k053244", k053244_r, k053244_w)
9898   AM_RANGE(0x5fb0, 0x5fbf) AM_DEVWRITE_LEGACY("k053251", k053251_w)
9999   AM_RANGE(0x5fc0, 0x5fc0) AM_READ(watchdog_reset_r) AM_WRITE(surpratk_5fc0_w)
100   AM_RANGE(0x5fd0, 0x5fd1) AM_DEVWRITE_LEGACY("ymsnd", ym2151_w)
100   AM_RANGE(0x5fd0, 0x5fd1) AM_DEVWRITE("ymsnd", ym2151_device, write)
101101   AM_RANGE(0x5fc4, 0x5fc4) AM_WRITE(surpratk_videobank_w)
102102   AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE_LEGACY("k052109", k052109_r, k052109_w)
103103   AM_RANGE(0x8000, 0xffff) AM_ROM               /* ROM */
r18510r18511
157157
158158
159159
160static void irqhandler( device_t *device, int linestate )
161{
162   surpratk_state *state = device->machine().driver_data<surpratk_state>();
163   state->m_maincpu->set_input_line(KONAMI_FIRQ_LINE, linestate);
164}
165
166static const ym2151_interface ym2151_config =
167{
168   DEVCB_LINE(irqhandler)
169};
170
171
172
173160static const k052109_interface surpratk_k052109_intf =
174161{
175162   "gfx1", 0,
r18510r18511
251238   /* sound hardware */
252239   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
253240
254   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
255   MCFG_SOUND_CONFIG(ym2151_config)
241   MCFG_YM2151_ADD("ymsnd", 3579545)
242   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("maincpu", KONAMI_FIRQ_LINE))
256243   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
257244   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
258245MACHINE_CONFIG_END
trunk/src/mame/drivers/atarisy2.c
r18510r18511
833833   AM_RANGE(0x1810, 0x1813) AM_MIRROR(0x278c) AM_READ(leta_r)
834834   AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x2780) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
835835   AM_RANGE(0x1840, 0x1840) AM_MIRROR(0x278f) AM_READ(switch_6502_r)
836   AM_RANGE(0x1850, 0x1851) AM_MIRROR(0x278e) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
836   AM_RANGE(0x1850, 0x1851) AM_MIRROR(0x278e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
837837   AM_RANGE(0x1860, 0x1860) AM_MIRROR(0x278f) AM_READ(sound_6502_r)
838838   AM_RANGE(0x1870, 0x1870) AM_MIRROR(0x2781) AM_WRITE(tms5220_w)
839839   AM_RANGE(0x1872, 0x1873) AM_MIRROR(0x2780) AM_WRITE(tms5220_strobe_w)
r18510r18511
12831283
12841284   /* sound hardware */
12851285   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
1286   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4)
1286   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/4)
12871287   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
12881288   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
12891289
trunk/src/mame/drivers/tatsumi.c
r18510r18511
245245   AM_RANGE(0x00000, 0x01fff) AM_RAM
246246   AM_RANGE(0x04000, 0x04003) AM_NOP // piu select .. ?
247247   AM_RANGE(0x06000, 0x06001) AM_READ_PORT("IN0") // esw
248   AM_RANGE(0x08000, 0x08001) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE_LEGACY("ymsnd", ym2151_w)
248   AM_RANGE(0x08000, 0x08001) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write)
249249   AM_RANGE(0x0a000, 0x0a000) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
250250   AM_RANGE(0x0e000, 0x0e007) AM_READWRITE(apache3_adc_r, apache3_adc_w) //adc select
251251   AM_RANGE(0xf0000, 0xfffff) AM_ROM
r18510r18511
289289static ADDRESS_MAP_START( roundup5_z80_map, AS_PROGRAM, 8, tatsumi_state )
290290   AM_RANGE(0x0000, 0xdfff) AM_ROM
291291   AM_RANGE(0xe000, 0xffef) AM_RAM
292   AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE_LEGACY("ymsnd", ym2151_w)
292   AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write)
293293   AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
294294   AM_RANGE(0xfff8, 0xfff8) AM_READ_PORT("IN0")
295295   AM_RANGE(0xfff9, 0xfff9) AM_READ_PORT("IN1")
r18510r18511
346346static ADDRESS_MAP_START( cyclwarr_z80_map, AS_PROGRAM, 8, tatsumi_state )
347347   AM_RANGE(0x0000, 0xdfff) AM_ROM
348348   AM_RANGE(0xe000, 0xffef) AM_RAM
349   AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE_LEGACY("ymsnd", ym2151_w)
349   AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write)
350350   AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
351351   AM_RANGE(0xfffc, 0xfffc) AM_READ(soundlatch_byte_r)
352352   AM_RANGE(0xfffe, 0xfffe) AM_WRITENOP
r18510r18511
849849
850850/******************************************************************************/
851851
852static void sound_irq(device_t *device, int state)
853{
854   device->machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_IRQ0, state);
855}
856
857static const ym2151_interface ym2151_config =
858{
859   DEVCB_LINE(sound_irq)
860};
861
862852INTERRUPT_GEN_MEMBER(tatsumi_state::roundup5_interrupt)
863853{
864854   device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xc8/4);   /* VBL */
r18510r18511
913903   /* sound hardware */
914904   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
915905
916   MCFG_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4)
917   MCFG_SOUND_CONFIG(ym2151_config)
906   MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4)
907   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
918908   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
919909   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
920910
r18510r18511
954944   /* sound hardware */
955945   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
956946
957   MCFG_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4)
958   MCFG_SOUND_CONFIG(ym2151_config)
947   MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4)
948   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
959949   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
960950   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
961951
r18510r18511
996986   /* sound hardware */
997987   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
998988
999   MCFG_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4)
1000   MCFG_SOUND_CONFIG(ym2151_config)
989   MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4)
990   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
1001991   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
1002992   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
1003993
r18510r18511
10381028   /* sound hardware */
10391029   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
10401030
1041   MCFG_SOUND_ADD("ymsnd", YM2151, CLOCK_1 / 4)
1042   MCFG_SOUND_CONFIG(ym2151_config)
1031   MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4)
1032   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
10431033   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
10441034   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
10451035
trunk/src/mame/drivers/vamphalf.c
r18510r18511
428428static ADDRESS_MAP_START( vamphalf_io, AS_IO, 16, vamphalf_state )
429429   AM_RANGE(0x0c0, 0x0c1) AM_NOP // return 0, when oki chip is read / written
430430   AM_RANGE(0x0c2, 0x0c3) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
431   AM_RANGE(0x140, 0x143) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff)
432   AM_RANGE(0x146, 0x147) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
431   AM_RANGE(0x140, 0x143) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
432   AM_RANGE(0x146, 0x147) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
433433   AM_RANGE(0x1c0, 0x1c3) AM_READ(eeprom_r)
434434   AM_RANGE(0x240, 0x243) AM_WRITE(flipscreen_w)
435435   AM_RANGE(0x600, 0x603) AM_READ_PORT("SYSTEM")
r18510r18511
453453   AM_RANGE(0x308, 0x30b) AM_WRITE(eeprom_w)
454454   AM_RANGE(0x4c0, 0x4c1) AM_NOP // return 0, when oki chip is read / written
455455   AM_RANGE(0x4c2, 0x4c3) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
456   AM_RANGE(0x540, 0x543) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff)
457   AM_RANGE(0x544, 0x547) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
456   AM_RANGE(0x540, 0x543) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
457   AM_RANGE(0x544, 0x547) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
458458   AM_RANGE(0x7c0, 0x7c3) AM_READ(eeprom_r)
459459ADDRESS_MAP_END
460460
r18510r18511
464464   AM_RANGE(0x060, 0x063) AM_READ_PORT("SYSTEM")
465465   AM_RANGE(0x080, 0x081) AM_NOP // return 0, when oki chip is read / written
466466   AM_RANGE(0x082, 0x083) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
467   AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff)
468   AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
467   AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
468   AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
469469   AM_RANGE(0x100, 0x103) AM_READ(eeprom_r)
470470ADDRESS_MAP_END
471471
r18510r18511
483483   AM_RANGE(0x2400, 0x2403) AM_READ(finalgdr_prot_r)
484484   AM_RANGE(0x2800, 0x2803) AM_WRITE(finalgdr_backupram_bank_w)
485485   AM_RANGE(0x2c00, 0x2dff) AM_READWRITE(finalgdr_backupram_r, finalgdr_backupram_w)
486   AM_RANGE(0x3000, 0x3007) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x0000ff00)
486   AM_RANGE(0x3000, 0x3007) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00)
487487   AM_RANGE(0x3800, 0x3803) AM_READ_PORT("P1_P2")
488488   AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x0000ff00)
489489   AM_RANGE(0x3c00, 0x3c03) AM_READ_PORT("SYSTEM")
r18510r18511
504504   AM_RANGE(0x4084, 0x4087) AM_WRITENOP //?
505505   AM_RANGE(0x40a0, 0x40a3) AM_WRITE(finalgdr_oki_bank_w)
506506   AM_RANGE(0x6400, 0x6403) AM_READ(finalgdr_prot_r)
507   AM_RANGE(0x7000, 0x7007) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x0000ff00)
507   AM_RANGE(0x7000, 0x7007) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00)
508508   AM_RANGE(0x7400, 0x7403) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x0000ff00)
509509   AM_RANGE(0x7800, 0x7803) AM_READ_PORT("P1_P2")
510510   AM_RANGE(0x7c00, 0x7c03) AM_READ_PORT("SYSTEM")
r18510r18511
519519   AM_RANGE(0x440, 0x441) AM_NOP // return 0, when oki chip is read / written
520520   AM_RANGE(0x442, 0x443) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
521521   AM_RANGE(0x540, 0x543) AM_READ_PORT("SYSTEM")
522   AM_RANGE(0x680, 0x683) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff)
523   AM_RANGE(0x684, 0x687) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
522   AM_RANGE(0x680, 0x683) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
523   AM_RANGE(0x684, 0x687) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
524524ADDRESS_MAP_END
525525
526526static ADDRESS_MAP_START( mrdig_io, AS_IO, 16, vamphalf_state )
r18510r18511
530530   AM_RANGE(0x080, 0x081) AM_NOP // return 0, when oki chip is read / written
531531   AM_RANGE(0x082, 0x083) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
532532   AM_RANGE(0x280, 0x283) AM_READ_PORT("SYSTEM")
533   AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff)
534   AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
533   AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
534   AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
535535ADDRESS_MAP_END
536536
537537static ADDRESS_MAP_START( aoh_map, AS_PROGRAM, 32, vamphalf_state )
r18510r18511
547547   AM_RANGE(0x0480, 0x0483) AM_WRITE(eeprom32_w)
548548   AM_RANGE(0x0620, 0x0623) AM_DEVREADWRITE8("oki_2", okim6295_device, read, write, 0x0000ff00)
549549   AM_RANGE(0x0660, 0x0663) AM_DEVREADWRITE8("oki_1", okim6295_device, read, write, 0x0000ff00)
550   AM_RANGE(0x0640, 0x0647) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x0000ff00)
550   AM_RANGE(0x0640, 0x0647) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00)
551551   AM_RANGE(0x0680, 0x0683) AM_WRITE(aoh_oki_bank_w)
552552ADDRESS_MAP_END
553553
r18510r18511
563563   AM_RANGE(0x600, 0x603) AM_WRITE(boonggab_oki_bank_w)
564564   AM_RANGE(0x700, 0x701) AM_NOP // return 0, when oki chip is read / written
565565   AM_RANGE(0x702, 0x703) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
566   AM_RANGE(0x740, 0x743) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x00ff)
567   AM_RANGE(0x744, 0x747) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w, 0x00ff)
566   AM_RANGE(0x740, 0x743) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff)
567   AM_RANGE(0x744, 0x747) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff)
568568ADDRESS_MAP_END
569569
570570/*
r18510r18511
10041004static MACHINE_CONFIG_FRAGMENT( sound_ym_oki )
10051005   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
10061006
1007   MCFG_SOUND_ADD("ymsnd", YM2151, 28000000/8)
1007   MCFG_YM2151_ADD("ymsnd", 28000000/8)
10081008   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
10091009   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
10101010
r18510r18511
10161016static MACHINE_CONFIG_FRAGMENT( sound_suplup )
10171017   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
10181018
1019   MCFG_SOUND_ADD("ymsnd", YM2151, 14318180/4)
1019   MCFG_YM2151_ADD("ymsnd", 14318180/4)
10201020   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
10211021   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
10221022
r18510r18511
11341134   /* sound hardware */
11351135   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
11361136
1137   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
1137   MCFG_YM2151_ADD("ymsnd", 3579545)
11381138   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
11391139   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
11401140
trunk/src/mame/drivers/dbz.c
r18510r18511
104104   m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
105105}
106106
107static void dbz_sound_irq( device_t *device, int irq )
108{
109   dbz_state *state = device->machine().driver_data<dbz_state>();
110107
111   state->m_audiocpu->set_input_line(0, (irq) ? ASSERT_LINE : CLEAR_LINE);
112}
113
114108static ADDRESS_MAP_START( dbz_map, AS_PROGRAM, 16, dbz_state )
115109   AM_RANGE(0x000000, 0x0fffff) AM_ROM
116110   AM_RANGE(0x480000, 0x48ffff) AM_RAM
r18510r18511
151145static ADDRESS_MAP_START( dbz_sound_map, AS_PROGRAM, 8, dbz_state )
152146   AM_RANGE(0x0000, 0x7fff) AM_ROM
153147   AM_RANGE(0x8000, 0xbfff) AM_RAM
154   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
148   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
155149   AM_RANGE(0xd000, 0xd002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
156150   AM_RANGE(0xe000, 0xe001) AM_READ(soundlatch_byte_r)
157151ADDRESS_MAP_END
r18510r18511
278272
279273/**********************************************************************************/
280274
281static const ym2151_interface ym2151_config =
282{
283   DEVCB_LINE(dbz_sound_irq)
284};
285
286/**********************************************************************************/
287
288275static const gfx_layout bglayout =
289276{
290277   16,16,
r18510r18511
413400   /* sound hardware */
414401   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
415402
416   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
417   MCFG_SOUND_CONFIG(ym2151_config)
403   MCFG_YM2151_ADD("ymsnd", 4000000)
404   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
418405   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
419406   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
420407
trunk/src/mame/drivers/amspdwy.c
r18510r18511
6464
6565READ8_MEMBER(amspdwy_state::amspdwy_sound_r)
6666{
67   device_t *device = machine().device("ymsnd");
68   return (ym2151_status_port_r(device, space, 0) & ~ 0x30) | machine().root_device().ioport("IN0")->read();
67   ym2151_device *device = machine().device<ym2151_device>("ymsnd");
68   return (device->status_r(space, 0) & ~ 0x30) | machine().root_device().ioport("IN0")->read();
6969}
7070
7171WRITE8_MEMBER(amspdwy_state::amspdwy_sound_w)
r18510r18511
116116   AM_RANGE(0x0000, 0x7fff) AM_ROM                           // ROM
117117//  AM_RANGE(0x8000, 0x8000) AM_WRITENOP                            // ? Written with 0 at the start
118118   AM_RANGE(0x9000, 0x9000) AM_READ(soundlatch_byte_r)               // From Main CPU
119   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)         //
119   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)         //
120120   AM_RANGE(0xc000, 0xdfff) AM_RAM                           // Work RAM
121121   AM_RANGE(0xffff, 0xffff) AM_READNOP                        // ??? IY = FFFF at the start ?
122122ADDRESS_MAP_END
r18510r18511
239239***************************************************************************/
240240
241241
242static void irq_handler( device_t *device, int irq )
243{
244   amspdwy_state *state = device->machine().driver_data<amspdwy_state>();
245   state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
246}
247
248static const ym2151_interface amspdwy_ym2151_interface =
249{
250   DEVCB_LINE(irq_handler)
251};
252
253242void amspdwy_state::machine_start()
254243{
255244
r18510r18511
297286   /* sound hardware */
298287   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
299288
300   MCFG_SOUND_ADD("ymsnd", YM2151, 3000000)
301   MCFG_SOUND_CONFIG(amspdwy_ym2151_interface)
289   MCFG_YM2151_ADD("ymsnd", 3000000)
290   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
302291   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
303292   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
304293MACHINE_CONFIG_END
trunk/src/mame/drivers/gotcha.c
r18510r18511
119119
120120static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, gotcha_state )
121121   AM_RANGE(0x0000, 0x7fff) AM_ROM
122   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
122   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
123123   AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_MIRROR(1)
124124   AM_RANGE(0xc006, 0xc006) AM_READ(soundlatch_byte_r)
125125   AM_RANGE(0xd000, 0xd7ff) AM_RAM
r18510r18511
238238
239239
240240
241static void irqhandler( device_t *device, int linestate )
242{
243   gotcha_state *state = device->machine().driver_data<gotcha_state>();
244   state->m_audiocpu->set_input_line(0, linestate);
245}
246
247static const ym2151_interface ym2151_config =
248{
249   DEVCB_LINE(irqhandler)
250};
251
252
253241void gotcha_state::machine_start()
254242{
255243
r18510r18511
306294   /* sound hardware */
307295   MCFG_SPEAKER_STANDARD_MONO("mono")
308296
309   MCFG_SOUND_ADD("ymsnd", YM2151, 14318180/4)
310   MCFG_SOUND_CONFIG(ym2151_config)
297   MCFG_YM2151_ADD("ymsnd", 14318180/4)
298   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
311299   MCFG_SOUND_ROUTE(0, "mono", 0.80)
312300   MCFG_SOUND_ROUTE(1, "mono", 0.80)
313301
trunk/src/mame/drivers/tumbleb.c
r18510r18511
654654#if FNCYWLD_HACK
655655   AM_RANGE(0x000000, 0x0fffff) AM_WRITEONLY   /* To write levels modifications */
656656#endif
657   AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff)
657   AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
658658   AM_RANGE(0x100004, 0x100005) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
659659   AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
660660   AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* sprites */
r18510r18511
755755static ADDRESS_MAP_START( semicom_sound_map, AS_PROGRAM, 8, tumbleb_state )
756756   AM_RANGE(0x0000, 0xcfff) AM_ROM
757757   AM_RANGE(0xd000, 0xd7ff) AM_RAM
758   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
758   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
759759   AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
760760   //AM_RANGE(0xf006, 0xf006) ??
761761   AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_byte_r)
r18510r18511
21092109   /* sound hardware */
21102110   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
21112111
2112   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
2112   MCFG_YM2151_ADD("ymsnd", 32220000/9)
21132113   MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)
21142114   MCFG_SOUND_ROUTE(1, "rspeaker", 0.20)
21152115
r18510r18511
21202120
21212121
21222122
2123static void semicom_irqhandler( device_t *device, int irq )
2124{
2125   tumbleb_state *state = device->machine().driver_data<tumbleb_state>();
2126   state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
2127}
2128
2129
2130static const ym2151_interface semicom_ym2151_interface =
2131{
2132   DEVCB_LINE(semicom_irqhandler)
2133};
2134
21352123MACHINE_RESET_MEMBER(tumbleb_state,htchctch)
21362124{
21372125
r18510r18511
21782166   /* sound hardware - same as hyperpac */
21792167   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
21802168
2181   MCFG_SOUND_ADD("ymsnd", YM2151, 3427190)
2182   MCFG_SOUND_CONFIG(semicom_ym2151_interface)
2169   MCFG_YM2151_ADD("ymsnd", 3427190)
2170   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
21832171   MCFG_SOUND_ROUTE(0, "lspeaker", 0.10)
21842172   MCFG_SOUND_ROUTE(1, "rspeaker", 0.10)
21852173
r18510r18511
22102198   MCFG_SCREEN_UPDATE_DRIVER(tumbleb_state, screen_update_bcstory)
22112199
22122200   MCFG_SOUND_REPLACE("ymsnd", YM2151, 3427190)
2213   MCFG_SOUND_CONFIG(semicom_ym2151_interface)
2201   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
22142202   MCFG_SOUND_ROUTE(0, "lspeaker", 0.10)
22152203   MCFG_SOUND_ROUTE(1, "rspeaker", 0.10)
22162204MACHINE_CONFIG_END
r18510r18511
22302218static MACHINE_CONFIG_DERIVED( metlsavr, cookbib )
22312219
22322220   MCFG_SOUND_REPLACE("ymsnd", YM2151, 3427190)
2233   MCFG_SOUND_CONFIG(semicom_ym2151_interface)
2221   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
22342222   MCFG_SOUND_ROUTE(0, "lspeaker", 0.10)
22352223   MCFG_SOUND_ROUTE(1, "rspeaker", 0.10)
22362224MACHINE_CONFIG_END
trunk/src/mame/drivers/micro3d.c
r18510r18511
273273
274274static ADDRESS_MAP_START( soundmem_io, AS_IO, 8, micro3d_state )
275275   AM_RANGE(0x0000, 0x07ff) AM_RAM
276   AM_RANGE(0xfd00, 0xfd01) AM_DEVREADWRITE_LEGACY("ym2151", ym2151_r, ym2151_w)
276   AM_RANGE(0xfd00, 0xfd01) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
277277   AM_RANGE(0xfe00, 0xfe00) AM_WRITE(micro3d_upd7759_w)
278278   AM_RANGE(0xff00, 0xff00) AM_WRITE(micro3d_snd_dac_a)
279279   AM_RANGE(0xff01, 0xff01) AM_WRITE(micro3d_snd_dac_b)
r18510r18511
368368   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35)
369369   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35)
370370
371   MCFG_SOUND_ADD("ym2151", YM2151, XTAL_3_579545MHz)
371   MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz)
372372   MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
373373   MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
374374
trunk/src/mame/drivers/vigilant.c
r18510r18511
109109
110110static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, vigilant_state )
111111   ADDRESS_MAP_GLOBAL_MASK(0xff)
112   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
112   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
113113   AM_RANGE(0x80, 0x81) AM_READ(soundlatch_byte_r) AM_DEVWRITE_LEGACY("m72", vigilant_sample_addr_w)   /* STL / STH */
114114   AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w)         /* COUNT UP */
115115   AM_RANGE(0x83, 0x83) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)   /* IRQ clear */
r18510r18511
461461
462462
463463
464static const ym2151_interface ym2151_config =
465{
466   DEVCB_LINE(m72_ym2151_irq_handler)
467};
468
469464static const ym2203_interface ym2203_config =
470465{
471466   {
r18510r18511
507502
508503   MCFG_SOUND_ADD("m72", M72, 0)
509504
510   MCFG_SOUND_ADD("ymsnd", YM2151, 3579645)
511   MCFG_SOUND_CONFIG(ym2151_config)
505   MCFG_YM2151_ADD("ymsnd", 3579645)
506   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
512507   MCFG_SOUND_ROUTE(0, "lspeaker", 0.55)
513508   MCFG_SOUND_ROUTE(1, "rspeaker", 0.55)
514509
r18510r18511
603598
604599   MCFG_SOUND_ADD("m72", M72, 0)
605600
606   MCFG_SOUND_ADD("ymsnd", YM2151, 3579645)
607   MCFG_SOUND_CONFIG(ym2151_config)
601   MCFG_YM2151_ADD("ymsnd", 3579645)
602   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
608603   MCFG_SOUND_ROUTE(0, "lspeaker", 0.55)
609604   MCFG_SOUND_ROUTE(1, "rspeaker", 0.55)
610605
trunk/src/mame/drivers/dassault.c
r18510r18511
262262static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dassault_state )
263263   AM_RANGE(0x000000, 0x00ffff) AM_ROM
264264   AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w)
265   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ym2", ym2151_r, ym2151_w)
265   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
266266   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
267267   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
268268   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
445445
446446/**********************************************************************************/
447447
448static void sound_irq(device_t *device, int state)
449{
450   dassault_state *driver_state = device->machine().driver_data<dassault_state>();
451   driver_state->m_audiocpu->set_input_line(1, state);
452}
453
454448WRITE8_MEMBER(dassault_state::sound_bankswitch_w)
455449{
456450
r18510r18511
458452   m_oki2->set_bank_base((data & 1) * 0x40000);
459453}
460454
461static const ym2151_interface ym2151_config =
462{
463   DEVCB_LINE(sound_irq),
464   DEVCB_DRIVER_MEMBER(dassault_state,sound_bankswitch_w)
465};
466
467455/**********************************************************************************/
468456
469457static const decocomn_interface dassault_decocomn_intf =
r18510r18511
552540   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.40)
553541   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.40)
554542
555   MCFG_SOUND_ADD("ym2", YM2151, XTAL_32_22MHz/9)
556   MCFG_SOUND_CONFIG(ym2151_config)
543   MCFG_YM2151_ADD("ym2", XTAL_32_22MHz/9)
544   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
545   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(dassault_state,sound_bankswitch_w))
557546   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
558547   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
559548
trunk/src/mame/drivers/supbtime.c
r18510r18511
9797   ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
9898   AM_RANGE(0x000000, 0x00ffff) AM_ROM
9999   AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */
100   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
100   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
101101   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
102102   AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */
103103   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
308308
309309/******************************************************************************/
310310
311static void sound_irq(device_t *device, int state)
312{
313   supbtime_state *driver_state = device->machine().driver_data<supbtime_state>();
314   driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */
315}
316
317static const ym2151_interface ym2151_config =
318{
319   DEVCB_LINE(sound_irq)
320};
321
322311static const deco16ic_interface supbtime_deco16ic_tilegen1_intf =
323312{
324313   "screen",
r18510r18511
369358   /* sound hardware */
370359   MCFG_SPEAKER_STANDARD_MONO("mono")
371360
372   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
373   MCFG_SOUND_CONFIG(ym2151_config)
361   MCFG_YM2151_ADD("ymsnd", 32220000/9)
362   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
374363   MCFG_SOUND_ROUTE(0, "mono", 0.45)
375364   MCFG_SOUND_ROUTE(1, "mono", 0.45)
376365
r18510r18511
410399   /* sound hardware */
411400   MCFG_SPEAKER_STANDARD_MONO("mono")
412401
413   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
414   MCFG_SOUND_CONFIG(ym2151_config)
402   MCFG_YM2151_ADD("ymsnd", 32220000/9)
403   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
415404   MCFG_SOUND_ROUTE(0, "mono", 0.45)
416405   MCFG_SOUND_ROUTE(1, "mono", 0.45)
417406
trunk/src/mame/drivers/gbusters.c
r18510r18511
173173   AM_RANGE(0x8000, 0x87ff) AM_RAM                                       /* RAM */
174174   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)                           /* soundlatch_byte_r */
175175   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)      /* 007232 registers */
176   AM_RANGE(0xc001, 0xc001) AM_DEVREAD_LEGACY("ymsnd", ym2151_status_port_r)               /* YM 2151 */
177   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)            /* YM 2151 */
176   AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ymsnd", ym2151_device, status_r)               /* YM 2151 */
177   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)            /* YM 2151 */
178178   AM_RANGE(0xf000, 0xf000) AM_WRITE(gbusters_snd_bankswitch_w)      /* 007232 bankswitch? */
179179ADDRESS_MAP_END
180180
r18510r18511
327327   /* sound hardware */
328328   MCFG_SPEAKER_STANDARD_MONO("mono")
329329
330   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
330   MCFG_YM2151_ADD("ymsnd", 3579545)
331331   MCFG_SOUND_ROUTE(0, "mono", 0.60)
332332   MCFG_SOUND_ROUTE(1, "mono", 0.60)
333333
trunk/src/mame/drivers/topspeed.c
r18510r18511
535535   AM_RANGE(0x0000, 0x3fff) AM_ROM
536536   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank10")
537537   AM_RANGE(0x8000, 0x8fff) AM_RAM
538   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
538   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
539539   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
540540   AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
541541   AM_RANGE(0xb000, 0xd3ff) AM_WRITE(topspeed_msm5205_command_w)
r18510r18511
655655                        YM2151 (SOUND)
656656**************************************************************/
657657
658/* handler called by the YM2151 emulator when the internal timers cause an IRQ */
659
660static void irq_handler( device_t *device, int irq )   /* assumes Z80 sandwiched between 68Ks */
661{
662   topspeed_state *state = device->machine().driver_data<topspeed_state>();
663   state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
664}
665
666static const ym2151_interface ym2151_config =
667{
668   DEVCB_LINE(irq_handler),
669   DEVCB_DRIVER_MEMBER(topspeed_state,sound_bankswitch_w)
670};
671
672658static const msm5205_interface msm5205_config_1 =
673659{
674660   topspeed_msm5205_vck_1,   /* VCK function */
r18510r18511
779765   /* sound hardware */
780766   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
781767
782   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz / 4)
783   MCFG_SOUND_CONFIG(ym2151_config)
768   MCFG_YM2151_ADD("ymsnd", XTAL_16MHz / 4)
769   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
770   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(topspeed_state,sound_bankswitch_w))
784771   MCFG_SOUND_ROUTE(0, "lspeaker", 0.30)
785772   MCFG_SOUND_ROUTE(1, "rspeaker", 0.30)
786773
trunk/src/mame/drivers/fantland.c
r18510r18511
293293
294294static ADDRESS_MAP_START( fantland_sound_iomap, AS_IO, 8, fantland_state )
295295   AM_RANGE( 0x0080, 0x0080 ) AM_READ(soundlatch_byte_r )
296   AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w )
296   AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
297297   AM_RANGE( 0x0180, 0x0180 ) AM_DEVWRITE("dac", dac_device, write_unsigned8 )
298298ADDRESS_MAP_END
299299
300300static ADDRESS_MAP_START( galaxygn_sound_iomap, AS_IO, 8, fantland_state )
301301   AM_RANGE( 0x0080, 0x0080 ) AM_READ(soundlatch_byte_r )
302   AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w )
302   AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
303303ADDRESS_MAP_END
304304
305305
r18510r18511
873873   /* sound hardware */
874874   MCFG_SPEAKER_STANDARD_MONO("mono")
875875
876   MCFG_SOUND_ADD("ymsnd", YM2151, 3000000)
876   MCFG_YM2151_ADD("ymsnd", 3000000)
877877   MCFG_SOUND_ROUTE(0, "mono", 0.35)
878878   MCFG_SOUND_ROUTE(1, "mono", 0.35)
879879
r18510r18511
882882MACHINE_CONFIG_END
883883
884884
885static void galaxygn_sound_irq( device_t *device, int line )
885WRITE_LINE_MEMBER(fantland_state::galaxygn_sound_irq)
886886{
887   fantland_state *state = device->machine().driver_data<fantland_state>();
888   state->m_audio_cpu->execute().set_input_line_and_vector(0, line ? ASSERT_LINE : CLEAR_LINE, 0x80/4);
887   m_audio_cpu->execute().set_input_line_and_vector(0, state ? ASSERT_LINE : CLEAR_LINE, 0x80/4);
889888}
890889
891static const ym2151_interface galaxygn_ym2151_interface =
892{
893   DEVCB_LINE(galaxygn_sound_irq)
894};
895
896890static MACHINE_CONFIG_START( galaxygn, fantland_state )
897891
898892   /* basic machine hardware */
r18510r18511
922916   /* sound hardware */
923917   MCFG_SPEAKER_STANDARD_MONO("mono")
924918
925   MCFG_SOUND_ADD("ymsnd", YM2151, 3000000)
926   MCFG_SOUND_CONFIG(galaxygn_ym2151_interface)
919   MCFG_YM2151_ADD("ymsnd", 3000000)
920   MCFG_YM2151_IRQ_HANDLER(WRITELINE(fantland_state, galaxygn_sound_irq))
927921   MCFG_SOUND_ROUTE(0, "mono", 1.0)
928922   MCFG_SOUND_ROUTE(1, "mono", 1.0)
929923MACHINE_CONFIG_END
trunk/src/mame/drivers/rpunch.c
r18510r18511
122122 *
123123 *************************************/
124124
125static void ym2151_irq_gen(device_t *device, int state)
125WRITE_LINE_MEMBER(rpunch_state::ym2151_irq_gen)
126126{
127   rpunch_state *drvstate = device->machine().driver_data<rpunch_state>();
128   drvstate->m_ym2151_irq = state;
129   device->machine().device("audiocpu")->execute().set_input_line(0, (drvstate->m_ym2151_irq | drvstate->m_sound_busy) ? ASSERT_LINE : CLEAR_LINE);
127   m_ym2151_irq = state;
128   subdevice("audiocpu")->execute().set_input_line(0, (m_ym2151_irq | m_sound_busy) ? ASSERT_LINE : CLEAR_LINE);
130129}
131130
132131
r18510r18511
251250
252251static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, rpunch_state )
253252   AM_RANGE(0x0000, 0xefff) AM_ROM
254   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
253   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
255254   AM_RANGE(0xf200, 0xf200) AM_READ(sound_command_r)
256255   AM_RANGE(0xf400, 0xf400) AM_WRITE(upd_control_w)
257256   AM_RANGE(0xf600, 0xf600) AM_WRITE(upd_data_w)
r18510r18511
443442
444443/*************************************
445444 *
446 *  Sound definitions
447 *
448 *************************************/
449
450static const ym2151_interface ym2151_config =
451{
452   DEVCB_LINE(ym2151_irq_gen)
453};
454
455
456
457/*************************************
458 *
459445 *  Machine driver
460446 *
461447 *************************************/
r18510r18511
484470   /* sound hardware */
485471   MCFG_SPEAKER_STANDARD_MONO("mono")
486472
487   MCFG_SOUND_ADD("ymsnd", YM2151, MASTER_CLOCK/4)
488   MCFG_SOUND_CONFIG(ym2151_config)
473   MCFG_YM2151_ADD("ymsnd", MASTER_CLOCK/4)
474   MCFG_YM2151_IRQ_HANDLER(WRITELINE(rpunch_state,ym2151_irq_gen))
489475   MCFG_SOUND_ROUTE(0, "mono", 0.50)
490476   MCFG_SOUND_ROUTE(1, "mono", 0.50)
491477
trunk/src/mame/drivers/bingoc.c
r18510r18511
127127
128128static ADDRESS_MAP_START( sound_io, AS_IO, 8, bingoc_state )
129129   ADDRESS_MAP_GLOBAL_MASK(0xff)
130   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
130   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
131131   AM_RANGE(0x40, 0x40) AM_WRITE(bingoc_play_w)
132132   AM_RANGE(0x80, 0x80) AM_DEVWRITE_LEGACY("upd", upd7759_port_w)
133133#if !SOUND_TEST
r18510r18511
168168
169169   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") //might just be mono...
170170
171   MCFG_SOUND_ADD("ymsnd", YM2151, 7159160/2)
171   MCFG_YM2151_ADD("ymsnd", 7159160/2)
172172   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
173173   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
174174
trunk/src/mame/drivers/thunderx.c
r18510r18511
443443   AM_RANGE(0x8000, 0x87ff) AM_RAM               /* RAM */
444444   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)         /* soundlatch_byte_r */
445445   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)      /* 007232 registers */
446   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)      /* YM2151 */
446   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)      /* YM2151 */
447447   AM_RANGE(0xf000, 0xf000) AM_WRITE(scontra_snd_bankswitch_w)   /* 007232 bank select */
448448ADDRESS_MAP_END
449449
r18510r18511
451451   AM_RANGE(0x0000, 0x7fff) AM_ROM
452452   AM_RANGE(0x8000, 0x87ff) AM_RAM
453453   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
454   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
454   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
455455ADDRESS_MAP_END
456456
457457/***************************************************************************
r18510r18511
687687   /* sound hardware */
688688   MCFG_SPEAKER_STANDARD_MONO("mono")
689689
690   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)   /* verified on pcb */
690   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)   /* verified on pcb */
691691   MCFG_SOUND_ROUTE(0, "mono", 1.0)
692692   MCFG_SOUND_ROUTE(1, "mono", 1.0)
693693
r18510r18511
730730   /* sound hardware */
731731   MCFG_SPEAKER_STANDARD_MONO("mono")
732732
733   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
733   MCFG_YM2151_ADD("ymsnd", 3579545)
734734   MCFG_SOUND_ROUTE(0, "mono", 1.0)
735735   MCFG_SOUND_ROUTE(1, "mono", 1.0)
736736MACHINE_CONFIG_END
trunk/src/mame/drivers/ddragon.c
r18510r18511
330330}
331331
332332
333static void irq_handler( device_t *device, int irq )
333WRITE_LINE_MEMBER(ddragon_state::irq_handler)
334334{
335   ddragon_state *state = device->machine().driver_data<ddragon_state>();
336   state->m_snd_cpu->execute().set_input_line(state->m_ym_irq , irq ? ASSERT_LINE : CLEAR_LINE );
335   m_snd_cpu->execute().set_input_line(m_ym_irq , state ? ASSERT_LINE : CLEAR_LINE );
337336}
338337
339338
r18510r18511
578577   AM_RANGE(0x0000, 0x0fff) AM_RAM
579578   AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_byte_r)
580579   AM_RANGE(0x1800, 0x1800) AM_READ(dd_adpcm_status_r)
581   AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE_LEGACY("fmsnd", ym2151_r, ym2151_w)
580   AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("fmsnd", ym2151_device, read, write)
582581   AM_RANGE(0x3800, 0x3807) AM_WRITE(dd_adpcm_w)
583582   AM_RANGE(0x8000, 0xffff) AM_ROM
584583ADDRESS_MAP_END
r18510r18511
587586static ADDRESS_MAP_START( dd2_sound_map, AS_PROGRAM, 8, ddragon_state )
588587   AM_RANGE(0x0000, 0x7fff) AM_ROM
589588   AM_RANGE(0x8000, 0x87ff) AM_RAM
590   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE_LEGACY("fmsnd", ym2151_r, ym2151_w)
589   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("fmsnd", ym2151_device, read, write)
591590   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
592591   AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_byte_r)
593592ADDRESS_MAP_END
r18510r18511
941940 *
942941 *************************************/
943942
944static const ym2151_interface ym2151_config =
945{
946   DEVCB_LINE(irq_handler)
947};
948
949943static const msm5205_interface msm5205_config =
950944{
951945   dd_adpcm_int,   /* interrupt function */
r18510r18511
991985   /* sound hardware */
992986   MCFG_SPEAKER_STANDARD_MONO("mono")
993987
994   MCFG_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK)
995   MCFG_SOUND_CONFIG(ym2151_config)
988   MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK)
989   MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler))
996990   MCFG_SOUND_ROUTE(0, "mono", 0.60)
997991   MCFG_SOUND_ROUTE(1, "mono", 0.60)
998992
r18510r18511
10541048   /* sound hardware */
10551049   MCFG_SPEAKER_STANDARD_MONO("mono")
10561050
1057   MCFG_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK)
1058   MCFG_SOUND_CONFIG(ym2151_config)
1051   MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK)
1052   MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler))
10591053   MCFG_SOUND_ROUTE(0, "mono", 0.60)
10601054   MCFG_SOUND_ROUTE(1, "mono", 0.60)
10611055
r18510r18511
11001094   /* sound hardware */
11011095   MCFG_SPEAKER_STANDARD_MONO("mono")
11021096
1103   MCFG_SOUND_ADD("fmsnd", YM2151, SOUND_CLOCK)
1104   MCFG_SOUND_CONFIG(ym2151_config)
1097   MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK)
1098   MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler))
11051099   MCFG_SOUND_ROUTE(0, "mono", 0.60)
11061100   MCFG_SOUND_ROUTE(1, "mono", 0.60)
11071101
trunk/src/mame/drivers/asterix.c
r18510r18511
193193static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, asterix_state )
194194   AM_RANGE(0x0000, 0xefff) AM_ROM
195195   AM_RANGE(0xf000, 0xf7ff) AM_RAM
196   AM_RANGE(0xf801, 0xf801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_status_port_r, ym2151_data_port_w)
196   AM_RANGE(0xf801, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, data_w)
197197   AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
198198   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
199   AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE_LEGACY("ymsnd", ym2151_register_port_w)
199   AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE("ymsnd", ym2151_device, register_w)
200200ADDRESS_MAP_END
201201
202202
r18510r18511
316316   /* sound hardware */
317317   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
318318
319   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
319   MCFG_YM2151_ADD("ymsnd", 4000000)
320320   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
321321   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
322322
trunk/src/mame/drivers/cps1.c
r18510r18511
579579   AM_RANGE(0x0000, 0x7fff) AM_ROM
580580   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
581581   AM_RANGE(0xd000, 0xd7ff) AM_RAM
582   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE_LEGACY("2151", ym2151_r, ym2151_w)
582   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("2151", ym2151_device, read, write)
583583   AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
584584   AM_RANGE(0xf004, 0xf004) AM_WRITE(cps1_snd_bankswitch_w)
585585   AM_RANGE(0xf006, 0xf006) AM_WRITE(cps1_oki_pin7_w) /* controls pin 7 of OKI chip */
r18510r18511
30083008
30093009
30103010
3011static void cps1_irq_handler_mus(device_t *device, int irq)
3012{
3013   cps_state *state = device->machine().driver_data<cps_state>();
3014   state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
3015}
3016
3017static const ym2151_interface ym2151_config =
3018{
3019   DEVCB_LINE(cps1_irq_handler_mus)
3020};
3021
3022
3023
30243011/********************************************************************
30253012*
30263013*  Machine Driver macro
r18510r18511
30793066   /* sound hardware */
30803067   MCFG_SPEAKER_STANDARD_MONO("mono")
30813068
3082   MCFG_SOUND_ADD("2151", YM2151, XTAL_3_579545MHz)  /* verified on pcb */
3083   MCFG_SOUND_CONFIG(ym2151_config)
3069   MCFG_YM2151_ADD("2151", XTAL_3_579545MHz)  /* verified on pcb */
3070   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
30843071   MCFG_SOUND_ROUTE(0, "mono", 0.35)
30853072   MCFG_SOUND_ROUTE(1, "mono", 0.35)
30863073
r18510r18511
32373224   /* sound hardware */
32383225   MCFG_SPEAKER_STANDARD_MONO("mono")
32393226
3240   MCFG_SOUND_ADD("2151", YM2151, 3579545)
3241   MCFG_SOUND_CONFIG(ym2151_config)
3227   MCFG_YM2151_ADD("2151", 3579545)
3228   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
32423229   MCFG_SOUND_ROUTE(0, "mono", 0.35)
32433230   MCFG_SOUND_ROUTE(1, "mono", 0.35)
32443231
r18510r18511
33213308   /* sound hardware */
33223309   MCFG_SPEAKER_STANDARD_MONO("mono")
33233310
3324   MCFG_SOUND_ADD("2151", YM2151, 29821000 / 8)
3325   MCFG_SOUND_CONFIG(ym2151_config)
3311   MCFG_YM2151_ADD("2151", 29821000 / 8)
3312   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
33263313   MCFG_SOUND_ROUTE(0, "mono", 0.35)
33273314   MCFG_SOUND_ROUTE(1, "mono", 0.35)
33283315
trunk/src/mame/drivers/cyberbal.c
r18510r18511
204204
205205static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, cyberbal_state )
206206   AM_RANGE(0x0000, 0x1fff) AM_RAM
207   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
207   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
208208   AM_RANGE(0x2800, 0x2801) AM_WRITE(cyberbal_sound_68k_6502_w)
209209   AM_RANGE(0x2802, 0x2803) AM_READWRITE_LEGACY(atarigen_6502_irq_ack_r, atarigen_6502_irq_ack_w)
210210   AM_RANGE(0x2804, 0x2805) AM_WRITE_LEGACY(atarigen_6502_sound_w)
r18510r18511
407407
408408/*************************************
409409 *
410 *  Sound definitions
411 *
412 *************************************/
413
414static const ym2151_interface ym2151_config =
415{
416   DEVCB_LINE(atarigen_ym2151_irq_gen)
417};
418
419
420
421/*************************************
422 *
423410 *  Machine driver
424411 *
425412 *************************************/
r18510r18511
470457   /* sound hardware */
471458   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
472459
473   MCFG_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4)
474   MCFG_SOUND_CONFIG(ym2151_config)
460   MCFG_YM2151_ADD("ymsnd", ATARI_CLOCK_14MHz/4)
461   MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen))
475462   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
476463   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
477464
trunk/src/mame/drivers/badlands.c
r18510r18511
405405
406406static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, badlands_state )
407407   AM_RANGE(0x0000, 0x1fff) AM_RAM
408   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
408   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
409409   AM_RANGE(0x2800, 0x2bff) AM_READWRITE(audio_io_r, audio_io_w)
410410   AM_RANGE(0x3000, 0xffff) AM_ROM
411411ADDRESS_MAP_END
r18510r18511
526526   /* sound hardware */
527527   MCFG_SPEAKER_STANDARD_MONO("mono")
528528
529   MCFG_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4)
529   MCFG_YM2151_ADD("ymsnd", ATARI_CLOCK_14MHz/4)
530530   MCFG_SOUND_ROUTE(0, "mono", 0.30)
531531   MCFG_SOUND_ROUTE(1, "mono", 0.30)
532532MACHINE_CONFIG_END
r18510r18511
732732   /* sound hardware */
733733   MCFG_SPEAKER_STANDARD_MONO("mono")
734734
735   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_20MHz/8)   /* Divisor estimated */
735   MCFG_YM2151_ADD("ymsnd", XTAL_20MHz/8)   /* Divisor estimated */
736736   MCFG_SOUND_ROUTE(0, "mono", 0.30)
737737   MCFG_SOUND_ROUTE(1, "mono", 0.30)
738738MACHINE_CONFIG_END
trunk/src/mame/drivers/boogwing.c
r18510r18511
131131static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, boogwing_state )
132132   AM_RANGE(0x000000, 0x00ffff) AM_ROM
133133   AM_RANGE(0x100000, 0x100001) AM_NOP
134   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
134   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
135135   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
136136   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
137137   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
275275
276276/**********************************************************************************/
277277
278static void sound_irq(device_t *device, int state)
279{
280   boogwing_state *driver_state = device->machine().driver_data<boogwing_state>();
281   driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */
282}
283
284278WRITE8_MEMBER(boogwing_state::sound_bankswitch_w)
285279{
286280   m_oki2->set_bank_base(((data & 2) >> 1) * 0x40000);
287281   m_oki1->set_bank_base((data & 1) * 0x40000);
288282}
289283
290static const ym2151_interface ym2151_config =
291{
292   DEVCB_LINE(sound_irq),
293   DEVCB_DRIVER_MEMBER(boogwing_state,sound_bankswitch_w)
294};
295284
296
297285static int boogwing_bank_callback( const int bank )
298286{
299287   return ((bank >> 4) & 0x7) * 0x1000;
r18510r18511
377365   /* sound hardware */
378366   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
379367
380   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
381   MCFG_SOUND_CONFIG(ym2151_config)
368   MCFG_YM2151_ADD("ymsnd", 32220000/9)
369   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ2 */
370   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(boogwing_state, sound_bankswitch_w))
382371   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
383372   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
384373
trunk/src/mame/drivers/exterm.c
r18510r18511
203203
204204WRITE8_MEMBER(exterm_state::ym2151_data_latch_w)
205205{
206   device_t *device = machine().device("ymsnd");
206   ym2151_device *device = machine().device<ym2151_device>("ymsnd");
207207   /* bit 7 of the sound control selects which port */
208   ym2151_w(device, space, m_sound_control >> 7, data);
208   device->write(space, m_sound_control >> 7, data);
209209}
210210
211211
r18510r18511
472472   MCFG_DAC_ADD("dac")
473473   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
474474
475   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
475   MCFG_YM2151_ADD("ymsnd", 4000000)
476476   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
477477MACHINE_CONFIG_END
478478
trunk/src/mame/drivers/chqflag.c
r18510r18511
185185   AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE_LEGACY("k007232_1", k007232_r, k007232_w)   /* 007232 (chip 1) */
186186   AM_RANGE(0xa01c, 0xa01c) AM_WRITE(k007232_extvolume_w)   /* extra volume, goes to the 007232 w/ A11 */
187187   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232_2", k007232_r, k007232_w)   /* 007232 (chip 2) */
188   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)   /* YM2151 */
188   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)   /* YM2151 */
189189   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r)         /* soundlatch_byte_r */
190190   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch2_byte_r)         /* engine sound volume */
191191   AM_RANGE(0xf000, 0xf000) AM_WRITENOP               /* ??? */
r18510r18511
256256
257257
258258
259static void chqflag_ym2151_irq_w( device_t *device, int data )
260{
261   chqflag_state *state = device->machine().driver_data<chqflag_state>();
262   state->m_audiocpu->set_input_line(INPUT_LINE_NMI, data ? ASSERT_LINE : CLEAR_LINE);
263}
264
265
266static const ym2151_interface ym2151_config =
267{
268   DEVCB_LINE(chqflag_ym2151_irq_w)
269};
270
271259static void volume_callback0( device_t *device, int v )
272260{
273261   k007232_set_volume(device, 0, (v & 0x0f) * 0x11, 0);
r18510r18511
385373   /* sound hardware */
386374   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
387375
388   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
389   MCFG_SOUND_CONFIG(ym2151_config)
376   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */
377   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
390378   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
391379   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
392380
trunk/src/mame/drivers/mustache.c
r18510r18511
209209   /* sound hardware */
210210   MCFG_SPEAKER_STANDARD_MONO("mono")
211211
212   MCFG_SOUND_ADD("ymsnd", YM2151, YM_CLOCK)
213   MCFG_SOUND_CONFIG(t5182_ym2151_interface)
212   MCFG_YM2151_ADD("ymsnd", YM_CLOCK)
213   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<t5182_ym2151_irq_handler>))
214214   MCFG_SOUND_ROUTE(0, "mono", 1.0)
215215   MCFG_SOUND_ROUTE(1, "mono", 1.0)
216216MACHINE_CONFIG_END
trunk/src/mame/drivers/segas16a.c
r18510r18511
10301030static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segas16a_state )
10311031   ADDRESS_MAP_UNMAP_HIGH
10321032   ADDRESS_MAP_GLOBAL_MASK(0xff)
1033   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1033   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
10341034   AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_WRITE(n7751_command_w)
10351035   AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(sound_data_r)
10361036ADDRESS_MAP_END
r18510r18511
19171917
19181918
19191919//**************************************************************************
1920//  SOUND CONFIGURATIONS
1921//**************************************************************************
1922
1923static const ym2151_interface ym2151_config =
1924{
1925   DEVCB_NULL,
1926   DEVCB_DRIVER_MEMBER(segas16a_state, n7751_control_w)
1927};
1928
1929
1930
1931//**************************************************************************
19321920//  GRAPHICS DECODING
19331921//**************************************************************************
19341922
r18510r18511
19771965   // sound hardware
19781966   MCFG_SPEAKER_STANDARD_MONO("mono")
19791967
1980   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
1981   MCFG_SOUND_CONFIG(ym2151_config)
1968   MCFG_YM2151_ADD("ymsnd", 4000000)
1969   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(segas16a_state, n7751_control_w))
19821970   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.43)
19831971
19841972   MCFG_DAC_ADD("dac")
trunk/src/mame/drivers/segahang.c
r18510r18511
540540static ADDRESS_MAP_START( sound_portmap_2151, AS_IO, 8, segahang_state )
541541   ADDRESS_MAP_UNMAP_HIGH
542542   ADDRESS_MAP_GLOBAL_MASK(0xff)
543   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
543   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
544544   AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
545545ADDRESS_MAP_END
546546
r18510r18511
802802   DEVCB_DRIVER_LINE_MEMBER(segahang_state, sound_irq)
803803};
804804
805static const ym2151_interface ym2151_config =
806{
807   DEVCB_DRIVER_LINE_MEMBER(segahang_state, sound_irq)
808};
809
810805static const sega_pcm_interface segapcm_interface =
811806{
812807   BANK_512
r18510r18511
959954   // sound hardware
960955   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
961956
962   MCFG_SOUND_ADD("ymsnd", YM2151, MASTER_CLOCK_8MHz/2)
963   MCFG_SOUND_CONFIG(ym2151_config)
957   MCFG_YM2151_ADD("ymsnd", MASTER_CLOCK_8MHz/2)
958   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
964959   MCFG_SOUND_ROUTE(0, "lspeaker", 0.43)
965960   MCFG_SOUND_ROUTE(1, "rspeaker", 0.43)
966961
trunk/src/mame/drivers/dooyong.c
r18510r18511
303303   AM_RANGE(0x0000, 0xefff) AM_ROM
304304   AM_RANGE(0xf000, 0xf7ff) AM_RAM
305305   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r)
306   AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
306   AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
307307   AM_RANGE(0xf80a, 0xf80a) AM_DEVREADWRITE("oki", okim6295_device, read, write)
308308ADDRESS_MAP_END
309309
r18510r18511
773773   return 0;
774774}
775775
776static void irqhandler(device_t *device, int irq)
777{
778   device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
779}
780
781776static void irqhandler_2203_1(device_t *device, int irq)
782777{
783778   dooyong_state *state = device->machine().driver_data<dooyong_state>();
r18510r18511
812807   DEVCB_LINE(irqhandler_2203_2)
813808};
814809
815static const ym2151_interface ym2151_config =
816{
817   DEVCB_LINE(irqhandler)
818};
819
820810/***************************************************************************
821811
822812    Machine driver(s)
r18510r18511
839829static MACHINE_CONFIG_FRAGMENT( sound_2151 )
840830   MCFG_SPEAKER_STANDARD_MONO("mono")
841831
842   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
843   MCFG_SOUND_CONFIG(ym2151_config)
832   MCFG_YM2151_ADD("ymsnd", 3579545)
833   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
844834   MCFG_SOUND_ROUTE(0, "mono", 0.50)
845835   MCFG_SOUND_ROUTE(1, "mono", 0.50)
846836
r18510r18511
851841static MACHINE_CONFIG_FRAGMENT( sound_2151_m68k )
852842   MCFG_SPEAKER_STANDARD_MONO("mono")
853843
854   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
855   MCFG_SOUND_CONFIG(ym2151_config)
844   MCFG_YM2151_ADD("ymsnd", 4000000)
845   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
856846   MCFG_SOUND_ROUTE(0, "mono", 0.50)
857847   MCFG_SOUND_ROUTE(1, "mono", 0.50)
858848
trunk/src/mame/drivers/silvmil.c
r18510r18511
293293static ADDRESS_MAP_START( silvmil_sound_map, AS_PROGRAM, 8, silvmil_state )
294294   AM_RANGE(0x0000, 0xbfff) AM_ROM
295295   AM_RANGE(0xd000, 0xd7ff) AM_RAM
296   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
296   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
297297   AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_MIRROR(1)
298298   AM_RANGE(0xc006, 0xc006) AM_READ(soundlatch_byte_r)
299299   AM_RANGE(0xc00f, 0xc00f) AM_WRITENOP // ??
r18510r18511
301301
302302/* CLOCKS UNKNOWN! */
303303
304static void silvmil_irqhandler( device_t *device, int irq )
305{
306   device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
307}
308
309
310static const ym2151_interface silvmil_ym2151_interface =
311{
312   DEVCB_LINE(silvmil_irqhandler)
313};
314
315
316304static MACHINE_CONFIG_START( silvmil, silvmil_state )
317305
318306   /* basic machine hardware */
r18510r18511
343331
344332   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
345333
346   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_14_31818MHz/4)
347   MCFG_SOUND_CONFIG(silvmil_ym2151_interface)
334   MCFG_YM2151_ADD("ymsnd", XTAL_14_31818MHz/4)
335   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
348336   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
349337   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
350338
trunk/src/mame/drivers/tmnt.c
r18510r18511
567567   AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3")
568568   AM_RANGE(0x0b0000, 0x0b03ff) AM_READWRITE(cuebrick_nv_r, cuebrick_nv_w) AM_SHARE("nvram")
569569   AM_RANGE(0x0b0400, 0x0b0401) AM_WRITE(cuebrick_nvbank_w)
570   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0xff00)
570   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0xff00)
571571   AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w)
572572   AM_RANGE(0x140000, 0x140007) AM_DEVREADWRITE_LEGACY("k051960", k051937_word_r, k051937_word_w)
573573   AM_RANGE(0x140400, 0x1407ff) AM_DEVREADWRITE_LEGACY("k051960", k051960_word_r, k051960_word_w)
r18510r18511
10971097   AM_RANGE(0x8000, 0x87ff) AM_RAM
10981098   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
10991099   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
1100   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1100   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
11011101ADDRESS_MAP_END
11021102
11031103
r18510r18511
11071107   AM_RANGE(0x9000, 0x9000) AM_READWRITE(tmnt_sres_r, tmnt_sres_w)   /* title music & UPD7759C reset */
11081108   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
11091109   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
1110   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1110   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
11111111   AM_RANGE(0xd000, 0xd000) AM_DEVWRITE_LEGACY("upd", upd7759_port_w)
11121112   AM_RANGE(0xe000, 0xe000) AM_WRITE(tmnt_upd_start_w)
11131113   AM_RANGE(0xf000, 0xf000) AM_READ(tmnt_upd_busy_r)
r18510r18511
11171117static ADDRESS_MAP_START( punkshot_audio_map, AS_PROGRAM, 8, tmnt_state )
11181118   AM_RANGE(0x0000, 0x7fff) AM_ROM
11191119   AM_RANGE(0xf000, 0xf7ff) AM_RAM
1120   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1120   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
11211121   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
11221122   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
11231123ADDRESS_MAP_END
r18510r18511
11261126static ADDRESS_MAP_START( lgtnfght_audio_map, AS_PROGRAM, 8, tmnt_state )
11271127   AM_RANGE(0x0000, 0x7fff) AM_ROM
11281128   AM_RANGE(0x8000, 0x87ff) AM_RAM
1129   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1129   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
11301130   AM_RANGE(0xc000, 0xc02f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
11311131ADDRESS_MAP_END
11321132
r18510r18511
11421142static ADDRESS_MAP_START( ssriders_audio_map, AS_PROGRAM, 8, tmnt_state )
11431143   AM_RANGE(0x0000, 0xefff) AM_ROM
11441144   AM_RANGE(0xf000, 0xf7ff) AM_RAM
1145   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1145   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
11461146   AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
11471147   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
11481148ADDRESS_MAP_END
r18510r18511
11511151static ADDRESS_MAP_START( thndrx2_audio_map, AS_PROGRAM, 8, tmnt_state )
11521152   AM_RANGE(0x0000, 0xefff) AM_ROM
11531153   AM_RANGE(0xf000, 0xf7ff) AM_RAM
1154   AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x0010) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1154   AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x0010) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
11551155   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
11561156   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
11571157ADDRESS_MAP_END
r18510r18511
20282028INPUT_PORTS_END
20292029
20302030
2031static void cuebrick_irq_handler( device_t *device, int state )
2032{
2033   tmnt_state *tmnt = device->machine().driver_data<tmnt_state>();
2034
2035   tmnt->m_maincpu->set_input_line(M68K_IRQ_6, (state) ? ASSERT_LINE : CLEAR_LINE);
2036}
2037
2038static const ym2151_interface ym2151_interface_cbj =
2039{
2040   DEVCB_LINE(cuebrick_irq_handler)
2041};
2042
20432031static void volume_callback(device_t *device, int v)
20442032{
20452033   k007232_set_volume(device, 0, (v >> 4) * 0x11, 0);
r18510r18511
22772265   /* sound hardware */
22782266   MCFG_SPEAKER_STANDARD_MONO("mono")
22792267
2280   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
2281   MCFG_SOUND_CONFIG(ym2151_interface_cbj)
2268   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
2269   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("maincpu", M68K_IRQ_6))
22822270   MCFG_SOUND_ROUTE(0, "mono", 1.0)
22832271   MCFG_SOUND_ROUTE(1, "mono", 1.0)
22842272MACHINE_CONFIG_END
r18510r18511
23172305   /* sound hardware */
23182306   MCFG_SPEAKER_STANDARD_MONO("mono")
23192307
2320   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
2308   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
23212309   MCFG_SOUND_ROUTE(0, "mono", 1.0)
23222310   MCFG_SOUND_ROUTE(1, "mono", 1.0)
23232311
r18510r18511
23712359   /* sound hardware */
23722360   MCFG_SPEAKER_STANDARD_MONO("mono")
23732361
2374   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
2362   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
23752363   MCFG_SOUND_ROUTE(0, "mono", 1.0)
23762364   MCFG_SOUND_ROUTE(1, "mono", 1.0)
23772365
r18510r18511
24212409   /* sound hardware */
24222410   MCFG_SPEAKER_STANDARD_MONO("mono")
24232411
2424   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
2412   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
24252413   MCFG_SOUND_ROUTE(0, "mono", 1.0)
24262414   MCFG_SOUND_ROUTE(1, "mono", 1.0)
24272415
r18510r18511
24642452   /* sound hardware */
24652453   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
24662454
2467   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
2455   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
24682456   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
24692457   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
24702458
r18510r18511
25132501   /* sound hardware */
25142502   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
25152503
2516   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
2504   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
25172505   MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
25182506   MCFG_SOUND_ROUTE(1, "rspeaker", 0.70)
25192507
r18510r18511
26892677   /* sound hardware */
26902678   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
26912679
2692   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
2680   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
26932681   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
26942682   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
26952683
r18510r18511
27362724   /* sound hardware */
27372725   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
27382726
2739   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
2727   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
27402728   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
27412729   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
27422730
r18510r18511
28182806   /* sound hardware */
28192807   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
28202808
2821   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
2809   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
28222810   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
28232811   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
28242812
trunk/src/mame/drivers/ultraman.c
r18510r18511
6060   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r)   /* Sound latch read */
6161//  AM_RANGE(0xd000, 0xd000) AM_WRITENOP      /* ??? */
6262   AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("oki", okim6295_device, read, write)      /* M6295 */
63   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)   /* YM2151 */
63   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)   /* YM2151 */
6464ADDRESS_MAP_END
6565
6666static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, ultraman_state )
r18510r18511
248248   /* sound hardware */
249249   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
250250
251   MCFG_SOUND_ADD("ymsnd", YM2151, 24000000/6)
251   MCFG_YM2151_ADD("ymsnd", 24000000/6)
252252   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
253253   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
254254
trunk/src/mame/drivers/rainbow.c
r18510r18511
410410   AM_RANGE(0x0000, 0x3fff) AM_ROM
411411   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
412412   AM_RANGE(0x8000, 0x8fff) AM_RAM
413   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
413   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
414414   AM_RANGE(0x9002, 0x9100) AM_READNOP
415415   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
416416   AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
r18510r18511
617617GFXDECODE_END
618618
619619
620/**************************************************************
621                   YM2151 & YM2203 (SOUND)
622**************************************************************/
623
624/* handler called by the YM2151 emulator when the internal timers cause an IRQ */
625
626static void irqhandler( device_t *device, int irq )
627{
628   rbisland_state *state = device->machine().driver_data<rbisland_state>();
629   state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
630}
631
632static const ym2151_interface ym2151_config =
633{
634   DEVCB_LINE(irqhandler),
635   DEVCB_DRIVER_MEMBER(rbisland_state,bankswitch_w)
636};
637
638
639620/***********************************************************
640621                      MACHINE DRIVERS
641622***********************************************************/
r18510r18511
701682   /* sound hardware */
702683   MCFG_SPEAKER_STANDARD_MONO("mono")
703684
704   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */
705   MCFG_SOUND_CONFIG(ym2151_config)
685   MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) /* verified on pcb */
686   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
687   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rbisland_state,bankswitch_w))
706688   MCFG_SOUND_ROUTE(0, "mono", 0.50)
707689   MCFG_SOUND_ROUTE(1, "mono", 0.50)
708690
trunk/src/mame/drivers/wwfwfest.c
r18510r18511
8686static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, wwfwfest_state )
8787   AM_RANGE(0x0000, 0xbfff) AM_ROM
8888   AM_RANGE(0xc000, 0xc7ff) AM_RAM
89   AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
89   AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
9090   AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
9191   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
9292   AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w)
r18510r18511
363363}
364364
365365/*******************************************************************************
366 Sound Stuff..
367********************************************************************************
368 Straight from Ddragon 3 with some adjusted volumes
369*******************************************************************************/
370
371static void dd3_ymirq_handler(device_t *device, int irq)
372{
373   device->machine().device("audiocpu")->execute().set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE );
374}
375
376static const ym2151_interface ym2151_config =
377{
378   DEVCB_LINE(dd3_ymirq_handler)
379};
380
381/*******************************************************************************
382366 Machine Driver(s)
383367*******************************************************************************/
384368
r18510r18511
407391   /* sound hardware */
408392   MCFG_SPEAKER_STANDARD_MONO("mono")
409393
410   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
411   MCFG_SOUND_CONFIG(ym2151_config)
394   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
395   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
412396   MCFG_SOUND_ROUTE(0, "mono", 0.45)
413397   MCFG_SOUND_ROUTE(1, "mono", 0.45)
414398
trunk/src/mame/drivers/gaiden.c
r18510r18511
448448
449449static ADDRESS_MAP_START( drgnbowl_sound_port_map, AS_IO, 8, gaiden_state )
450450   ADDRESS_MAP_GLOBAL_MASK(0xff)
451   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
451   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
452452   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write)
453453   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r)
454454ADDRESS_MAP_END
r18510r18511
845845   /* sound hardware */
846846   MCFG_SPEAKER_STANDARD_MONO("mono")
847847
848   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
848   MCFG_YM2151_ADD("ymsnd", 4000000)
849849   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
850850
851851   MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
trunk/src/mame/drivers/xexex.c
r18510r18511
362362   AM_RANGE(0x0000, 0xbfff) AM_ROM
363363   AM_RANGE(0xc000, 0xdfff) AM_RAM
364364   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
365   AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
365   AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
366366   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_byte_w)
367367   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r)
368368   AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_byte_r)
r18510r18511
548548   /* sound hardware */
549549   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
550550
551   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
551   MCFG_YM2151_ADD("ymsnd", 4000000)
552552   MCFG_SOUND_ROUTE(0, "filter1l", 0.50)
553553   MCFG_SOUND_ROUTE(0, "filter1r", 0.50)
554554   MCFG_SOUND_ROUTE(1, "filter2l", 0.50)
trunk/src/mame/drivers/madmotor.c
r18510r18511
6969static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, madmotor_state )
7070   AM_RANGE(0x000000, 0x00ffff) AM_ROM
7171   AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r,ym2203_w)
72   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ym2", ym2151_r,ym2151_w)
72   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device,read,write)
7373   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
7474   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
7575   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
219219
220220/******************************************************************************/
221221
222static void sound_irq(device_t *device, int state)
223{
224   madmotor_state *driver_state = device->machine().driver_data<madmotor_state>();
225   driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */
226}
227
228static const ym2151_interface ym2151_config =
229{
230   DEVCB_LINE(sound_irq)
231};
232
233222void madmotor_state::machine_start()
234223{
235224
r18510r18511
287276   MCFG_SOUND_ADD("ym1", YM2203, 21470000/6)
288277   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
289278
290   MCFG_SOUND_ADD("ym2", YM2151, 21470000/6)
291   MCFG_SOUND_CONFIG(ym2151_config)
279   MCFG_YM2151_ADD("ym2", 21470000/6)
280   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
292281   MCFG_SOUND_ROUTE(0, "mono", 0.45)
293282   MCFG_SOUND_ROUTE(1, "mono", 0.45)
294283
trunk/src/mame/drivers/tnzs.c
r18510r18511
911911   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank")
912912
913913   AM_RANGE(0xa000, 0xa000) AM_WRITE(jpopnics_subbankswitch_w)
914   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
914   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
915915   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN1")
916916   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN2")
917917   AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSWA")
r18510r18511
19201920   /* sound hardware */
19211921   MCFG_SPEAKER_STANDARD_MONO("mono")
19221922
1923   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_12MHz/4) /* Not verified - Main board Crystal is 12MHz */
1923   MCFG_YM2151_ADD("ymsnd", XTAL_12MHz/4) /* Not verified - Main board Crystal is 12MHz */
19241924   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
19251925MACHINE_CONFIG_END
19261926
trunk/src/mame/drivers/rohga.c
r18510r18511
263263static ADDRESS_MAP_START( rohga_sound_map, AS_PROGRAM, 8, rohga_state )
264264   AM_RANGE(0x000000, 0x00ffff) AM_ROM
265265   AM_RANGE(0x100000, 0x100001) AM_NOP
266   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
266   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
267267   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
268268   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
269269   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
717717
718718/**********************************************************************************/
719719
720static void sound_irq(device_t *device, int state)
721{
722   rohga_state *driver_state = device->machine().driver_data<rohga_state>();
723   driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */
724}
725
726720WRITE8_MEMBER(rohga_state::sound_bankswitch_w)
727721{
728722   m_oki1->set_bank_base(BIT(data, 0) * 0x40000);
729723   m_oki2->set_bank_base(BIT(data, 1) * 0x40000);
730724}
731725
732static const ym2151_interface ym2151_config =
733{
734   DEVCB_LINE(sound_irq),
735   DEVCB_DRIVER_MEMBER(rohga_state,sound_bankswitch_w)
736};
737
738726/**********************************************************************************/
739727
740728static const decocomn_interface rohga_decocomn_intf =
r18510r18511
831819   /* sound hardware */
832820   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
833821
834   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
835   MCFG_SOUND_CONFIG(ym2151_config)
822   MCFG_YM2151_ADD("ymsnd", 32220000/9)
823   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))   /* IRQ 2 */
824   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rohga_state,sound_bankswitch_w))
836825   MCFG_SOUND_ROUTE(0, "lspeaker", 0.78)
837826   MCFG_SOUND_ROUTE(1, "rspeaker", 0.78)
838827
r18510r18511
885874   /* sound hardware */
886875   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
887876
888   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
889   MCFG_SOUND_CONFIG(ym2151_config)
877   MCFG_YM2151_ADD("ymsnd", 32220000/9)
878   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))   /* IRQ 2 */
879   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rohga_state,sound_bankswitch_w))
890880   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
891881   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
892882
r18510r18511
939929   /* sound hardware */
940930   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
941931
942   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
943   MCFG_SOUND_CONFIG(ym2151_config)
932   MCFG_YM2151_ADD("ymsnd", 32220000/9)
933   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))   /* IRQ 2 */
934   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rohga_state,sound_bankswitch_w))
944935   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
945936   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
946937
r18510r18511
990981   /* sound hardware */
991982   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
992983
993   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
994   MCFG_SOUND_CONFIG(ym2151_config)
984   MCFG_YM2151_ADD("ymsnd", 32220000/9)
985   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))   /* IRQ 2 */
986   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rohga_state,sound_bankswitch_w))
995987   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
996988   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
997989
trunk/src/mame/drivers/segaorun.c
r18510r18511
852852static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segaorun_state )
853853   ADDRESS_MAP_UNMAP_HIGH
854854   ADDRESS_MAP_GLOBAL_MASK(0xff)
855   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
855   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
856856   AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
857857ADDRESS_MAP_END
858858
r18510r18511
10941094   // sound hardware
10951095   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
10961096
1097   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4)
1097   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/4)
10981098   MCFG_SOUND_ROUTE(0, "lspeaker", 0.43)
10991099   MCFG_SOUND_ROUTE(1, "rspeaker", 0.43)
11001100
trunk/src/mame/drivers/sf.c
r18510r18511
268268   AM_RANGE(0x0000, 0x7fff) AM_ROM
269269   AM_RANGE(0xc000, 0xc7ff) AM_RAM
270270   AM_RANGE(0xc800, 0xc800) AM_READ(soundlatch_byte_r)
271   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
271   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
272272ADDRESS_MAP_END
273273
274274/* Yes, _no_ ram */
r18510r18511
796796
797797
798798
799static void irq_handler( device_t *device, int irq )
800{
801   sf_state *state = device->machine().driver_data<sf_state>();
802   state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
803}
804
805static const ym2151_interface ym2151_config =
806{
807   DEVCB_LINE(irq_handler)
808};
809
810799static const msm5205_interface msm5205_config =
811800{
812801   0,            /* interrupt function */
r18510r18511
865854   /* sound hardware */
866855   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
867856
868   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
869   MCFG_SOUND_CONFIG(ym2151_config)
857   MCFG_YM2151_ADD("ymsnd", 3579545)
858   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
870859   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
871860   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
872861
trunk/src/mame/drivers/unico.c
r18510r18511
221221   AM_RANGE(0x000000, 0x1fffff) AM_ROM                                    // ROM
222222   AM_RANGE(0x800018, 0x80001b) AM_READ_PORT("SYSTEM")
223223   AM_RANGE(0x800024, 0x800027) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff0000   )   // Sound
224   AM_RANGE(0x800028, 0x80002f) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff0000)   //
224   AM_RANGE(0x800028, 0x80002f) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff0000)   //
225225   AM_RANGE(0x800030, 0x800033) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff0000   )   //
226226   AM_RANGE(0x800034, 0x800037) AM_WRITE(zeropnt2_sound_bank_w            )   //
227227   AM_RANGE(0x800038, 0x80003b) AM_WRITE(zeropnt2_leds_w               )   // ?
r18510r18511
700700   /* sound hardware */
701701   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
702702
703   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
703   MCFG_YM2151_ADD("ymsnd", 3579545)
704704   MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
705705   MCFG_SOUND_ROUTE(1, "rspeaker", 0.70)
706706
trunk/src/mame/drivers/system16.c
r18510r18511
429429
430430static ADDRESS_MAP_START( tturfbl_sound_io_map, AS_IO, 8, segas1x_bootleg_state )
431431   ADDRESS_MAP_GLOBAL_MASK(0xff)
432   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
432   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
433433   AM_RANGE(0x40, 0x40) AM_WRITENOP
434434   AM_RANGE(0x80, 0x80) AM_NOP
435435ADDRESS_MAP_END
r18510r18511
444444
445445static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, segas1x_bootleg_state )
446446   ADDRESS_MAP_GLOBAL_MASK(0xff)
447   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
447   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
448448   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r)
449449ADDRESS_MAP_END
450450
r18510r18511
471471
472472static ADDRESS_MAP_START( sound_7759_io_map, AS_IO, 8, segas1x_bootleg_state )
473473   ADDRESS_MAP_GLOBAL_MASK(0xff)
474   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
474   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
475475   AM_RANGE(0x40, 0x40) AM_WRITE(upd7759_bank_w)
476476   AM_RANGE(0x80, 0x80) AM_DEVWRITE_LEGACY("7759", upd7759_port_w)
477477   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r)
r18510r18511
20372037   /* sound hardware */
20382038   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
20392039
2040   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
2040   MCFG_YM2151_ADD("ymsnd", 4000000)
20412041   MCFG_SOUND_ROUTE(0, "lspeaker", 0.32)
20422042   MCFG_SOUND_ROUTE(1, "rspeaker", 0.32)
20432043MACHINE_CONFIG_END
r18510r18511
20862086
20872087   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
20882088
2089   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
2089   MCFG_YM2151_ADD("ymsnd", 4000000)
20902090   MCFG_SOUND_ROUTE(0, "lspeaker", 0.32)
20912091   MCFG_SOUND_ROUTE(1, "rspeaker", 0.32)
20922092
trunk/src/mame/drivers/opwolf.c
r18510r18511
540540   AM_RANGE(0x0000, 0x3fff) AM_ROM
541541   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank10")
542542   AM_RANGE(0x8000, 0x8fff) AM_RAM
543   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
543   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
544544   AM_RANGE(0x9002, 0x9100) AM_READNOP
545545   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
546546   AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
r18510r18511
686686                 YM2151 (SOUND)
687687**************************************************************/
688688
689/* handler called by the YM2151 emulator when the internal timers cause an IRQ */
690
691static void irq_handler( device_t *device, int irq )
692{
693   opwolf_state *state = device->machine().driver_data<opwolf_state>();
694   state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
695}
696
697
698static const ym2151_interface ym2151_config =
699{
700   DEVCB_LINE(irq_handler),
701   DEVCB_DRIVER_MEMBER(opwolf_state,sound_bankswitch_w)
702};
703
704
705689static const msm5205_interface msm5205_config =
706690{
707691   opwolf_msm5205_vck,   /* VCK function */
r18510r18511
761745   /* sound hardware */
762746   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
763747
764   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK )   /* 4 MHz */
765   MCFG_SOUND_CONFIG(ym2151_config)
748   MCFG_YM2151_ADD("ymsnd", SOUND_CPU_CLOCK )   /* 4 MHz */
749   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
750   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(opwolf_state,sound_bankswitch_w))
766751   MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
767752   MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
768753
r18510r18511
814799   /* sound hardware */
815800   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
816801
817   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK )
818   MCFG_SOUND_CONFIG(ym2151_config)
802   MCFG_YM2151_ADD("ymsnd", SOUND_CPU_CLOCK )
803   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
804   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(opwolf_state,sound_bankswitch_w))
819805   MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
820806   MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
821807
trunk/src/mame/drivers/xmen.c
r18510r18511
133133   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank4")
134134   AM_RANGE(0xc000, 0xdfff) AM_RAM
135135   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
136   AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
136   AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
137137   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch2_byte_w)
138138   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r)
139139   AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w)
r18510r18511
394394   /* sound hardware */
395395   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
396396
397   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4)   /* verified on pcb */
397   MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4)   /* verified on pcb */
398398   MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)
399399   MCFG_SOUND_ROUTE(1, "rspeaker", 0.20)
400400
r18510r18511
455455   /* sound hardware */
456456   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
457457
458   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
458   MCFG_YM2151_ADD("ymsnd", 4000000)
459459   MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)
460460   MCFG_SOUND_ROUTE(1, "rspeaker", 0.20)
461461
trunk/src/mame/drivers/simpsons.c
r18510r18511
135135   AM_RANGE(0x0000, 0x7fff) AM_ROM
136136   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
137137   AM_RANGE(0xf000, 0xf7ff) AM_RAM
138   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
138   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
139139   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w)
140140   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
141141   AM_RANGE(0xfe00, 0xfe00) AM_WRITE(z80_bankswitch_w)
r18510r18511
334334   /* sound hardware */
335335   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
336336
337   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
337   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */
338338   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)   /* only left channel is connected */
339339   MCFG_SOUND_ROUTE(0, "rspeaker", 1.0)
340340   MCFG_SOUND_ROUTE(1, "lspeaker", 0.0)
trunk/src/mame/drivers/suna16.c
r18510r18511
201201static ADDRESS_MAP_START( bssoccer_sound_map, AS_PROGRAM, 8, suna16_state )
202202   AM_RANGE(0x0000, 0x7fff) AM_ROM   // ROM
203203   AM_RANGE(0xf000, 0xf7ff) AM_RAM   // RAM
204   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)   // YM2151
204   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)   // YM2151
205205   AM_RANGE(0xfc00, 0xfc00) AM_READ(soundlatch_byte_r)   // From Main CPU
206206   AM_RANGE(0xfd00, 0xfd00) AM_WRITE(soundlatch2_byte_w)   // To PCM Z80 #1
207207   AM_RANGE(0xfe00, 0xfe00) AM_WRITE(soundlatch3_byte_w)   // To PCM Z80 #2
r18510r18511
214214static ADDRESS_MAP_START( uballoon_sound_map, AS_PROGRAM, 8, suna16_state )
215215   AM_RANGE(0x0000, 0xefff) AM_ROM   // ROM
216216   AM_RANGE(0xf000, 0xf7ff) AM_RAM   // RAM
217   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)   // YM2151
217   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)   // YM2151
218218   AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(soundlatch_byte_r, soundlatch2_byte_w)   // To PCM Z80
219219ADDRESS_MAP_END
220220
r18510r18511
225225static ADDRESS_MAP_START( sunaq_sound_map, AS_PROGRAM, 8, suna16_state )
226226   AM_RANGE(0x0000, 0xe82f) AM_ROM   // ROM
227227   AM_RANGE(0xe830, 0xf7ff) AM_RAM   // RAM (writes to efxx, could be a program bug tho)
228   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)   // YM2151
228   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)   // YM2151
229229   AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(soundlatch_byte_r, soundlatch2_byte_w)   // To PCM Z80
230230ADDRESS_MAP_END
231231
r18510r18511
799799   /* sound hardware */
800800   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
801801
802   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
802   MCFG_YM2151_ADD("ymsnd", 3579545)
803803   MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)
804804   MCFG_SOUND_ROUTE(1, "rspeaker", 0.20)
805805
r18510r18511
857857   /* sound hardware */
858858   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
859859
860   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
860   MCFG_YM2151_ADD("ymsnd", 3579545)
861861   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
862862   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
863863
r18510r18511
905905   /* sound hardware */
906906   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
907907
908   MCFG_SOUND_ADD("ymsnd", YM2151, 14318000/4)
908   MCFG_YM2151_ADD("ymsnd", 14318000/4)
909909   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
910910   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
911911
trunk/src/mame/drivers/hyprduel.c
r18510r18511
444444static ADDRESS_MAP_START( hyprduel_map2, AS_PROGRAM, 16, hyprduel_state )
445445   AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE("sharedram1")                  /* shadow ($c00000 - $c03fff : vector) */
446446   AM_RANGE(0x004000, 0x007fff) AM_READONLY AM_WRITENOP AM_SHARE("sharedram3")         /* shadow ($fe4000 - $fe7fff : read only) */
447   AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff )
447   AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff )
448448   AM_RANGE(0x400004, 0x400005) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
449449   AM_RANGE(0x800000, 0x800001) AM_NOP
450450   AM_RANGE(0xc00000, 0xc07fff) AM_RAM AM_SHARE("sharedram1")
r18510r18511
613613GFXDECODE_END
614614
615615/***************************************************************************
616                            Sound Communication
617***************************************************************************/
618
619static void sound_irq( device_t *device, int state )
620{
621   hyprduel_state *hyprduel = device->machine().driver_data<hyprduel_state>();
622   hyprduel->m_subcpu->set_input_line(1, HOLD_LINE);
623}
624
625static const ym2151_interface ym2151_config =
626{
627   DEVCB_LINE(sound_irq)
628};
629
630/***************************************************************************
631616                                Machine Drivers
632617***************************************************************************/
633618
r18510r18511
693678   /* sound hardware */
694679   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
695680
696   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
697   MCFG_SOUND_CONFIG(ym2151_config)
681   MCFG_YM2151_ADD("ymsnd", 4000000)
682   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("sub", 1))
698683   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
699684   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
700685
trunk/src/mame/drivers/lemmings.c
r18510r18511
112112
113113static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, lemmings_state )
114114   AM_RANGE(0x0000, 0x07ff) AM_RAM
115   AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
115   AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
116116   AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
117117   AM_RANGE(0x1800, 0x1800) AM_READ(soundlatch_byte_r) AM_WRITE(lemmings_sound_ack_w)
118118   AM_RANGE(0x8000, 0xffff) AM_ROM
r18510r18511
241241
242242/******************************************************************************/
243243
244static void sound_irq( device_t *device, int state )
245{
246   lemmings_state *lemmings = device->machine().driver_data<lemmings_state>();
247   lemmings->m_audiocpu->set_input_line(0, state);
248}
249
250static const ym2151_interface ym2151_config =
251{
252   DEVCB_LINE(sound_irq)
253};
254
255244void lemmings_state::machine_start()
256245{
257246
r18510r18511
295284   /* sound hardware */
296285   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
297286
298   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
299   MCFG_SOUND_CONFIG(ym2151_config)
287   MCFG_YM2151_ADD("ymsnd", 32220000/9)
288   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
300289   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
301290   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
302291
trunk/src/mame/drivers/panicr.c
r18510r18511
525525   /* sound hardware */
526526   MCFG_SPEAKER_STANDARD_MONO("mono")
527527
528   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4)   /* 3.579545 MHz */
529   MCFG_SOUND_CONFIG(t5182_ym2151_interface)
528   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/4)   /* 3.579545 MHz */
529   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<t5182_ym2151_irq_handler>))
530530   MCFG_SOUND_ROUTE(0, "mono", 1.0)
531531   MCFG_SOUND_ROUTE(1, "mono", 1.0)
532532
trunk/src/mame/drivers/funkyjet.c
r18510r18511
121121static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, funkyjet_state )
122122   AM_RANGE(0x000000, 0x00ffff) AM_ROM
123123   AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */
124   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
124   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
125125   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
126126   AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */
127127   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
275275
276276/******************************************************************************/
277277
278static void sound_irq( device_t *device, int state )
279{
280   funkyjet_state *driver_state = device->machine().driver_data<funkyjet_state>();
281   driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */
282}
283
284static const ym2151_interface ym2151_config =
285{
286   DEVCB_LINE(sound_irq)
287};
288
289278static const deco16ic_interface funkyjet_deco16ic_tilegen1_intf =
290279{
291280   "screen",
r18510r18511
336325   /* sound hardware */
337326   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
338327
339   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_32_22MHz/9)
340   MCFG_SOUND_CONFIG(ym2151_config)
328   MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz/9)
329   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) // IRQ2
341330   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
342331   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
343332
trunk/src/mame/drivers/cbuster.c
r18510r18511
130130static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, cbuster_state )
131131   AM_RANGE(0x000000, 0x00ffff) AM_ROM
132132   AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w)
133   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ym2", ym2151_r, ym2151_w)
133   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write)
134134   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
135135   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
136136   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
262262
263263/******************************************************************************/
264264
265static void sound_irq(device_t *device, int state)
266{
267   cbuster_state *driver_state = device->machine().driver_data<cbuster_state>();
268   driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */
269}
270
271static const ym2151_interface ym2151_config =
272{
273   DEVCB_LINE(sound_irq)
274};
275
276265static int twocrude_bank_callback( const int bank )
277266{
278267   return ((bank >> 4) & 0x7) * 0x1000;
r18510r18511
355344   MCFG_SOUND_ADD("ym1", YM2203, 32220000/8)
356345   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
357346
358   MCFG_SOUND_ADD("ym2", YM2151, 32220000/9)
359   MCFG_SOUND_CONFIG(ym2151_config)
347   MCFG_YM2151_ADD("ym2", 32220000/9)
348   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ2 */
360349   MCFG_SOUND_ROUTE(0, "mono", 0.45)
361350   MCFG_SOUND_ROUTE(1, "mono", 0.45)
362351
trunk/src/mame/drivers/dietgo.c
r18510r18511
3434static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dietgo_state )
3535   AM_RANGE(0x000000, 0x00ffff) AM_ROM
3636   AM_RANGE(0x100000, 0x100001) AM_NOP      /* YM2203 - this board doesn't have one */
37   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
37   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
3838   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
3939   AM_RANGE(0x130000, 0x130001) AM_NOP      /* This board only has 1 oki chip */
4040   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
160160   GFXDECODE_ENTRY( "gfx2", 0, spritelayout,      512, 16 )   /* Sprites (16x16) */
161161GFXDECODE_END
162162
163static void sound_irq(device_t *device, int state)
164{
165   dietgo_state *driver_state = device->machine().driver_data<dietgo_state>();
166   driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */
167}
168
169static const ym2151_interface ym2151_config =
170{
171   DEVCB_LINE(sound_irq)
172};
173
174
175163static int dietgo_bank_callback(const int bank)
176164{
177165   return ((bank >> 4) & 0x7) * 0x1000;
r18510r18511
235223   /* sound hardware */
236224   MCFG_SPEAKER_STANDARD_MONO("mono")
237225
238   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_32_22MHz/9) /* verified on pcb */
239   MCFG_SOUND_CONFIG(ym2151_config)
226   MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz/9) /* verified on pcb */
227   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
240228   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45)
241229
242230   MCFG_OKIM6295_ADD("oki", XTAL_32_22MHz/32, OKIM6295_PIN7_HIGH) /* verified on pcb */
trunk/src/mame/drivers/mlanding.c
r18510r18511
540540   AM_RANGE(0x0000, 0x3fff) AM_ROM
541541   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
542542   AM_RANGE(0x8000, 0x8fff) AM_RAM
543   AM_RANGE(0x9000, 0x9001) AM_MIRROR(0x00fe) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
543   AM_RANGE(0x9000, 0x9001) AM_MIRROR(0x00fe) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
544544   AM_RANGE(0xa000, 0xa001) AM_WRITE(ml_sound_to_main_w)
545545   AM_RANGE(0xa001, 0xa001) AM_DEVREAD_LEGACY("tc0140syt", tc0140syt_slave_comm_r)
546546
r18510r18511
730730   PORT_BIT( 0x0fff, 0x0000, IPT_AD_STICK_X ) PORT_MINMAX(0x0800,0x07ff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1)
731731INPUT_PORTS_END
732732
733static void irq_handler(device_t *device, int irq)
734{
735   device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
736}
737
738733static const msm5205_interface msm5205_config =
739734{
740735   ml_msm5205_vck,   /* VCK function */
741736   MSM5205_S48_4B      /* 8 kHz */
742737};
743738
744static const ym2151_interface ym2151_config =
745{
746   DEVCB_LINE(irq_handler),
747   DEVCB_DRIVER_MEMBER(mlanding_state,sound_bankswitch_w)
748};
749
750739static const tc0140syt_interface mlanding_tc0140syt_intf =
751740{
752741   "maincpu", "audiocpu"
r18510r18511
803792   /* sound hardware */
804793   MCFG_SPEAKER_STANDARD_MONO("mono")
805794
806   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
807   MCFG_SOUND_CONFIG(ym2151_config)
795   MCFG_YM2151_ADD("ymsnd", 4000000)
796   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
797   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(mlanding_state,sound_bankswitch_w))
808798   MCFG_SOUND_ROUTE(0, "mono", 0.50)
809799   MCFG_SOUND_ROUTE(1, "mono", 0.50)
810800
trunk/src/mame/drivers/nemesis.c
r18510r18511
541541   AM_RANGE(0x8000, 0x87ff) AM_RAM
542542   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
543543   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
544   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
544   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
545545   AM_RANGE(0xd000, 0xd000) AM_DEVWRITE_LEGACY("vlm", vlm5030_data_w)
546546   AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */
547547   AM_RANGE(0xf000, 0xf000) AM_WRITE(salamand_speech_start_w)
r18510r18511
552552   AM_RANGE(0x8000, 0x87ff) AM_RAM
553553   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
554554   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
555   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
555   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
556556   AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */
557557ADDRESS_MAP_END
558558
r18510r18511
14891489// driver_state->audiocpu->set_input_line(0, HOLD_LINE);
14901490}
14911491
1492static const ym2151_interface ym2151_config =
1493{
1494   DEVCB_LINE(sound_irq)
1495};
1496
14971492static const ym3812_interface ym3812_config =
14981493{
14991494   sound_irq
r18510r18511
17551750   MCFG_SOUND_ROUTE(1, "lspeaker", 0.08)
17561751   MCFG_SOUND_ROUTE(1, "rspeaker", 0.08)
17571752
1758   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
1759   MCFG_SOUND_CONFIG(ym2151_config)
1753   MCFG_YM2151_ADD("ymsnd", 3579545)
1754//   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) ... Interrupts _are_ generated, I wonder where they go
17601755   MCFG_SOUND_ROUTE(0, "rspeaker", 1.2) // reversed according to MT #4565
17611756   MCFG_SOUND_ROUTE(1, "lspeaker", 1.2)
17621757MACHINE_CONFIG_END
r18510r18511
17971792   MCFG_SOUND_ROUTE(1, "lspeaker", 0.10)
17981793   MCFG_SOUND_ROUTE(1, "rspeaker", 0.10)
17991794
1800   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
1801   MCFG_SOUND_CONFIG(ym2151_config)
1795   MCFG_YM2151_ADD("ymsnd", 3579545)
1796//   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) ... Interrupts _are_ generated, I wonder where they go
18021797   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
18031798   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
18041799MACHINE_CONFIG_END
r18510r18511
19331928   MCFG_SOUND_ROUTE(1, "lspeaker", 0.10)
19341929   MCFG_SOUND_ROUTE(1, "rspeaker", 0.10)
19351930
1936   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
1937   MCFG_SOUND_CONFIG(ym2151_config)
1931   MCFG_YM2151_ADD("ymsnd", 3579545)
1932//   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) ... Interrupts _are_ generated, I wonder where they go
19381933   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
19391934   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
19401935MACHINE_CONFIG_END
trunk/src/mame/drivers/m107.c
r18510r18511
181181   AM_RANGE(0x00000, 0x1ffff) AM_ROM
182182   AM_RANGE(0xa0000, 0xa3fff) AM_RAM
183183   AM_RANGE(0xa8000, 0xa803f) AM_DEVREADWRITE8_LEGACY("irem", irem_ga20_r, irem_ga20_w, 0x00ff)
184   AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff)
184   AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
185185   AM_RANGE(0xa8044, 0xa8045) AM_READWRITE(m107_soundlatch_r, m107_sound_irq_ack_w)
186186   AM_RANGE(0xa8046, 0xa8047) AM_WRITE(m107_sound_status_w)
187187   AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("soundcpu", 0x1fff0)
r18510r18511
753753
754754/***************************************************************************/
755755
756static void sound_irq(device_t *device, int state)
757{
758   device->machine().device("soundcpu")->execute().set_input_line(NEC_INPUT_LINE_INTP0, state ? ASSERT_LINE : CLEAR_LINE);
759}
760
761static const ym2151_interface ym2151_config =
762{
763   DEVCB_LINE(sound_irq)
764};
765
766/***************************************************************************/
767
768756static const nec_config firebarr_config ={ rtypeleo_decryption_table, };
769757
770758static MACHINE_CONFIG_START( firebarr, m107_state )
r18510r18511
796784   /* sound hardware */
797785   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
798786
799   MCFG_SOUND_ADD("ymsnd", YM2151, 14318180/4)
800   MCFG_SOUND_CONFIG(ym2151_config)
787   MCFG_YM2151_ADD("ymsnd", 14318180/4)
788   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", NEC_INPUT_LINE_INTP0))
801789   MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
802790   MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
803791
trunk/src/mame/drivers/atarisy1.c
r18510r18511
501501static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, atarisy1_state )
502502   AM_RANGE(0x0000, 0x0fff) AM_RAM
503503   AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)
504   AM_RANGE(0x1800, 0x1801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
504   AM_RANGE(0x1800, 0x1801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
505505   AM_RANGE(0x1810, 0x1810) AM_READWRITE_LEGACY(atarigen_6502_sound_r, atarigen_6502_sound_w)
506506   AM_RANGE(0x1820, 0x1820) AM_READ(switch_6502_r)
507507   AM_RANGE(0x1824, 0x1825) AM_WRITE(led_w)
r18510r18511
739739
740740/*************************************
741741 *
742 *  Sound definitions
743 *
744 *************************************/
745
746static const ym2151_interface ym2151_config =
747{
748   DEVCB_LINE(atarigen_ym2151_irq_gen)
749};
750
751
752
753/*************************************
754 *
755742 *  Machine driver
756743 *
757744 *************************************/
r18510r18511
791778   /* sound hardware */
792779   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
793780
794   MCFG_SOUND_ADD("ymsnd", YM2151, ATARI_CLOCK_14MHz/4)
795   MCFG_SOUND_CONFIG(ym2151_config)
781   MCFG_YM2151_ADD("ymsnd", ATARI_CLOCK_14MHz/4)
782   MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen))
796783   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
797784   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
798785
trunk/src/mame/drivers/blockhl.c
r18510r18511
110110   AM_RANGE(0x0000, 0x7fff) AM_ROM
111111   AM_RANGE(0x8000, 0x87ff) AM_RAM
112112   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
113   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
113   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
114114   AM_RANGE(0xe00c, 0xe00d) AM_WRITENOP      /* leftover from missing 007232? */
115115ADDRESS_MAP_END
116116
r18510r18511
239239   /* sound hardware */
240240   MCFG_SPEAKER_STANDARD_MONO("mono")
241241
242   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
242   MCFG_YM2151_ADD("ymsnd", 3579545)
243243   MCFG_SOUND_ROUTE(0, "mono", 0.60)
244244   MCFG_SOUND_ROUTE(1, "mono", 0.60)
245245MACHINE_CONFIG_END
trunk/src/mame/drivers/cave.c
r18510r18511
11491149   AM_RANGE(0x20, 0x20) AM_READ(soundflags_r)                     // Communication
11501150   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r)                  // From Main CPU
11511151   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r)                  //
1152   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)   // YM2151
1152   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)   // YM2151
11531153   AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki1", okim6295_device, write)            // M6295 #0
11541154   AM_RANGE(0x70, 0x70) AM_WRITE(metmqstr_okibank0_w)               // Samples Bank #0
11551155   AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki2", okim6295_device, write)            // M6295 #1
r18510r18511
12411241   AM_RANGE(0x20, 0x20) AM_READ(soundflags_r)                        // Communication
12421242   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r)                     // From Main CPU
12431243   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r)                     //
1244   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)      // YM2151
1244   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)      // YM2151
12451245   AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki1", okim6295_device, read, write)   // M6295 #0
12461246   AM_RANGE(0x70, 0x70) AM_WRITE(sailormn_okibank0_w)                  // Samples Bank #0
12471247   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki2", okim6295_device, read, write)   // M6295 #1
r18510r18511
18271827   device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
18281828}
18291829
1830static const ym2151_interface ym2151_config =
1831{
1832   DEVCB_LINE(irqhandler)
1833};
1834
18351830static const ym2203_interface ym2203_config =
18361831{
18371832   {
r18510r18511
22992294   /* sound hardware */
23002295   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
23012296
2302   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz / 4)
2303   MCFG_SOUND_CONFIG(ym2151_config)
2297   MCFG_YM2151_ADD("ymsnd", XTAL_16MHz / 4)
2298   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
23042299   MCFG_SOUND_ROUTE(0, "lspeaker", 1.20)
23052300   MCFG_SOUND_ROUTE(1, "rspeaker", 1.20)
23062301
r18510r18511
24722467
24732468   /* sound hardware */
24742469   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
2475   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4)
2476   MCFG_SOUND_CONFIG(ym2151_config)
2470   MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4)
2471   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
24772472   MCFG_SOUND_ROUTE(0, "lspeaker", 0.30)
24782473   MCFG_SOUND_ROUTE(1, "rspeaker", 0.30)
24792474
trunk/src/mame/drivers/shadfrce.c
r18510r18511
399399static ADDRESS_MAP_START( shadfrce_sound_map, AS_PROGRAM, 8, shadfrce_state )
400400   AM_RANGE(0x0000, 0xbfff) AM_ROM
401401   AM_RANGE(0xc000, 0xc7ff) AM_RAM
402   AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
402   AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
403403   AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
404404   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
405405   AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w)
r18510r18511
543543
544544/* Machine Driver Bits */
545545
546static void irq_handler(device_t *device, int irq)
547{
548   device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE );
549}
550
551static const ym2151_interface ym2151_config =
552{
553   DEVCB_LINE(irq_handler)
554};
555
556546static MACHINE_CONFIG_START( shadfrce, shadfrce_state )
557547
558548   MCFG_CPU_ADD("maincpu", M68000, CPU_CLOCK)         /* verified on pcb */
r18510r18511
574564   /* sound hardware */
575565   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
576566
577   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)      /* verified on pcb */
578   MCFG_SOUND_CONFIG(ym2151_config)
567   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)      /* verified on pcb */
568   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
579569   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
580570   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
581571
trunk/src/mame/drivers/ajax.c
r18510r18511
5555   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("k007232_2", k007232_r, k007232_w)      /* 007232 registers (chip 2) */
5656   AM_RANGE(0xb80c, 0xb80c) AM_WRITE(k007232_extvol_w)         /* extra volume, goes to the 007232 w/ A11 */
5757                                                /* selecting a different latch for the external port */
58   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)      /* YM2151 */
58   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)      /* YM2151 */
5959   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)            /* soundlatch_byte_r */
6060ADDRESS_MAP_END
6161
r18510r18511
241241   /* sound hardware */
242242   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
243243
244   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
244   MCFG_YM2151_ADD("ymsnd", 3579545)
245245   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
246246   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
247247
trunk/src/mame/drivers/cabal.c
r18510r18511
183183   AM_RANGE(0x4002, 0x4002) AM_WRITE_LEGACY(seibu_rst10_ack_w)
184184   AM_RANGE(0x4003, 0x4003) AM_WRITE_LEGACY(seibu_rst18_ack_w)
185185   AM_RANGE(0x4005, 0x4006) AM_DEVWRITE_LEGACY("adpcm1", seibu_adpcm_adr_w)
186   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
186   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
187187   AM_RANGE(0x4010, 0x4011) AM_READ_LEGACY(seibu_soundlatch_r)
188188   AM_RANGE(0x4012, 0x4012) AM_READ_LEGACY(seibu_main_data_pending_r)
189189   AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
r18510r18511
205205   AM_RANGE(0x4008, 0x4008) AM_READ(cabalbl_snd2_r)
206206   AM_RANGE(0x400a, 0x400a) AM_READ(cabalbl_snd1_r)
207207   AM_RANGE(0x400c, 0x400c) AM_WRITE(soundlatch2_byte_w)
208   AM_RANGE(0x400e, 0x400f) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
208   AM_RANGE(0x400e, 0x400f) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
209209   AM_RANGE(0x6000, 0x6000) AM_WRITENOP  /* ??? */
210210   AM_RANGE(0x8000, 0xffff) AM_ROM
211211ADDRESS_MAP_END
r18510r18511
465465GFXDECODE_END
466466
467467
468static void irqhandler(device_t *device, int irq)
469{
470   device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
471}
472
473static const ym2151_interface cabalbl_ym2151_interface =
474{
475   DEVCB_LINE(irqhandler)
476};
477
478468static const msm5205_interface msm5205_interface_1 =
479469{
480470   0,
r18510r18511
514504   /* sound hardware */
515505   MCFG_SPEAKER_STANDARD_MONO("mono")
516506
517   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
518   MCFG_SOUND_CONFIG(seibu_ym2151_interface)
507   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */
508   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<seibu_ym2151_irqhandler>))
519509   MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80)
520510
521511   MCFG_SOUND_ADD("adpcm1", SEIBU_ADPCM, 8000) /* it should use the msm5205 */
r18510r18511
569559   /* sound hardware */
570560   MCFG_SPEAKER_STANDARD_MONO("mono")
571561
572   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
573   MCFG_SOUND_CONFIG(cabalbl_ym2151_interface)
562   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */
563   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
574564   MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80)
575565
576566   MCFG_SOUND_ADD("msm1", MSM5205, XTAL_12MHz/32) /* verified on pcb (no resonator) */
trunk/src/mame/drivers/taito_x.c
r18510r18511
513513   AM_RANGE(0x0000, 0x3fff) AM_ROM
514514   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2")
515515   AM_RANGE(0xc000, 0xdfff) AM_RAM
516   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
516   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
517517   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
518518   AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
519519   AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
r18510r18511
803803   irqhandler
804804};
805805
806static const ym2151_interface ym2151_config =
807{
808   DEVCB_LINE(irqhandler)
809};
810
811806MACHINE_START_MEMBER(taitox_state,taitox)
812807{
813808
r18510r18511
899894   /* sound hardware */
900895   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
901896
902   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4)   /* verified on pcb */
903   MCFG_SOUND_CONFIG(ym2151_config)
897   MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4)   /* verified on pcb */
898   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
904899   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
905900   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
906901
trunk/src/mame/drivers/tumblep.c
r18510r18511
130130static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tumblep_state )
131131   AM_RANGE(0x000000, 0x00ffff) AM_ROM
132132   AM_RANGE(0x100000, 0x100001) AM_NOP   /* YM2203 - this board doesn't have one */
133   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
133   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
134134   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write)
135135   AM_RANGE(0x130000, 0x130001) AM_NOP   /* This board only has 1 oki chip */
136136   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
272272
273273/***************************************************************************/
274274
275static void sound_irq(device_t *device, int state)
276{
277   tumblep_state *driver_state = device->machine().driver_data<tumblep_state>();
278   driver_state->m_audiocpu->set_input_line(1, state); /* IRQ 2 */
279}
280
281static const ym2151_interface ym2151_config =
282{
283   DEVCB_LINE(sound_irq)
284};
285
286275static const deco16ic_interface tumblep_deco16ic_tilegen1_intf =
287276{
288277   "screen",
r18510r18511
331320   /* sound hardware */
332321   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
333322
334   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
335   MCFG_SOUND_CONFIG(ym2151_config)
323   MCFG_YM2151_ADD("ymsnd", 32220000/9)
324   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ 2 */
336325   MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
337326   MCFG_SOUND_ROUTE(1, "rspeaker", 0.45)
338327
trunk/src/mame/drivers/rastan.c
r18510r18511
230230   AM_RANGE(0x0000, 0x3fff) AM_ROM
231231   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
232232   AM_RANGE(0x8000, 0x8fff) AM_RAM
233   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
233   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
234234   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
235235   AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
236236   AM_RANGE(0xb000, 0xb000) AM_WRITE(rastan_msm5205_address_w)
r18510r18511
338338
339339
340340
341/* handler called by the YM2151 emulator when the internal timers cause an IRQ */
342static void irqhandler( device_t *device, int irq )
343{
344   rastan_state *state = device->machine().driver_data<rastan_state>();
345   state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
346}
347
348static const ym2151_interface ym2151_config =
349{
350   DEVCB_LINE(irqhandler),
351   DEVCB_DRIVER_MEMBER(rastan_state,rastan_bankswitch_w)
352};
353
354341static const msm5205_interface msm5205_config =
355342{
356343   rastan_msm5205_vck,   /* VCK function */
r18510r18511
432419   /* sound hardware */
433420   MCFG_SPEAKER_STANDARD_MONO("mono")
434421
435   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4)   /* verified on pcb */
436   MCFG_SOUND_CONFIG(ym2151_config)
422   MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4)   /* verified on pcb */
423   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
424   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(rastan_state,rastan_bankswitch_w))
437425   MCFG_SOUND_ROUTE(0, "mono", 0.50)
438426   MCFG_SOUND_ROUTE(1, "mono", 0.50)
439427
trunk/src/mame/drivers/namcos2.c
r18510r18511
736736
737737static ADDRESS_MAP_START( sound_default_am, AS_PROGRAM, 8, namcos2_state )
738738   AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank6") /* banked */
739   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
739   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
740740   AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE_LEGACY("c140", c140_r,c140_w)
741741   AM_RANGE(0x7000, 0x77ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram")
742742   AM_RANGE(0x7800, 0x7fff) AM_READWRITE(dpram_byte_r,dpram_byte_w) /* mirror */
r18510r18511
16451645   MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
16461646   MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
16471647
1648   MCFG_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1648   MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */
16491649   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
16501650   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
16511651MACHINE_CONFIG_END
r18510r18511
17191719   MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
17201720   MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
17211721
1722   MCFG_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1722   MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */
17231723   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
17241724   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
17251725MACHINE_CONFIG_END
r18510r18511
17701770   MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
17711771   MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
17721772
1773   MCFG_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1773   MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */
17741774   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
17751775   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
17761776MACHINE_CONFIG_END
r18510r18511
18191819   MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
18201820   MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
18211821
1822   MCFG_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1822   MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */
18231823   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
18241824   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
18251825MACHINE_CONFIG_END
r18510r18511
18701870   MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
18711871   MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
18721872
1873   MCFG_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1873   MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */
18741874   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
18751875   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
18761876MACHINE_CONFIG_END
r18510r18511
19191919   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
19201920   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
19211921
1922   MCFG_SOUND_ADD("ymsnd", YM2151, YM2151_SOUND_CLOCK) /* 3.579545MHz */
1922   MCFG_YM2151_ADD("ymsnd", YM2151_SOUND_CLOCK) /* 3.579545MHz */
19231923   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
19241924   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
19251925MACHINE_CONFIG_END
trunk/src/mame/drivers/exzisus.c
r18510r18511
175175static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, exzisus_state )
176176   AM_RANGE(0x0000, 0x7fff) AM_ROM
177177   AM_RANGE(0x8000, 0x8fff) AM_RAM
178   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
178   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
179179   AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
180180   AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
181181ADDRESS_MAP_END
r18510r18511
252252
253253
254254
255static void irqhandler(device_t *device, int irq)
256{
257   device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
258}
259
260static const ym2151_interface ym2151_config =
261{
262   DEVCB_LINE(irqhandler)
263};
264
265
266255static const tc0140syt_interface exzisus_tc0140syt_intf =
267256{
268257   "cpub", "audiocpu"
r18510r18511
305294   /* sound hardware */
306295   MCFG_SPEAKER_STANDARD_MONO("mono")
307296
308   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
309   MCFG_SOUND_CONFIG(ym2151_config)
297   MCFG_YM2151_ADD("ymsnd", 4000000)
298   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
310299   MCFG_SOUND_ROUTE(0, "mono", 0.50)
311300   MCFG_SOUND_ROUTE(1, "mono", 0.50)
312301
trunk/src/mame/drivers/asuka.c
r18510r18511
393393   AM_RANGE(0x0000, 0x3fff) AM_ROM
394394   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
395395   AM_RANGE(0x8000, 0x8fff) AM_RAM
396   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
396   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
397397//  AM_RANGE(0x9002, 0x9100) AM_READNOP
398398   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
399399   AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
r18510r18511
407407   AM_RANGE(0x0000, 0x3fff) AM_ROM
408408   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
409409   AM_RANGE(0x8000, 0x8fff) AM_RAM
410   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
410   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
411411   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
412412   AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
413413ADDRESS_MAP_END
r18510r18511
777777};
778778
779779
780static const ym2151_interface ym2151_config =
781{
782   DEVCB_LINE(irq_handler),
783   DEVCB_DRIVER_MEMBER(asuka_state,sound_bankswitch_2151_w)
784};
785
786780static const msm5205_interface msm5205_config =
787781{
788782   asuka_msm5205_vck,   /* VCK function */
r18510r18511
965959   /* sound hardware */
966960   MCFG_SPEAKER_STANDARD_MONO("mono")
967961
968   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_16MHz/4) /* verified on pcb */
969   MCFG_SOUND_CONFIG(ym2151_config)
962   MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) /* verified on pcb */
963   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
964   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w))
970965   MCFG_SOUND_ROUTE(0, "mono", 0.50)
971966   MCFG_SOUND_ROUTE(1, "mono", 0.50)
972967
r18510r18511
10151010   /* sound hardware */
10161011   MCFG_SPEAKER_STANDARD_MONO("mono")
10171012
1018   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_8MHz/2)   /* verified on pcb */
1019   MCFG_SOUND_CONFIG(ym2151_config)
1013   MCFG_YM2151_ADD("ymsnd", XTAL_8MHz/2)   /* verified on pcb */
1014   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
1015   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w))
10201016   MCFG_SOUND_ROUTE(0, "mono", 0.50)
10211017   MCFG_SOUND_ROUTE(1, "mono", 0.50)
10221018
r18510r18511
10571053   /* sound hardware */
10581054   MCFG_SPEAKER_STANDARD_MONO("mono")
10591055
1060   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
1061   MCFG_SOUND_CONFIG(ym2151_config)
1056   MCFG_YM2151_ADD("ymsnd", 4000000)
1057   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
1058   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w))
10621059   MCFG_SOUND_ROUTE(0, "mono", 0.50)
10631060   MCFG_SOUND_ROUTE(1, "mono", 0.50)
10641061
r18510r18511
11031100   /* sound hardware */
11041101   MCFG_SPEAKER_STANDARD_MONO("mono")
11051102
1106   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
1107   MCFG_SOUND_CONFIG(ym2151_config)
1103   MCFG_YM2151_ADD("ymsnd", 4000000)
1104   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
1105   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w))
11081106   MCFG_SOUND_ROUTE(0, "mono", 0.50)
11091107   MCFG_SOUND_ROUTE(1, "mono", 0.50)
11101108
r18510r18511
11451143   /* sound hardware */
11461144   MCFG_SPEAKER_STANDARD_MONO("mono")
11471145
1148   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
1149   MCFG_SOUND_CONFIG(ym2151_config)
1146   MCFG_YM2151_ADD("ymsnd", 4000000)
1147   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
1148   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(asuka_state,sound_bankswitch_2151_w))
11501149   MCFG_SOUND_ROUTE(0, "mono", 0.50)
11511150   MCFG_SOUND_ROUTE(1, "mono", 0.50)
11521151
trunk/src/mame/drivers/tecmo16.c
r18510r18511
9595   AM_RANGE(0x0000, 0xefff) AM_ROM
9696   AM_RANGE(0xf000, 0xfbff) AM_RAM   /* Sound RAM */
9797   AM_RANGE(0xfc00, 0xfc00) AM_DEVREADWRITE("oki", okim6295_device, read, write)
98   AM_RANGE(0xfc04, 0xfc05) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
98   AM_RANGE(0xfc04, 0xfc05) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
9999   AM_RANGE(0xfc08, 0xfc08) AM_READ(soundlatch_byte_r)
100100   AM_RANGE(0xfc0c, 0xfc0c) AM_NOP
101101   AM_RANGE(0xfffe, 0xffff) AM_RAM
r18510r18511
361361
362362/******************************************************************************/
363363
364static void irqhandler(device_t *device, int irq)
365{
366   device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
367}
368
369static const ym2151_interface ym2151_config =
370{
371   DEVCB_LINE(irqhandler)
372};
373
374/******************************************************************************/
375
376364static MACHINE_CONFIG_START( fstarfrc, tecmo16_state )
377365
378366   /* basic machine hardware */
r18510r18511
400388   /* sound hardware */
401389   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
402390
403   MCFG_SOUND_ADD("ymsnd", YM2151, 8000000/2)
404   MCFG_SOUND_CONFIG(ym2151_config)
391   MCFG_YM2151_ADD("ymsnd", 8000000/2)
392   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
405393   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
406394   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
407395
trunk/src/mame/drivers/nmk16.c
r18510r18511
46854685   AM_RANGE(0x0000, 0xefff) AM_ROM
46864686   AM_RANGE(0xf000, 0xf7ff) AM_RAM                           // RAM
46874687   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r)               // From Main CPU
4688   AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)   // YM2151
4688   AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)   // YM2151
46894689   AM_RANGE(0xf80a, 0xf80a) AM_DEVREADWRITE("oki1", okim6295_device, read, write)      // M6295
46904690ADDRESS_MAP_END
46914691
r18510r18511
47994799
48004800***************************************************************************/
48014801
4802static void irq_handler(device_t *device, int irq)
4803{
4804   device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
4805}
4806
4807static const ym2151_interface afega_ym2151_intf =
4808{
4809   DEVCB_LINE(irq_handler)
4810};
4811
4812
48134802static MACHINE_CONFIG_START( stagger1, nmk16_state )
48144803
48154804   /* basic machine hardware */
r18510r18511
48374826   /* sound hardware */
48384827   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
48394828
4840   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_4MHz) /* verified on pcb */
4841   MCFG_SOUND_CONFIG(afega_ym2151_intf)
4829   MCFG_YM2151_ADD("ymsnd", XTAL_4MHz) /* verified on pcb */
4830   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
48424831   MCFG_SOUND_ROUTE(0, "lspeaker", 0.30)
48434832   MCFG_SOUND_ROUTE(1, "rspeaker", 0.30)
48444833
trunk/src/mame/drivers/sidearms.c
r18510r18511
170170
171171static ADDRESS_MAP_START( whizz_io_map, AS_IO, 8, sidearms_state )
172172   ADDRESS_MAP_GLOBAL_MASK(0xff)
173   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
173   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
174174   AM_RANGE(0x40, 0x40) AM_WRITENOP
175175   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r)
176176ADDRESS_MAP_END
r18510r18511
632632GFXDECODE_END
633633
634634/* handler called by the 2203 emulator when the internal timers cause an IRQ */
635static void irqhandler(device_t *device, int irq)
635WRITE_LINE_MEMBER( sidearms_state::irqhandler )
636636{
637   device->machine().device("audiocpu")->execute().set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE);
637   subdevice("audiocpu")->execute().set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
638638}
639639
640640static const ym2203_interface ym2203_config =
r18510r18511
644644      AY8910_DEFAULT_LOADS,
645645      DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
646646   },
647   DEVCB_LINE(irqhandler)
647   DEVCB_LINE_MEMBER(sidearms_state, irqhandler)
648648};
649649
650static const ym2151_interface whizz_ym2151_interface =
651{
652   DEVCB_LINE(irqhandler)
653};
654
655650static MACHINE_CONFIG_START( sidearms, sidearms_state )
656651
657652   /* basic machine hardware */
r18510r18511
769764   /* sound hardware */
770765   MCFG_SPEAKER_STANDARD_MONO("mono")
771766
772   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
773   MCFG_SOUND_CONFIG(whizz_ym2151_interface)
767   MCFG_YM2151_ADD("ymsnd", 4000000)
768   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
774769   MCFG_SOUND_ROUTE(0, "mono", 1.0)
775770   MCFG_SOUND_ROUTE(1, "mono", 1.0)
776771MACHINE_CONFIG_END
trunk/src/mame/drivers/blockout.c
r18510r18511
145145static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, blockout_state )
146146   AM_RANGE(0x0000, 0x7fff) AM_ROM
147147   AM_RANGE(0x8000, 0x87ff) AM_RAM
148   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
148   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
149149   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
150150   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
151151ADDRESS_MAP_END
r18510r18511
260260 *************************************/
261261
262262/* handler called by the 2151 emulator when the internal timers cause an IRQ */
263static void blockout_irq_handler(device_t *device, int irq)
263WRITE_LINE_MEMBER(blockout_state::irq_handler)
264264{
265   blockout_state *state = device->machine().driver_data<blockout_state>();
266   state->m_audiocpu->set_input_line_and_vector(0, irq ? ASSERT_LINE : CLEAR_LINE, 0xff);
265   m_audiocpu->set_input_line_and_vector(0, state ? ASSERT_LINE : CLEAR_LINE, 0xff);
267266}
268267
269static const ym2151_interface ym2151_config =
270{
271   DEVCB_LINE(blockout_irq_handler)
272};
273268
274
275269/*************************************
276270 *
277271 *  Machine driver
r18510r18511
329323   /* sound hardware */
330324   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
331325
332   MCFG_SOUND_ADD("ymsnd", YM2151, AUDIO_CLOCK)
333   MCFG_SOUND_CONFIG(ym2151_config)
326   MCFG_YM2151_ADD("ymsnd", AUDIO_CLOCK)
327   MCFG_YM2151_IRQ_HANDLER(WRITELINE(blockout_state,irq_handler))
334328   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
335329   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
336330
trunk/src/mame/drivers/twin16.c
r18510r18511
229229   AM_RANGE(0x9000, 0x9000) AM_WRITE(twin16_upd_reset_w)
230230   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
231231   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("konami", k007232_r, k007232_w)
232   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
232   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
233233   AM_RANGE(0xd000, 0xd000) AM_DEVWRITE_LEGACY("upd", upd7759_port_w)
234234   AM_RANGE(0xe000, 0xe000) AM_WRITE(twin16_upd_start_w)
235235   AM_RANGE(0xf000, 0xf000) AM_READ(twin16_upd_busy_r)   // miaj writes 0 to it
r18510r18511
754754   // sound hardware
755755   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
756756
757   MCFG_SOUND_ADD("ymsnd", YM2151, 7159160/2)
757   MCFG_YM2151_ADD("ymsnd", 7159160/2)
758758   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
759759   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
760760
r18510r18511
808808   /* sound hardware */
809809   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
810810
811   MCFG_SOUND_ADD("ymsnd", YM2151, 7159160/2)
811   MCFG_YM2151_ADD("ymsnd", 7159160/2)
812812   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
813813   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
814814
trunk/src/mame/drivers/segas24.c
r18510r18511
10151015   irq_vsynctime = machine().time();
10161016}
10171017
1018static void irq_ym(device_t *device, int irq)
1018WRITE_LINE_MEMBER(segas24_state::irq_ym)
10191019{
1020   segas24_state *state = device->machine().driver_data<segas24_state>();
1021   state->irq_yms = irq;
1022   device->machine().device("maincpu")->execute().set_input_line(IRQ_YM2151+1, state->irq_yms && (state->irq_allow0 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
1023   device->machine().device("subcpu")->execute().set_input_line(IRQ_YM2151+1, state->irq_yms && (state->irq_allow1 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
1020   irq_yms = state;
1021   subdevice("maincpu")->execute().set_input_line(IRQ_YM2151+1, irq_yms && (irq_allow0 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
1022   subdevice("subcpu")->execute().set_input_line(IRQ_YM2151+1, irq_yms && (irq_allow1 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
10241023}
10251024
10261025
r18510r18511
11851184   AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer, read, write)
11861185   AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite, read, write)
11871186   AM_RANGE(0x800000, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(sys16_io_r, sys16_io_w)
1188   AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff)
1187   AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
11891188   AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w)
11901189   AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w)
11911190   AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w)
r18510r18511
12261225   AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer, read, write)
12271226   AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite, read, write)
12281227   AM_RANGE(0x800000, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(sys16_io_r, sys16_io_w)
1229   AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff)
1228   AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
12301229   AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w)
12311230   AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w)
12321231   AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w)
r18510r18511
19181917   PORT_DIPSETTING(    0x00, "0.80 sec" )
19191918INPUT_PORTS_END
19201919
1921/*************************************
1922 *
1923 *  Sound definitions
1924 *
1925 *************************************/
19261920
1927static const ym2151_interface ym2151_config =
1928{
1929   DEVCB_LINE(irq_ym)
1930};
1931
1932
1933
19341921/*************************************
19351922 *
19361923 *  Generic machine drivers
r18510r18511
19681955
19691956   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
19701957
1971   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
1972   MCFG_SOUND_CONFIG(ym2151_config)
1958   MCFG_YM2151_ADD("ymsnd", 4000000)
1959   MCFG_YM2151_IRQ_HANDLER(WRITELINE(segas24_state,irq_ym))
19731960   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
19741961   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
19751962
trunk/src/mame/drivers/overdriv.c
r18510r18511
204204ADDRESS_MAP_END
205205
206206static ADDRESS_MAP_START( overdriv_sound_map, AS_PROGRAM, 8, overdriv_state )
207   AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
207   AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
208208   AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE_LEGACY("k053260_1", k053260_r, k053260_w)
209209   AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE_LEGACY("k053260_2", k053260_r, k053260_w)
210210   AM_RANGE(0x0800, 0x0fff) AM_RAM
r18510r18511
370370   /* sound hardware */
371371   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
372372
373   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
373   MCFG_YM2151_ADD("ymsnd", 3579545)
374374   MCFG_SOUND_ROUTE(0, "lspeaker", 0.5)
375375   MCFG_SOUND_ROUTE(1, "rspeaker", 0.5)
376376
trunk/src/mame/drivers/silkroad.c
r18510r18511
162162   AM_RANGE(0xc00000, 0xc00003) AM_READ_PORT("INPUTS")
163163   AM_RANGE(0xc00004, 0xc00007) AM_READ_PORT("DSW")
164164   AM_RANGE(0xc00024, 0xc00027) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff0000)
165   AM_RANGE(0xc00028, 0xc0002f) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r, ym2151_w, 0x00ff0000)
165   AM_RANGE(0xc00028, 0xc0002f) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff0000)
166166   AM_RANGE(0xc00030, 0xc00033) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff0000)
167167   AM_RANGE(0xc00034, 0xc00037) AM_WRITE(silk_6295_bank_w)
168168   AM_RANGE(0xc00038, 0xc0003b) AM_WRITE(silk_coin_counter_w)
r18510r18511
300300   /* sound hardware */
301301   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
302302
303   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
303   MCFG_YM2151_ADD("ymsnd", 3579545)
304304   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
305305   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
306306
trunk/src/mame/drivers/shisen.c
r18510r18511
6666
6767static ADDRESS_MAP_START( shisen_sound_io_map, AS_IO, 8, shisen_state )
6868   ADDRESS_MAP_GLOBAL_MASK(0xff)
69   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
69   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
7070   AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r)
7171   AM_RANGE(0x80, 0x81) AM_DEVWRITE_LEGACY("m72", shisen_sample_addr_w)
7272   AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w)
r18510r18511
202202
203203
204204
205static const ym2151_interface ym2151_config =
206{
207   DEVCB_LINE(m72_ym2151_irq_handler)
208};
209
210
211
212205static MACHINE_CONFIG_START( shisen, shisen_state )
213206
214207   /* basic machine hardware */
r18510r18511
239232
240233   MCFG_SOUND_ADD("m72", M72, 0)
241234
242   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
243   MCFG_SOUND_CONFIG(ym2151_config)
235   MCFG_YM2151_ADD("ymsnd", 3579545)
236   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
244237   MCFG_SOUND_ROUTE(0, "lspeaker", 0.5)
245238   MCFG_SOUND_ROUTE(1, "rspeaker", 0.5)
246239
trunk/src/mame/drivers/f-32.c
r18510r18511
7575
7676static ADDRESS_MAP_START( mosaicf2_io, AS_IO, 32, mosaicf2_state )
7777   AM_RANGE(0x4000, 0x4003) AM_DEVREAD8("oki", okim6295_device, read, 0x000000ff)
78   AM_RANGE(0x4810, 0x4813) AM_DEVREAD8_LEGACY("ymsnd", ym2151_status_port_r, 0x000000ff)
78   AM_RANGE(0x4810, 0x4813) AM_DEVREAD8("ymsnd", ym2151_device, status_r, 0x000000ff)
7979   AM_RANGE(0x5000, 0x5003) AM_READ_PORT("P1")
8080   AM_RANGE(0x5200, 0x5203) AM_READ(f32_input_port_1_r)
8181   AM_RANGE(0x5400, 0x5403) AM_READ_PORT("EEPROMIN")
8282   AM_RANGE(0x6000, 0x6003) AM_DEVWRITE8("oki", okim6295_device, write, 0x000000ff)
83   AM_RANGE(0x6800, 0x6803) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_data_port_w, 0x000000ff)
84   AM_RANGE(0x6810, 0x6813) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_register_port_w, 0x000000ff)
83   AM_RANGE(0x6800, 0x6803) AM_DEVWRITE8("ymsnd", ym2151_device, data_w, 0x000000ff)
84   AM_RANGE(0x6810, 0x6813) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x000000ff)
8585   AM_RANGE(0x7000, 0x7003) AM_WRITE_PORT("EEPROMCLK")
8686   AM_RANGE(0x7200, 0x7203) AM_WRITE_PORT("EEPROMCS")
8787   AM_RANGE(0x7400, 0x7403) AM_WRITE_PORT("EEPROMOUT")
r18510r18511
155155   /* sound hardware */
156156   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
157157
158   MCFG_SOUND_ADD("ymsnd", YM2151, 14318180/4)
158   MCFG_YM2151_ADD("ymsnd", 14318180/4)
159159   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
160160   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
161161
trunk/src/mame/drivers/gradius3.c
r18510r18511
192192   AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_bank_w)            /* 007232 bankswitch */
193193   AM_RANGE(0xf010, 0xf010) AM_READ(soundlatch_byte_r)
194194   AM_RANGE(0xf020, 0xf02d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
195   AM_RANGE(0xf030, 0xf031) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
195   AM_RANGE(0xf030, 0xf031) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
196196   AM_RANGE(0xf800, 0xffff) AM_RAM
197197ADDRESS_MAP_END
198198
r18510r18511
348348   /* sound hardware */
349349   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
350350
351   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
351   MCFG_YM2151_ADD("ymsnd", 3579545)
352352   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
353353   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
354354
trunk/src/mame/drivers/parodius.c
r18510r18511
158158static ADDRESS_MAP_START( parodius_sound_map, AS_PROGRAM, 8, parodius_state )
159159   AM_RANGE(0x0000, 0xefff) AM_ROM
160160   AM_RANGE(0xf000, 0xf7ff) AM_RAM
161   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
161   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
162162   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
163163   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r,k053260_w)
164164ADDRESS_MAP_END
r18510r18511
313313   /* sound hardware */
314314   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
315315
316   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
316   MCFG_YM2151_ADD("ymsnd", 3579545)
317317   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
318318   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
319319
trunk/src/mame/drivers/rockrage.c
r18510r18511
120120   AM_RANGE(0x3000, 0x3000) AM_READ(rockrage_VLM5030_busy_r)         /* VLM5030 */
121121   AM_RANGE(0x4000, 0x4000) AM_WRITE(rockrage_speech_w)            /* VLM5030 */
122122   AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_byte_r)                        /* soundlatch_byte_r */
123   AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)         /* YM 2151 */
123   AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)         /* YM 2151 */
124124   AM_RANGE(0x7000, 0x77ff) AM_RAM                                    /* RAM */
125125   AM_RANGE(0x8000, 0xffff) AM_ROM                                    /* ROM */
126126ADDRESS_MAP_END
r18510r18511
286286   /* sound hardware */
287287   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
288288
289   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
289   MCFG_YM2151_ADD("ymsnd", 3579545)
290290   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
291291   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
292292
trunk/src/mame/drivers/bigstrkb.c
r18510r18511
213213
214214
215215   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
216//  MCFG_SOUND_ADD("ymsnd", YM2151, ym2151_config)
216//  MCFG_YM2151_ADD("ymsnd", ym2151_config)
217217
218218   MCFG_OKIM6295_ADD("oki1", 4000000, OKIM6295_PIN7_HIGH)
219219   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30)
trunk/src/mame/drivers/mugsmash.c
r18510r18511
194194static ADDRESS_MAP_START( mugsmash_sound_map, AS_PROGRAM, 8, mugsmash_state )
195195   AM_RANGE(0x0000, 0x7fff) AM_ROM
196196   AM_RANGE(0x8000, 0x87ff) AM_RAM
197   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
197   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
198198   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
199199   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
200200ADDRESS_MAP_END
r18510r18511
388388   GFXDECODE_ENTRY( "gfx2", 0, mugsmash2_layout,  0x100, 256  ) /* bg tiles */
389389GFXDECODE_END
390390
391static void irq_handler(device_t *device, int irq)
392{
393   mugsmash_state *state = device->machine().driver_data<mugsmash_state>();
394   state->m_audiocpu->set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE );
395}
396
397static const ym2151_interface ym2151_config =
398{
399   DEVCB_LINE(irq_handler)
400};
401
402391void mugsmash_state::machine_start()
403392{
404393
r18510r18511
429418
430419   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
431420
432   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
433   MCFG_SOUND_CONFIG(ym2151_config)
421   MCFG_YM2151_ADD("ymsnd", 3579545)
422   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
434423   MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)   /* music */
435424   MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
436425
trunk/src/mame/drivers/contra.c
r18510r18511
9797
9898static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, contra_state )
9999   AM_RANGE(0x0000, 0x0000) AM_READ(soundlatch_byte_r)
100   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
100   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
101101   AM_RANGE(0x4000, 0x4000) AM_WRITENOP /* read triggers irq reset and latch read (in the hardware only). */
102102   AM_RANGE(0x6000, 0x67ff) AM_RAM
103103   AM_RANGE(0x8000, 0xffff) AM_ROM
r18510r18511
217217   /* sound hardware */
218218   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
219219
220   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
220   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
221221   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
222222   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
223223MACHINE_CONFIG_END
trunk/src/mame/drivers/vendetta.c
r18510r18511
283283static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, vendetta_state )
284284   AM_RANGE(0x0000, 0xefff) AM_ROM
285285   AM_RANGE(0xf000, 0xf7ff) AM_RAM
286   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
286   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
287287   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w)
288288   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
289289ADDRESS_MAP_END
r18510r18511
531531   /* sound hardware */
532532   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
533533
534   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)   /* verified with PCB */
534   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)   /* verified with PCB */
535535   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
536536   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
537537
trunk/src/mame/drivers/segas16b.c
r18510r18511
17681768static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segas16b_state )
17691769   ADDRESS_MAP_UNMAP_HIGH
17701770   ADDRESS_MAP_GLOBAL_MASK(0xff)
1771   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE_LEGACY("ym2151", ym2151_r, ym2151_w)
1771   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
17721772   AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_WRITE(upd7759_control_w)
17731773   AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_READ(upd7759_status_r) AM_DEVWRITE_LEGACY("upd", upd7759_port_w)
17741774   AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(soundlatch_byte_r)
r18510r18511
33093309   // sound hardware
33103310   MCFG_SPEAKER_STANDARD_MONO("mono")
33113311
3312   MCFG_SOUND_ADD("ym2151", YM2151, MASTER_CLOCK_8MHz/2)
3312   MCFG_YM2151_ADD("ym2151", MASTER_CLOCK_8MHz/2)
33133313   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.43)
33143314
33153315   MCFG_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
trunk/src/mame/drivers/deco32.c
r18510r18511
10041004
10051005static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, deco32_state )
10061006   AM_RANGE(0x000000, 0x00ffff) AM_ROM
1007   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1007   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
10081008   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
10091009   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
10101010   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
r18510r18511
10241024static ADDRESS_MAP_START( nslasher_sound, AS_PROGRAM, 8, deco32_state )
10251025   AM_RANGE(0x0000, 0x7fff) AM_ROM
10261026   AM_RANGE(0x8000, 0x87ff) AM_RAM
1027   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1027   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
10281028   AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
10291029   AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
10301030   AM_RANGE(0xd000, 0xd000) AM_READ(latch_r)
r18510r18511
16211621
16221622/**********************************************************************************/
16231623
1624static void sound_irq(device_t *device, int state)
1624WRITE_LINE_MEMBER(deco32_state::sound_irq_nslasher)
16251625{
1626   device->machine().device("audiocpu")->execute().set_input_line(1, state); /* IRQ 2 */
1627}
1628
1629static void sound_irq_nslasher(device_t *device, int state)
1630{
1631   deco32_state *drvstate = device->machine().driver_data<deco32_state>();
16321626   /* bit 0 of nslasher_sound_irq specifies IRQ from sound chip */
16331627   if (state)
1634      drvstate->m_nslasher_sound_irq |= 0x01;
1628      m_nslasher_sound_irq |= 0x01;
16351629   else
1636      drvstate->m_nslasher_sound_irq &= ~0x01;
1637   device->machine().device("audiocpu")->execute().set_input_line(0, (drvstate->m_nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
1630      m_nslasher_sound_irq &= ~0x01;
1631   subdevice("audiocpu")->execute().set_input_line(0, (m_nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
16381632}
16391633
16401634WRITE8_MEMBER(deco32_state::sound_bankswitch_w)
r18510r18511
16451639   oki2->set_bank_base(((data >> 1)& 1) * 0x40000);
16461640}
16471641
1648static const ym2151_interface ym2151_config =
1649{
1650   DEVCB_LINE(sound_irq),
1651   DEVCB_DRIVER_MEMBER(deco32_state,sound_bankswitch_w)
1652};
1653
1654static const ym2151_interface ym2151_interface_nslasher =
1655{
1656   DEVCB_LINE(sound_irq_nslasher),
1657   DEVCB_DRIVER_MEMBER(deco32_state,sound_bankswitch_w)
1658};
1659
16601642static const eeprom_interface eeprom_interface_tattass =
16611643{
16621644   10,            // address bits 10  ==> } 1024 byte eprom
r18510r18511
17671749   /* sound hardware */
17681750   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
17691751
1770   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_32_22MHz/9) /* verified on pcb */
1771   MCFG_SOUND_CONFIG(ym2151_config)
1752   MCFG_YM2151_ADD("ymsnd", XTAL_32_22MHz/9) /* verified on pcb */
1753   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
1754   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w))
17721755   MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
17731756   MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
17741757
r18510r18511
18151798   /* sound hardware */
18161799   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
18171800
1818   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
1819   MCFG_SOUND_CONFIG(ym2151_config)
1801   MCFG_YM2151_ADD("ymsnd", 32220000/9)
1802   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
1803   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w))
18201804   MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
18211805   MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
18221806
r18510r18511
18611845   /* sound hardware */
18621846   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
18631847
1864   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
1865   MCFG_SOUND_CONFIG(ym2151_config)
1848   MCFG_YM2151_ADD("ymsnd", 32220000/9)
1849   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
1850   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w))
18661851   MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
18671852   MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
18681853
r18510r18511
19741959   /* sound hardware */
19751960   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
19761961
1977   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
1978   MCFG_SOUND_CONFIG(ym2151_config)
1962   MCFG_YM2151_ADD("ymsnd", 32220000/9)
1963   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
1964   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w))
19791965   MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
19801966   MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
19811967
r18510r18511
20492035   /* sound hardware */
20502036   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
20512037
2052   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
2053   MCFG_SOUND_CONFIG(ym2151_interface_nslasher)
2038   MCFG_YM2151_ADD("ymsnd", 32220000/9)
2039   MCFG_YM2151_IRQ_HANDLER(WRITELINE(deco32_state,sound_irq_nslasher))
2040   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w))
20542041   MCFG_SOUND_ROUTE(0, "lspeaker", 0.42)
20552042   MCFG_SOUND_ROUTE(1, "rspeaker", 0.42)
20562043
r18510r18511
20682055   MCFG_CPU_PROGRAM_MAP(sound_map)
20692056
20702057   MCFG_SOUND_MODIFY("ymsnd")
2071   MCFG_SOUND_CONFIG(ym2151_config)
2058   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1))
20722059
20732060MACHINE_CONFIG_END
20742061
r18510r18511
21762163   /* sound hardware */
21772164   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
21782165
2179   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
2180   MCFG_SOUND_CONFIG(ym2151_interface_nslasher)
2166   MCFG_YM2151_ADD("ymsnd", 32220000/9)
2167   MCFG_YM2151_IRQ_HANDLER(WRITELINE(deco32_state,sound_irq_nslasher))
2168   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w))
21812169   MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
21822170   MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
21832171
trunk/src/mame/drivers/tomcat.c
r18510r18511
328328
329329static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tomcat_state )
330330   AM_RANGE(0x0000, 0x1fff) AM_RAM
331   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
331   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
332332   AM_RANGE(0x3000, 0x30df) AM_WRITE(soundlatches_w)
333333   AM_RANGE(0x30e0, 0x30e0) AM_NOP // COINRD Inputs: D7 = Coin L, D6 = Coin R, D5 = SOUNDFLAG
334334   AM_RANGE(0x5000, 0x507f) AM_RAM   // 6532 ram
r18510r18511
437437   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
438438   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
439439
440   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_14_31818MHz / 4)
440   MCFG_YM2151_ADD("ymsnd", XTAL_14_31818MHz / 4)
441441   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
442442   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
443443MACHINE_CONFIG_END
trunk/src/mame/drivers/segaxbd.c
r18510r18511
339339
340340
341341//**************************************************************************
342//  YM2151 CHIP CALLBACKS
343//**************************************************************************
344
345//-------------------------------------------------
346//  sound_cpu_irq - signal an IRQ to the sound CPU
347//-------------------------------------------------
348
349WRITE_LINE_MEMBER( segaxbd_state::sound_cpu_irq )
350{
351   m_soundcpu->set_input_line(0, state);
352}
353
354
355
356//**************************************************************************
357342//  MAIN CPU READ/WRITE CALLBACKS
358343//**************************************************************************
359344
r18510r18511
983968static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segaxbd_state )
984969   ADDRESS_MAP_UNMAP_HIGH
985970   ADDRESS_MAP_GLOBAL_MASK(0xff)
986   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
971   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
987972   AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
988973ADDRESS_MAP_END
989974
r18510r18511
15511536//  SOUND DEFINITIONS
15521537//**************************************************************************
15531538
1554static const ym2151_interface ym2151_config =
1555{
1556   DEVCB_DRIVER_LINE_MEMBER(segaxbd_state, sound_cpu_irq)
1557};
1558
15591539static const sega_pcm_interface segapcm_interface =
15601540{
15611541   BANK_512
r18510r18511
16181598   // sound hardware
16191599   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
16201600
1621   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/4)
1622   MCFG_SOUND_CONFIG(ym2151_config)
1601   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/4)
1602   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
16231603   MCFG_SOUND_ROUTE(0, "lspeaker", 0.43)
16241604   MCFG_SOUND_ROUTE(1, "rspeaker", 0.43)
16251605
trunk/src/mame/drivers/ataxx.c
r18510r18511
347347   /* basic machine hardware */
348348
349349   /* sound hardware */
350   MCFG_SOUND_ADD("ymsnd", YM2151, 4000000)
350   MCFG_YM2151_ADD("ymsnd", 4000000)
351351   MCFG_SOUND_ROUTE(0, "mono", 0.40)
352352   MCFG_SOUND_ROUTE(1, "mono", 0.40)
353353MACHINE_CONFIG_END
trunk/src/mame/drivers/megasys1.c
r18510r18511
371371*/
372372
373373/* YM2151 IRQ */
374static void megasys1_sound_irq(device_t *device, int irq)
374WRITE_LINE_MEMBER(megasys1_state::sound_irq)
375375{
376   if (irq)
377      device->machine().device("soundcpu")->execute().set_input_line(4, HOLD_LINE);
376   if (state)
377      subdevice("soundcpu")->execute().set_input_line(4, HOLD_LINE);
378378}
379379
380380READ8_MEMBER(megasys1_state::oki_status_1_r)
r18510r18511
403403   AM_RANGE(0x000000, 0x01ffff) AM_ROM
404404   AM_RANGE(0x040000, 0x040001) AM_READ(soundlatch_word_r)
405405   AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w)   // to main cpu
406   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r,ym2151_w, 0x00ff)
406   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
407407   AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff)
408408   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff)
409409   AM_RANGE(0x0c0000, 0x0c0001) AM_READ8(oki_status_2_r, 0x00ff)
r18510r18511
421421   AM_RANGE(0x000000, 0x01ffff) AM_ROM
422422   AM_RANGE(0x040000, 0x040001) AM_READWRITE(soundlatch_word_r,soundlatch2_word_w)   /* from/to main cpu */
423423   AM_RANGE(0x060000, 0x060001) AM_READWRITE(soundlatch_word_r,soundlatch2_word_w)   /* from/to main cpu */
424   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2151_r,ym2151_w, 0x00ff)
424   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
425425   AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff)
426426   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff)
427427   AM_RANGE(0x0c0000, 0x0c0001) AM_READ8(oki_status_2_r, 0x00ff)
r18510r18511
14561456
14571457/* Provided by Jim Hernandez: 3.5MHz for FM, 30KHz (!) for ADPCM */
14581458
1459static const ym2151_interface ym2151_config =
1460{
1461   DEVCB_LINE(megasys1_sound_irq)
1462};
1463
14641459static MACHINE_CONFIG_START( system_A, megasys1_state )
14651460
14661461   /* basic machine hardware */
r18510r18511
14931488   /* sound hardware */
14941489   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
14951490
1496   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CPU_CLOCK/2) /* 3.5MHz (7MHz / 2) verified */
1497   MCFG_SOUND_CONFIG(ym2151_config)
1491   MCFG_YM2151_ADD("ymsnd", SOUND_CPU_CLOCK/2) /* 3.5MHz (7MHz / 2) verified */
1492   MCFG_YM2151_IRQ_HANDLER(WRITELINE(megasys1_state,sound_irq))
14981493   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
14991494   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
15001495
trunk/src/mame/drivers/aliens.c
r18510r18511
130130static ADDRESS_MAP_START( aliens_sound_map, AS_PROGRAM, 8, aliens_state )
131131   AM_RANGE(0x0000, 0x7fff) AM_ROM                              /* ROM g04_b03.bin */
132132   AM_RANGE(0x8000, 0x87ff) AM_RAM                              /* RAM */
133   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
133   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
134134   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r)                     /* soundlatch_byte_r */
135135   AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)
136136ADDRESS_MAP_END
r18510r18511
202202   volume_callback   /* external port callback */
203203};
204204
205static const ym2151_interface ym2151_config =
206{
207   DEVCB_NULL,
208   DEVCB_DRIVER_MEMBER(aliens_state,aliens_snd_bankswitch_w)
209};
210205
211
212206static const k052109_interface aliens_k052109_intf =
213207{
214208   "gfx1", 0,
r18510r18511
280274   /* sound hardware */
281275   MCFG_SPEAKER_STANDARD_MONO("mono")
282276
283   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)   /* verified on pcb */
284   MCFG_SOUND_CONFIG(ym2151_config)
277   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)   /* verified on pcb */
278   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(aliens_state,aliens_snd_bankswitch_w))
285279   MCFG_SOUND_ROUTE(0, "mono", 0.60)
286280   MCFG_SOUND_ROUTE(1, "mono", 0.60)
287281
trunk/src/mame/drivers/crimfght.c
r18510r18511
103103static ADDRESS_MAP_START( crimfght_sound_map, AS_PROGRAM, 8, crimfght_state )
104104   AM_RANGE(0x0000, 0x7fff) AM_ROM                           /* ROM 821l01.h4 */
105105   AM_RANGE(0x8000, 0x87ff) AM_RAM                           /* RAM */
106   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)      /* YM2151 */
106   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)      /* YM2151 */
107107   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r)                  /* soundlatch_byte_r */
108108   AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE_LEGACY("k007232", k007232_r, k007232_w)   /* 007232 registers */
109109ADDRESS_MAP_END
r18510r18511
223223
224224***************************************************************************/
225225
226static const ym2151_interface ym2151_config =
227{
228   DEVCB_NULL,
229   DEVCB_DRIVER_MEMBER(crimfght_state,crimfght_snd_bankswitch_w)
230};
231
232226static void volume_callback( device_t *device, int v )
233227{
234228   k007232_set_volume(device, 0, (v & 0x0f) * 0x11, 0);
r18510r18511
306300   /* sound hardware */
307301   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
308302
309   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)   /* verified on pcb */
310   MCFG_SOUND_CONFIG(ym2151_config)
303   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)   /* verified on pcb */
304   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(crimfght_state,crimfght_snd_bankswitch_w))
311305   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
312306   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
313307
trunk/src/mame/drivers/darkmist.c
r18510r18511
250250   /* sound hardware */
251251   MCFG_SPEAKER_STANDARD_MONO("mono")
252252
253   MCFG_SOUND_ADD("ymsnd", YM2151, 14318180/4)   /* 3.579545 MHz */
254   MCFG_SOUND_CONFIG(t5182_ym2151_interface)
253   MCFG_YM2151_ADD("ymsnd", 14318180/4)   /* 3.579545 MHz */
254   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<t5182_ym2151_irq_handler>))
255255   MCFG_SOUND_ROUTE(0, "mono", 1.0)
256256   MCFG_SOUND_ROUTE(1, "mono", 1.0)
257257
trunk/src/mame/drivers/flkatck.c
r18510r18511
111111   AM_RANGE(0x9006, 0x9006) AM_WRITENOP                              /* ??? */
112112   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)                        /* soundlatch_byte_r */
113113   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE_LEGACY("konami", k007232_r, k007232_w)   /* 007232 registers */
114   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)         /* YM2151 */
114   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)         /* YM2151 */
115115ADDRESS_MAP_END
116116
117117
r18510r18511
246246   /* sound hardware */
247247   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
248248
249   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
249   MCFG_YM2151_ADD("ymsnd", 3579545)
250250   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
251251   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
252252
trunk/src/mame/drivers/jackal.c
r18510r18511
175175ADDRESS_MAP_END
176176
177177static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 8, jackal_state )
178   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
178   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
179179   AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("paletteram")   // self test only checks 0x4000-0x423f, 007327 should actually go up to 4fff
180180   AM_RANGE(0x6000, 0x605f) AM_RAM                  // SOUND RAM (Self test check 0x6000-605f, 0x7c00-0x7fff)
181181   AM_RANGE(0x6060, 0x7fff) AM_RAM AM_SHARE("share1")
r18510r18511
380380   /* sound hardware */
381381   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
382382
383   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK) // verified on pcb
383   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK) // verified on pcb
384384   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
385385   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
386386MACHINE_CONFIG_END
trunk/src/mame/drivers/seta.c
r18510r18511
87538753static ADDRESS_MAP_START( thunderlbl_sound_portmap, AS_IO, 8, seta_state )
87548754   ADDRESS_MAP_UNMAP_HIGH
87558755   ADDRESS_MAP_GLOBAL_MASK(0xff)
8756   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
8756   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
87578757   //AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVWRITE_LEGACY("upd", upd7759_control_w)
87588758   //AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_DEVREADWRITE_LEGACY("upd", upd7759_status_r, upd7759_port_w)
87598759   AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(soundlatch_byte_r)
r18510r18511
87728772   MCFG_CPU_IO_MAP(thunderlbl_sound_portmap)
87738773
87748774   /* the sound hardware / program is ripped from Tetris (S16B) */
8775   MCFG_SOUND_ADD("ymsnd", YM2151, 16000000/2)
8775   MCFG_YM2151_ADD("ymsnd", 16000000/2)
87768776   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
87778777   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
87788778MACHINE_CONFIG_END
trunk/src/mame/drivers/fcrash.c
r18510r18511
801801   /* sound hardware */
802802//  MCFG_SPEAKER_STANDARD_MONO("mono")
803803
804//  MCFG_SOUND_ADD("2151", YM2151, 3579545)
804//  MCFG_YM2151_ADD("2151", 3579545)
805805//  MCFG_SOUND_CONFIG(ym2151_config)
806806//  MCFG_SOUND_ROUTE(0, "mono", 0.35)
807807//  MCFG_SOUND_ROUTE(1, "mono", 0.35)
trunk/src/mame/drivers/snowbros.c
r18510r18511
393393static ADDRESS_MAP_START( hyperpac_sound_map, AS_PROGRAM, 8, snowbros_state )
394394   AM_RANGE(0x0000, 0xcfff) AM_ROM
395395   AM_RANGE(0xd000, 0xd7ff) AM_RAM
396   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
396   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
397397   AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
398398   AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_byte_r)
399399ADDRESS_MAP_END
r18510r18511
15041504   irqhandler
15051505};
15061506
1507/* SemiCom Sound */
15081507
1509static const ym2151_interface ym2151_config =
1510{
1511   DEVCB_LINE(irqhandler)
1512};
1513
1514
15151508MACHINE_RESET_MEMBER(snowbros_state,semiprot)
15161509{
15171510   UINT16 *PROTDATA = (UINT16*)memregion("user1")->base();
r18510r18511
16031596
16041597   /* sound hardware */
16051598   MCFG_SOUND_REPLACE("ymsnd", YM2151, 4000000)
1606   MCFG_SOUND_CONFIG(ym2151_config)
1599   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
16071600   MCFG_SOUND_ROUTE(0, "mono", 0.10)
16081601   MCFG_SOUND_ROUTE(1, "mono", 0.10)
16091602
r18510r18511
17451738   MCFG_MACHINE_RESET_OVERRIDE (snowbros_state, finalttr )
17461739
17471740   MCFG_SOUND_REPLACE("ymsnd", YM2151, 4000000)
1748   MCFG_SOUND_CONFIG(ym2151_config)
1741   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
17491742   MCFG_SOUND_ROUTE(0, "mono", 0.08)
17501743   MCFG_SOUND_ROUTE(1, "mono", 0.08)
17511744
trunk/src/mame/drivers/segaybd.c
r18510r18511
8181
8282
8383//**************************************************************************
84//  YM2151 CHIP CALLBACKS
85//**************************************************************************
86
87//-------------------------------------------------
88//  sound_cpu_irq - signal an IRQ to the sound CPU
89//-------------------------------------------------
90
91void segaybd_state::sound_cpu_irq(int state)
92{
93   m_soundcpu->set_input_line(0, state);
94}
95
96
97
98//**************************************************************************
9984//  MAIN CPU READ/WRITE HANDLERS
10085//**************************************************************************
10186
r18510r18511
761746static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segaybd_state )
762747   ADDRESS_MAP_UNMAP_HIGH
763748   ADDRESS_MAP_GLOBAL_MASK(0xff)
764   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
749   AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
765750   AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
766751ADDRESS_MAP_END
767752
r18510r18511
11871172//  SOUND DEFINITIONS
11881173//**************************************************************************
11891174
1190static const ym2151_interface ym2151_config =
1191{
1192   DEVCB_DRIVER_LINE_MEMBER(segaybd_state, sound_cpu_irq)
1193};
1194
11951175static const sega_pcm_interface segapcm_interface =
11961176{
11971177   BANK_12M | BANK_MASKF8
r18510r18511
12441224   // sound hardware
12451225   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
12461226
1247   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK/8)
1248   MCFG_SOUND_CONFIG(ym2151_config)
1227   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/8)
1228   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
12491229   MCFG_SOUND_ROUTE(0, "lspeaker", 0.43)
12501230   MCFG_SOUND_ROUTE(1, "rspeaker", 0.43)
12511231
trunk/src/mame/drivers/dblewing.c
r18510r18511
7777   cpu_device *m_maincpu;
7878   cpu_device *m_audiocpu;
7979   device_t *m_deco_tilegen1;
80   DECLARE_WRITE_LINE_MEMBER(sound_irq);
8081   DECLARE_READ16_MEMBER(dblewing_prot_r);
8182   DECLARE_WRITE16_MEMBER(dblewing_prot_w);
8283   DECLARE_READ8_MEMBER(irq_latch_r);
r18510r18511
351352static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dblewing_state )
352353   AM_RANGE(0x0000, 0x7fff) AM_ROM
353354   AM_RANGE(0x8000, 0x87ff) AM_RAM
354   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_status_port_r,ym2151_w)
355   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, write)
355356   AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
356357   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r)
357358   AM_RANGE(0xd000, 0xd000) AM_READ(irq_latch_r) //timing? sound latch?
r18510r18511
530531   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
531532INPUT_PORTS_END
532533
533static void sound_irq( device_t *device, int state )
534WRITE_LINE_MEMBER(dblewing_state::sound_irq)
534535{
535   dblewing_state *driver_state = device->machine().driver_data<dblewing_state>();
536
537536   /* bit 0 of dblewing_sound_irq specifies IRQ from sound chip */
538537   if (state)
539      driver_state->m_sound_irq |= 0x01;
538      m_sound_irq |= 0x01;
540539   else
541      driver_state->m_sound_irq &= ~0x01;
542   driver_state->m_audiocpu->set_input_line(0, (driver_state->m_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
540      m_sound_irq &= ~0x01;
541   m_audiocpu->set_input_line(0, (m_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
543542}
544543
545static const ym2151_interface ym2151_config =
546{
547   DEVCB_LINE(sound_irq)
548};
549
550544static int dblewing_bank_callback( const int bank )
551545{
552546   return ((bank >> 4) & 0x7) * 0x1000;
r18510r18511
669663   /* sound hardware */
670664   MCFG_SPEAKER_STANDARD_MONO("mono")
671665
672   MCFG_SOUND_ADD("ymsnd", YM2151, 32220000/9)
673   MCFG_SOUND_CONFIG(ym2151_config)
666   MCFG_YM2151_ADD("ymsnd", 32220000/9)
667   MCFG_YM2151_IRQ_HANDLER(WRITELINE(dblewing_state, sound_irq))
674668   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
675669
676670   MCFG_OKIM6295_ADD("oki", 32220000/32, OKIM6295_PIN7_HIGH)
trunk/src/mame/drivers/ddragon3.c
r18510r18511
256256static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, ddragon3_state )
257257   AM_RANGE(0x0000, 0xbfff) AM_ROM
258258   AM_RANGE(0xc000, 0xc7ff) AM_RAM
259   AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE_LEGACY("ym2151", ym2151_r, ym2151_w)
259   AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
260260   AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
261261   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
262262   AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w)
r18510r18511
265265static ADDRESS_MAP_START( ctribe_sound_map, AS_PROGRAM, 8, ddragon3_state )
266266   AM_RANGE(0x0000, 0x7fff) AM_ROM
267267   AM_RANGE(0x8000, 0x87ff) AM_RAM
268   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE_LEGACY("ym2151", ym2151_status_port_r, ym2151_w)
268   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym2151", ym2151_device, status_r, write)
269269   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
270270   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
271271ADDRESS_MAP_END
r18510r18511
508508   GFXDECODE_ENTRY( "gfx2", 0, sprite_layout,   0, 16 )
509509GFXDECODE_END
510510
511/*************************************
512 *
513 *  Sound Interfaces
514 *
515 *************************************/
516511
517static void dd3_ymirq_handler(device_t *device, int irq)
518{
519   ddragon3_state *state = device->machine().driver_data<ddragon3_state>();
520   state->m_audiocpu->set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE );
521}
522
523static const ym2151_interface ym2151_config =
524{
525   DEVCB_LINE(dd3_ymirq_handler)
526};
527
528512/*************************************
529513 *
530514 *  Interrupt Generators
r18510r18511
610594   /* sound hardware */
611595   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
612596
613   MCFG_SOUND_ADD("ym2151", YM2151, XTAL_3_579545MHz)
614   MCFG_SOUND_CONFIG(ym2151_config)
597   MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz)
598   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
615599   MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
616600   MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
617601
trunk/src/mame/drivers/m72.c
r18510r18511
10431043
10441044static ADDRESS_MAP_START( rtype_sound_portmap, AS_IO, 8, m72_state )
10451045   ADDRESS_MAP_GLOBAL_MASK(0xff)
1046   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1046   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
10471047   AM_RANGE(0x02, 0x02) AM_READ(soundlatch_byte_r)
10481048   AM_RANGE(0x06, 0x06) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)
10491049   AM_RANGE(0x84, 0x84) AM_DEVREAD_LEGACY("m72", m72_sample_r)
r18510r18511
10511051
10521052static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, m72_state )
10531053   ADDRESS_MAP_GLOBAL_MASK(0xff)
1054   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1054   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
10551055   AM_RANGE(0x02, 0x02) AM_READ(soundlatch_byte_r)
10561056   AM_RANGE(0x06, 0x06) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)
10571057   AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w)
r18510r18511
10601060
10611061static ADDRESS_MAP_START( rtype2_sound_portmap, AS_IO, 8, m72_state )
10621062   ADDRESS_MAP_GLOBAL_MASK(0xff)
1063   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1063   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
10641064   AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r)
10651065   AM_RANGE(0x80, 0x81) AM_DEVWRITE_LEGACY("m72", rtype2_sample_addr_w)
10661066   AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w)
r18510r18511
10721072static ADDRESS_MAP_START( poundfor_sound_portmap, AS_IO, 8, m72_state )
10731073   ADDRESS_MAP_GLOBAL_MASK(0xff)
10741074   AM_RANGE(0x10, 0x13) AM_DEVWRITE_LEGACY("m72", poundfor_sample_addr_w)
1075   AM_RANGE(0x40, 0x41) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
1075   AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
10761076   AM_RANGE(0x42, 0x42) AM_READ(soundlatch_byte_r)
10771077   AM_RANGE(0x42, 0x42) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)
10781078ADDRESS_MAP_END
r18510r18511
17911791
17921792
17931793
1794static const ym2151_interface ym2151_config =
1795{
1796   DEVCB_LINE(m72_ym2151_irq_handler)
1797};
1798
1799
1800
18011794static MACHINE_CONFIG_START( m72_base, m72_state )
18021795
18031796   /* basic machine hardware */
r18510r18511
18271820
18281821   MCFG_SOUND_ADD("m72", M72, 0);
18291822
1830   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
1831   MCFG_SOUND_CONFIG(ym2151_config)
1823   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
1824   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
18321825   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
18331826   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
18341827
r18510r18511
18821875
18831876   MCFG_SOUND_ADD("m72", M72, 0);
18841877
1885   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
1886   MCFG_SOUND_CONFIG(ym2151_config)
1878   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
1879   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
18871880   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
18881881   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
18891882MACHINE_CONFIG_END
r18510r18511
19191912
19201913   MCFG_SOUND_ADD("m72", M72, 0);
19211914
1922   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
1923   MCFG_SOUND_CONFIG(ym2151_config)
1915   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
1916   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
19241917   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
19251918   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
19261919
r18510r18511
19601953
19611954   MCFG_SOUND_ADD("m72", M72, 0);
19621955
1963   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
1964   MCFG_SOUND_CONFIG(ym2151_config)
1956   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
1957   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
19651958   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
19661959   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
19671960
r18510r18511
20011994
20021995   MCFG_SOUND_ADD("m72", M72, 0);
20031996
2004   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
2005   MCFG_SOUND_CONFIG(ym2151_config)
1997   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
1998   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
20061999   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
20072000   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
20082001
r18510r18511
20422035
20432036   MCFG_SOUND_ADD("m72", M72, 0);
20442037
2045   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
2046   MCFG_SOUND_CONFIG(ym2151_config)
2038   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
2039   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
20472040   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
20482041   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
20492042
r18510r18511
20832076
20842077   MCFG_SOUND_ADD("m72", M72, 0);
20852078
2086   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
2087   MCFG_SOUND_CONFIG(ym2151_config)
2079   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
2080   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
20882081   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
20892082   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
20902083
r18510r18511
21242117
21252118   MCFG_SOUND_ADD("m72", M72, 0);
21262119
2127   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
2128   MCFG_SOUND_CONFIG(ym2151_config)
2120   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
2121   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
21292122   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
21302123   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
21312124
r18510r18511
21652158
21662159   MCFG_SOUND_ADD("m72", M72, 0);
21672160
2168   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
2169   MCFG_SOUND_CONFIG(ym2151_config)
2161   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
2162   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
21702163   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
21712164   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
21722165
r18510r18511
22062199
22072200   MCFG_SOUND_ADD("m72", M72, 0);
22082201
2209   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
2210   MCFG_SOUND_CONFIG(ym2151_config)
2202   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
2203   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
22112204   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
22122205   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
22132206
r18510r18511
22472240
22482241   MCFG_SOUND_ADD("m72", M72, 0);
22492242
2250   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
2251   MCFG_SOUND_CONFIG(ym2151_config)
2243   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
2244   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
22522245   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
22532246   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
22542247
r18510r18511
22882281
22892282   MCFG_SOUND_ADD("m72", M72, 0);
22902283
2291   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
2292   MCFG_SOUND_CONFIG(ym2151_config)
2284   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
2285   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
22932286   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
22942287   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
22952288
r18510r18511
23292322
23302323   MCFG_SOUND_ADD("m72", M72, 0);
23312324
2332   MCFG_SOUND_ADD("ymsnd", YM2151, SOUND_CLOCK)
2333   MCFG_SOUND_CONFIG(ym2151_config)
2325   MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
2326   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
23342327   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
23352328   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
23362329
trunk/src/mame/drivers/88games.c
r18510r18511
150150   AM_RANGE(0x8000, 0x87ff) AM_RAM
151151   AM_RANGE(0x9000, 0x9000) AM_WRITE(speech_msg_w)
152152   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
153   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
153   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
154154   AM_RANGE(0xe000, 0xe000) AM_WRITE(speech_control_w)
155155ADDRESS_MAP_END
156156
r18510r18511
396396   /* sound hardware */
397397   MCFG_SPEAKER_STANDARD_MONO("mono")
398398
399   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
399   MCFG_YM2151_ADD("ymsnd", 3579545)
400400   MCFG_SOUND_ROUTE(0, "mono", 0.75)
401401   MCFG_SOUND_ROUTE(1, "mono", 0.75)
402402
trunk/src/mame/drivers/metro.c
r18510r18511
406406      if (!BIT(data, 2))
407407      {
408408         /* write */
409         ym2151_w(m_ymsnd, space, BIT(data, 1), m_porta);
409         downcast<ym2151_device *>(m_ymsnd.target())->write(space, BIT(data, 1), m_porta);
410410      }
411411
412412      if (!BIT(data, 3))
413413      {
414414         /* read */
415         m_porta = ym2151_r(m_ymsnd, space, BIT(data, 1));
415         m_porta = downcast<ym2151_device *>(m_ymsnd.target())->read(space, BIT(data, 1));
416416      }
417417
418418      m_portb = data;
r18510r18511
436436   m_portb = data;
437437}
438438
439static void metro_sound_irq_handler( device_t *device, int state )
440{
441   metro_state *driver_state = device->machine().driver_data<metro_state>();
442   driver_state->m_audiocpu->set_input_line(UPD7810_INTF2, state ? ASSERT_LINE : CLEAR_LINE);
443}
444
445static const ym2151_interface ym2151_config =
446{
447   DEVCB_LINE(metro_sound_irq_handler)   /* irq handler */
448};
449
450
451439static const ymf278b_interface ymf278b_config =
452440{
453441   ymf278b_interrupt
r18510r18511
36103598   /* sound hardware */
36113599   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
36123600
3613   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)
3614   MCFG_SOUND_CONFIG(ym2151_config)
3601   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
3602   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", UPD7810_INTF2))
36153603   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
36163604   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
36173605
r18510r18511
40914079   /* sound hardware */
40924080   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
40934081
4094   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz)   /* Confirmed match to reference video */
4095   MCFG_SOUND_CONFIG(ym2151_config)
4082   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)   /* Confirmed match to reference video */
4083   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", UPD7810_INTF2))
40964084   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
40974085   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
40984086
trunk/src/mame/drivers/m90.c
r18510r18511
129129
130130static ADDRESS_MAP_START( m90_sound_cpu_io_map, AS_IO, 8, m90_state )
131131   ADDRESS_MAP_GLOBAL_MASK(0xff)
132   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
132   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
133133   AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r)
134134   AM_RANGE(0x80, 0x81) AM_DEVWRITE_LEGACY("m72", rtype2_sample_addr_w)
135135   AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w)
r18510r18511
139139
140140static ADDRESS_MAP_START( dynablsb_sound_cpu_io_map, AS_IO, 8, m90_state )
141141   ADDRESS_MAP_GLOBAL_MASK(0xff)
142   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
142   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
143143   AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r)
144144   AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", dac_device, write_signed8)
145145ADDRESS_MAP_END
r18510r18511
147147static ADDRESS_MAP_START( m99_sound_cpu_io_map, AS_IO, 8, m90_state )
148148   ADDRESS_MAP_GLOBAL_MASK(0xff)
149149   AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("m72", poundfor_sample_addr_w)
150   AM_RANGE(0x40, 0x41) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
150   AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
151151   AM_RANGE(0x42, 0x42) AM_READ(soundlatch_byte_r)
152152   AM_RANGE(0x42, 0x42) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)
153153ADDRESS_MAP_END
r18510r18511
666666
667667/*****************************************************************************/
668668
669static const ym2151_interface ym2151_config =
670{
671   DEVCB_LINE(m72_ym2151_irq_handler)
672};
673
674/* this bootleg polls the YM2151 instead of taking interrupts from it */
675static const ym2151_interface dynablsb_ym2151_config =
676{
677   DEVCB_NULL
678};
679
680669INTERRUPT_GEN_MEMBER(m90_state::fake_nmi)
681670{
682671   address_space &space = machine().firstcpu->space(AS_PROGRAM);
r18510r18511
741730
742731   MCFG_SOUND_ADD("m72", M72, 0)
743732
744   MCFG_SOUND_ADD("ymsnd", YM2151, XTAL_3_579545MHz) /* verified on pcb */
745   MCFG_SOUND_CONFIG(ym2151_config)
733   MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */
734   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
746735   MCFG_SOUND_ROUTE(0, "mono", 0.15)
747736   MCFG_SOUND_ROUTE(1, "mono", 0.15)
748737
r18510r18511
842831   MCFG_DEVICE_REMOVE("m72")
843832
844833   MCFG_SOUND_MODIFY("ymsnd")
845   MCFG_SOUND_CONFIG(dynablsb_ym2151_config)
834   MCFG_YM2151_IRQ_HANDLER(NULL) /* this bootleg polls the YM2151 instead of taking interrupts from it */
846835MACHINE_CONFIG_END
847836
848837
trunk/src/mame/drivers/vball.c
r18510r18511
226226static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, vball_state )
227227   AM_RANGE(0x0000, 0x7fff) AM_ROM
228228   AM_RANGE(0x8000, 0x87ff) AM_RAM
229   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
229   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
230230   AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("oki", okim6295_device, read, write)
231231   AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_byte_r)
232232ADDRESS_MAP_END
r18510r18511
393393GFXDECODE_END
394394
395395
396static void vball_irq_handler(device_t *device, int irq)
397{
398   device->machine().device("audiocpu")->execute().set_input_line(0 , irq ? ASSERT_LINE : CLEAR_LINE);
399}
400
401static const ym2151_interface ym2151_config =
402{
403   DEVCB_LINE(vball_irq_handler)
404};
405
406
407396static MACHINE_CONFIG_START( vball, vball_state )
408397
409398   /* basic machine hardware */
r18510r18511
427416   /* sound hardware */
428417   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
429418
430   MCFG_SOUND_ADD("ymsnd", YM2151, 3579545)
431   MCFG_SOUND_CONFIG(ym2151_config)
419   MCFG_YM2151_ADD("ymsnd", 3579545)
420   MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
432421   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
433422   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
434423
trunk/src/mame/audio/atarijsa.c
r18510r18511
716716   }
717717}
718718
719static WRITE8_DEVICE_HANDLER( ym2151_ctl_w )
719WRITE8_DEVICE_HANDLER( ym2151_ctl_w )
720720{
721721   ym2151_ct1 = data&0x1;
722722   ym2151_ct2 = (data&0x2)>>1;
r18510r18511
750750
751751static ADDRESS_MAP_START( atarijsa1_map, AS_PROGRAM, 8, driver_device )
752752   AM_RANGE(0x0000, 0x1fff) AM_RAM
753   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
753   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
754754   AM_RANGE(0x2800, 0x2bff) AM_READWRITE_LEGACY(jsa1_io_r, jsa1_io_w)
755755   AM_RANGE(0x3000, 0xffff) AM_ROM
756756ADDRESS_MAP_END
r18510r18511
758758
759759static ADDRESS_MAP_START( atarijsa2_map, AS_PROGRAM, 8, driver_device )
760760   AM_RANGE(0x0000, 0x1fff) AM_RAM
761   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
761   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
762762   AM_RANGE(0x2800, 0x2bff) AM_READWRITE_LEGACY(jsa2_io_r, jsa2_io_w)
763763   AM_RANGE(0x3000, 0xffff) AM_ROM
764764ADDRESS_MAP_END
r18510r18511
767767/* full map verified from schematics and Batman GALs */
768768static ADDRESS_MAP_START( atarijsa3_map, AS_PROGRAM, 8, driver_device )
769769   AM_RANGE(0x0000, 0x1fff) AM_RAM
770   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
770   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
771771   AM_RANGE(0x2800, 0x2fff) AM_READWRITE_LEGACY(jsa3_io_r, jsa3_io_w)
772772   AM_RANGE(0x3000, 0xffff) AM_ROM
773773ADDRESS_MAP_END
r18510r18511
775775
776776static ADDRESS_MAP_START( atarijsa3s_map, AS_PROGRAM, 8, driver_device )
777777   AM_RANGE(0x0000, 0x1fff) AM_RAM
778   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
778   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
779779   AM_RANGE(0x2800, 0x2fff) AM_READWRITE_LEGACY(jsa3s_io_r, jsa3s_io_w)
780780   AM_RANGE(0x3000, 0xffff) AM_ROM
781781ADDRESS_MAP_END
r18510r18511
784784
785785/*************************************
786786 *
787 *  Sound definitions
788 *
789 *************************************/
790
791static const ym2151_interface ym2151_config =
792{
793   DEVCB_LINE(atarigen_ym2151_irq_gen),
794   DEVCB_HANDLER(ym2151_ctl_w)
795};
796
797
798
799/*************************************
800 *
801787 *  Machine drivers
802788 *
803789 *************************************/
r18510r18511
813799   /* sound hardware */
814800   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
815801
816   MCFG_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK)
817   MCFG_SOUND_CONFIG(ym2151_config)
802   MCFG_YM2151_ADD("ymsnd", JSA_MASTER_CLOCK)
803   MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen))
804   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(driver_device, member_wrapper8<ym2151_ctl_w>))
818805   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
819806   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
820807MACHINE_CONFIG_END
r18510r18511
826813   /* basic machine hardware */
827814
828815   /* sound hardware */
829   MCFG_SOUND_REPLACE("ymsnd", YM2151, JSA_MASTER_CLOCK)
830   MCFG_SOUND_CONFIG(ym2151_config)
816   MCFG_DEVICE_MODIFY("ymsnd")
817   MCFG_SOUND_ROUTES_RESET()
831818   MCFG_SOUND_ROUTE(0, "rspeaker", 0.60)
832819   MCFG_SOUND_ROUTE(1, "lspeaker", 0.60)
833820MACHINE_CONFIG_END
r18510r18511
856843   /* sound hardware */
857844   MCFG_SPEAKER_STANDARD_MONO("mono")
858845
859   MCFG_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK)
860   MCFG_SOUND_CONFIG(ym2151_config)
846   MCFG_YM2151_ADD("ymsnd", JSA_MASTER_CLOCK)
847   MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen))
848   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(driver_device, member_wrapper8<ym2151_ctl_w>))
861849   MCFG_SOUND_ROUTE(0, "mono", 0.60)
862850   MCFG_SOUND_ROUTE(1, "mono", 0.60)
863851
r18510r18511
877865   /* sound hardware */
878866   MCFG_SPEAKER_STANDARD_MONO("mono")
879867
880   MCFG_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK)
881   MCFG_SOUND_CONFIG(ym2151_config)
868   MCFG_YM2151_ADD("ymsnd", JSA_MASTER_CLOCK)
869   MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen))
870   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(driver_device, member_wrapper8<ym2151_ctl_w>))
882871   MCFG_SOUND_ROUTE(0, "mono", 0.60)
883872   MCFG_SOUND_ROUTE(1, "mono", 0.60)
884873
r18510r18511
920909   /* sound hardware */
921910   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
922911
923   MCFG_SOUND_ADD("ymsnd", YM2151, JSA_MASTER_CLOCK)
924   MCFG_SOUND_CONFIG(ym2151_config)
912   MCFG_YM2151_ADD("ymsnd", JSA_MASTER_CLOCK)
913   MCFG_YM2151_IRQ_HANDLER(WRITELINE(atarigen_state, ym2151_irq_gen))
914   MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(driver_device, member_wrapper8<ym2151_ctl_w>))
925915   MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
926916   MCFG_SOUND_ROUTE(1, "rspeaker", 0.60)
927917
trunk/src/mame/audio/seibu.c
r18510r18511
314314   update_irq_lines(device->machine(), linestate ? RST10_ASSERT : RST10_CLEAR);
315315}
316316
317void seibu_ym2151_irqhandler(device_t *device, int linestate)
317WRITE_LINE_DEVICE_HANDLER( seibu_ym2151_irqhandler )
318318{
319   update_irq_lines(device->machine(), linestate ? RST10_ASSERT : RST10_CLEAR);
319   update_irq_lines(device->machine(), state ? RST10_ASSERT : RST10_CLEAR);
320320}
321321
322322void seibu_ym2203_irqhandler(device_t *device, int linestate)
r18510r18511
450450   seibu_ym3812_irqhandler
451451};
452452
453const ym2151_interface seibu_ym2151_interface =
454{
455   DEVCB_LINE(seibu_ym2151_irqhandler)
456};
457
458453const ym2203_interface seibu_ym2203_interface =
459454{
460455   {
r18510r18511
493488   AM_RANGE(0x4002, 0x4002) AM_WRITE_LEGACY(seibu_rst10_ack_w)
494489   AM_RANGE(0x4003, 0x4003) AM_WRITE_LEGACY(seibu_rst18_ack_w)
495490   AM_RANGE(0x4007, 0x4007) AM_WRITENOP // bank, always 0
496   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
491   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
497492   AM_RANGE(0x4010, 0x4011) AM_READ_LEGACY(seibu_soundlatch_r)
498493   AM_RANGE(0x4012, 0x4012) AM_READ_LEGACY(seibu_main_data_pending_r)
499494   AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
r18510r18511
511506   AM_RANGE(0x4002, 0x4002) AM_WRITE_LEGACY(seibu_rst10_ack_w)
512507   AM_RANGE(0x4003, 0x4003) AM_WRITE_LEGACY(seibu_rst18_ack_w)
513508   AM_RANGE(0x4007, 0x4007) AM_WRITE_LEGACY(seibu_bank_w)
514   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
509   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
515510   AM_RANGE(0x4010, 0x4011) AM_READ_LEGACY(seibu_soundlatch_r)
516511   AM_RANGE(0x4012, 0x4012) AM_READ_LEGACY(seibu_main_data_pending_r)
517512   AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
r18510r18511
528523   AM_RANGE(0x4001, 0x4001) AM_WRITE_LEGACY(seibu_irq_clear_w)
529524   AM_RANGE(0x4002, 0x4002) AM_WRITE_LEGACY(seibu_rst10_ack_w)
530525   AM_RANGE(0x4003, 0x4003) AM_WRITE_LEGACY(seibu_rst18_ack_w)
531   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
526   AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
532527   AM_RANGE(0x4010, 0x4011) AM_READ_LEGACY(seibu_soundlatch_r)
533528   AM_RANGE(0x4012, 0x4012) AM_READ_LEGACY(seibu_main_data_pending_r)
534529   AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
trunk/src/mame/audio/seibu.h
r18510r18511
5151DECLARE_WRITE8_HANDLER( seibu_bank_w );
5252DECLARE_WRITE8_HANDLER( seibu_coin_w );
5353void seibu_ym3812_irqhandler(device_t *device, int linestate);
54void seibu_ym2151_irqhandler(device_t *device, int linestate);
54WRITE_LINE_DEVICE_HANDLER(seibu_ym2151_irqhandler);
5555void seibu_ym2203_irqhandler(device_t *device, int linestate);
5656DECLARE_READ8_HANDLER( seibu_soundlatch_r );
5757DECLARE_READ8_HANDLER( seibu_main_data_pending_r );
r18510r18511
8888
8989
9090extern const ym3812_interface seibu_ym3812_interface;
91extern const ym2151_interface seibu_ym2151_interface;
9291extern const ym2203_interface seibu_ym2203_interface;
9392
9493struct seibu_adpcm_interface
r18510r18511
166165#define SEIBU_SOUND_SYSTEM_YM2151_INTERFACE(freq1,freq2)         \
167166   MCFG_SPEAKER_STANDARD_MONO("mono")                        \
168167                                                   \
169   MCFG_SOUND_ADD("ymsnd", YM2151, freq1)                        \
170   MCFG_SOUND_CONFIG(seibu_ym2151_interface)                  \
168   MCFG_YM2151_ADD("ymsnd", freq1)                        \
169   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<seibu_ym2151_irqhandler>)) \
171170   MCFG_SOUND_ROUTE(0, "mono", 0.50)                        \
172171   MCFG_SOUND_ROUTE(1, "mono", 0.50)                        \
173172                                                   \
r18510r18511
177176#define SEIBU_AIRRAID_SOUND_SYSTEM_YM2151_INTERFACE(freq1)         \
178177   MCFG_SPEAKER_STANDARD_MONO("mono")                        \
179178                                                   \
180   MCFG_SOUND_ADD("ymsnd", YM2151, freq1)                        \
181   MCFG_SOUND_CONFIG(seibu_ym2151_interface)                  \
179   MCFG_YM2151_ADD("ymsnd", freq1)                        \
180   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<seibu_ym2151_irqhandler>)) \
182181   MCFG_SOUND_ROUTE(0, "mono", 0.50)                        \
183182   MCFG_SOUND_ROUTE(1, "mono", 0.50)                        \
184183                                                   \
r18510r18511
187186#define SEIBU_SOUND_SYSTEM_YM2151_RAIDEN2_INTERFACE(freq1,freq2,regiona, regionb)      \
188187   MCFG_SPEAKER_STANDARD_MONO("mono")                        \
189188                                                   \
190   MCFG_SOUND_ADD("ymsnd", YM2151, freq1)                        \
191   MCFG_SOUND_CONFIG(seibu_ym2151_interface)                  \
189   MCFG_YM2151_ADD("ymsnd", freq1)                        \
190   MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<seibu_ym2151_irqhandler>)) \
192191   MCFG_SOUND_ROUTE(0, "mono", 0.50)                        \
193192   MCFG_SOUND_ROUTE(1, "mono", 0.50)                        \
194193                                                   \
trunk/src/mame/audio/leland.c
r18510r18511
22042204         if (!state->m_has_ym2151)
22052205            return pit8254_r(device, space, offset | 0x40, mem_mask);
22062206         else
2207            return ym2151_r(space.machine().device("ymsnd"), space, offset);
2207            return space.machine().device<ym2151_device>("ymsnd")->read(space, offset);
22082208
22092209      case 4:
22102210         if (state->m_is_redline)
r18510r18511
22412241         if (!state->m_has_ym2151)
22422242            pit8254_w(device, space, offset | 0x40, data, mem_mask);
22432243         else
2244            ym2151_w(space.machine().device("ymsnd"), space, offset, data);
2244            space.machine().device<ym2151_device>("ymsnd")->write(space, offset, data);
22452245         break;
22462246
22472247      case 4:
trunk/src/mame/audio/t5182.c
r18510r18511
232232   space.machine().scheduler().synchronize(FUNC(setirq_callback), CPU_CLEAR);
233233}
234234
235static void t5182_ym2151_irq_handler(device_t *device, int irq)
235WRITE_LINE_DEVICE_HANDLER(t5182_ym2151_irq_handler)
236236{
237   if (irq)
237   if (state)
238238      device->machine().scheduler().synchronize(FUNC(setirq_callback), YM2151_ASSERT);
239239   else
240240      device->machine().scheduler().synchronize(FUNC(setirq_callback), YM2151_CLEAR);
r18510r18511
275275}
276276
277277
278const ym2151_interface t5182_ym2151_interface =
279{
280   DEVCB_LINE(t5182_ym2151_irq_handler)
281};
282278
283279
284
285
286280   // 4000-407F    RAM shared with main CPU
287281   // 4000 output queue length
288282   // 4001-4020 output queue
r18510r18511
320314   // 50  W test mode status flags (bit 0 = ROM test fail, bit 1 = RAM test fail, bit 2 = YM2151 IRQ not received)
321315ADDRESS_MAP_START( t5182_io, AS_IO, 8, driver_device )
322316   ADDRESS_MAP_GLOBAL_MASK(0xff)
323   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
317   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
324318   AM_RANGE(0x10, 0x10) AM_WRITE_LEGACY(t5182_sharedram_semaphore_snd_acquire_w)
325319   AM_RANGE(0x11, 0x11) AM_WRITE_LEGACY(t5182_sharedram_semaphore_snd_release_w)
326320   AM_RANGE(0x12, 0x12) AM_WRITE_LEGACY(t5182_ym2151_irq_ack_w)
trunk/src/mame/audio/t5182.h
r18510r18511
1818DECLARE_READ8_HANDLER( t5182_sharedram_r );
1919DECLARE_WRITE8_HANDLER( t5182_sharedram_w );
2020
21extern const ym2151_interface t5182_ym2151_interface;
21WRITE_LINE_DEVICE_HANDLER(t5182_ym2151_irq_handler);
trunk/src/mame/audio/williams.c
r18510r18511
222222
223223static ADDRESS_MAP_START( williams_cvsd_map, AS_PROGRAM, 8, williams_cvsd_sound_device )
224224   AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM
225   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE_LEGACY("ym2151", ym2151_r, ym2151_w)
225   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
226226   AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia", pia6821_device, read, write)
227227   AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_WRITE(cvsd_digit_clock_clear_w)
228228   AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_WRITE(cvsd_clock_set_w)
r18510r18511
253253
254254
255255//-------------------------------------------------
256//  YM2151 configuration
257//-------------------------------------------------
258
259static const ym2151_interface cvsd_ym2151_interface =
260{
261   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, williams_cvsd_sound_device, ym2151_irq_w)
262};
263
264
265//-------------------------------------------------
266256//  machine configuration
267257//-------------------------------------------------
268258
r18510r18511
272262
273263   MCFG_PIA6821_ADD("pia", cvsd_pia_intf)
274264
275   MCFG_SOUND_ADD("ym2151", YM2151, CVSD_FM_CLOCK)
276   MCFG_SOUND_CONFIG(cvsd_ym2151_interface)
265   MCFG_YM2151_ADD("ym2151", CVSD_FM_CLOCK)
266   MCFG_YM2151_IRQ_HANDLER(WRITELINE(williams_cvsd_sound_device, ym2151_irq_w))
277267   MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.10)
278268
279269   MCFG_DAC_ADD("dac")
r18510r18511
566556
567557static ADDRESS_MAP_START( williams_narc_master_map, AS_PROGRAM, 8, williams_narc_sound_device )
568558   AM_RANGE(0x0000, 0x1fff) AM_RAM
569   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x03fe) AM_DEVREADWRITE_LEGACY("ym2151", ym2151_r, ym2151_w)
559   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x03fe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
570560   AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_WRITE(master_talkback_w)
571561   AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_WRITE(command2_w)
572562   AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_DEVWRITE("dac1", dac_device, write_unsigned8)
r18510r18511
597587
598588
599589//-------------------------------------------------
600//  YM2151 configuration
601//-------------------------------------------------
602
603static const ym2151_interface narc_ym2151_interface =
604{
605   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, williams_narc_sound_device, ym2151_irq_w)
606};
607
608
609//-------------------------------------------------
610590//  machine configuration
611591//-------------------------------------------------
612592
r18510r18511
617597   MCFG_CPU_ADD("cpu1", M6809E, NARC_MASTER_CLOCK)
618598   MCFG_CPU_PROGRAM_MAP(williams_narc_slave_map)
619599
620   MCFG_SOUND_ADD("ym2151", YM2151, NARC_FM_CLOCK)
621   MCFG_SOUND_CONFIG(narc_ym2151_interface)
600   MCFG_YM2151_ADD("ym2151", NARC_FM_CLOCK)
601   MCFG_YM2151_IRQ_HANDLER(WRITELINE(williams_narc_sound_device, ym2151_irq_w))
622602   MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.10)
623603
624604   MCFG_DAC_ADD("dac1")
r18510r18511
859839static ADDRESS_MAP_START( williams_adpcm_map, AS_PROGRAM, 8, williams_adpcm_sound_device )
860840   AM_RANGE(0x0000, 0x1fff) AM_RAM
861841   AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x03ff) AM_WRITE(bank_select_w)
862   AM_RANGE(0x2400, 0x2401) AM_MIRROR(0x03fe) AM_DEVREADWRITE_LEGACY("ym2151", ym2151_r, ym2151_w)
842   AM_RANGE(0x2400, 0x2401) AM_MIRROR(0x03fe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
863843   AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_DEVWRITE("dac", dac_device, write_unsigned8)
864844   AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_DEVREADWRITE("oki", okim6295_device, read, write)
865845   AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_READ(command_r)
r18510r18511
881861
882862
883863//-------------------------------------------------
884//  YM2151 configuration
885//-------------------------------------------------
886
887static const ym2151_interface adpcm_ym2151_interface =
888{
889   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, williams_adpcm_sound_device, ym2151_irq_w)
890};
891
892
893//-------------------------------------------------
894864//  machine configuration
895865//-------------------------------------------------
896866
r18510r18511
898868   MCFG_CPU_ADD("cpu", M6809E, ADPCM_MASTER_CLOCK)
899869   MCFG_CPU_PROGRAM_MAP(williams_adpcm_map)
900870
901   MCFG_SOUND_ADD("ym2151", YM2151, ADPCM_FM_CLOCK)
902   MCFG_SOUND_CONFIG(adpcm_ym2151_interface)
871   MCFG_YM2151_ADD("ym2151", ADPCM_FM_CLOCK)
872   MCFG_YM2151_IRQ_HANDLER(WRITELINE(williams_adpcm_sound_device, ym2151_irq_w))
903873   MCFG_SOUND_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.10)
904874
905875   MCFG_DAC_ADD("dac")
trunk/src/mame/audio/m72.c
r18510r18511
139139   setvector_callback(device->machine(), state, VECTOR_INIT);
140140}
141141
142void m72_ym2151_irq_handler(device_t *device, int irq)
142WRITE_LINE_DEVICE_HANDLER(m72_ym2151_irq_handler)
143143{
144144   device_t *audio = device->machine().device("m72");
145   m72_audio_state *state = get_safe_token(audio);
145   m72_audio_state *audstate = get_safe_token(audio);
146146
147   device->machine().scheduler().synchronize(FUNC(setvector_callback), irq ? YM2151_ASSERT : YM2151_CLEAR, state);
147   device->machine().scheduler().synchronize(FUNC(setvector_callback), state ? YM2151_ASSERT : YM2151_CLEAR, audstate);
148148}
149149
150150WRITE16_DEVICE_HANDLER( m72_sound_command_w )
trunk/src/mame/audio/m72.h
r18510r18511
44
55****************************************************************************/
66
7void m72_ym2151_irq_handler(device_t *device, int irq);
7WRITE_LINE_DEVICE_HANDLER(m72_ym2151_irq_handler);
88DECLARE_WRITE8_DEVICE_HANDLER( m72_sound_command_byte_w );
99DECLARE_WRITE16_DEVICE_HANDLER( m72_sound_command_w );
1010DECLARE_WRITE8_DEVICE_HANDLER( m72_sound_irq_ack_w );

Previous 199869 Revisions Next


© 1997-2024 The MAME Team