Previous 199869 Revisions Next

r22044 Saturday 23rd March, 2013 at 17:28:58 UTC by Andrew Gardner
Modernized k053260 device. [Andrew Gardner]
[src/emu/sound]k053260.c k053260.h
[src/mame/drivers]asterix.c overdriv.c parodius.c rollerg.c simpsons.c tmnt.c vendetta.c
[src/mame/machine]simpsons.c

trunk/src/emu/sound/k053260.c
r22043r22044
1313
1414#define BASE_SHIFT  16
1515
16struct k053260_channel
17{
18   UINT32      rate;
19   UINT32      size;
20   UINT32      start;
21   UINT32      bank;
22   UINT32      volume;
23   int         play;
24   UINT32      pan;
25   UINT32      pos;
26   int         loop;
27   int         ppcm; /* packed PCM ( 4 bit signed ) */
28   int         ppcm_data;
29};
3016
31struct k053260_state
32{
33   sound_stream *              channel;
34   int                         mode;
35   int                         regs[0x30];
36   UINT8                       *rom;
37   int                         rom_size;
38   UINT32                      *delta_table;
39   k053260_channel             channels[4];
40   const k053260_interface     *intf;
41   device_t                *device;
42};
17// device type definition
18const device_type K053260 = &device_creator<k053260_device>;
4319
44INLINE k053260_state *get_safe_token(device_t *device)
20
21//**************************************************************************
22//  LIVE DEVICE
23//**************************************************************************
24
25//-------------------------------------------------
26//  k053260_device - constructor
27//-------------------------------------------------
28
29k053260_device::k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
30   : device_t(mconfig, K053260, "K053260", tag, owner, clock),
31     device_sound_interface(mconfig, *this),
32     m_channel(NULL),
33     m_mode(0),
34     m_rom(NULL),
35     m_rom_size(0),
36     m_delta_table(NULL),
37     m_intf(NULL)
4538{
46   assert(device != NULL);
47   assert(device->type() == K053260);
48   return (k053260_state *)downcast<k053260_device *>(device)->token();
39   memset(m_regs, 0, sizeof(int)*0x30);
4940}
5041
5142
52static void InitDeltaTable( k053260_state *ic, int rate, int clock )
43//-------------------------------------------------
44//  device_start - device-specific startup
45//-------------------------------------------------
46
47void k053260_device::device_start()
5348{
54   int     i;
55   double  base = ( double )rate;
56   double  max = (double)(clock); /* Hz */
57   UINT32 val;
49   static const k053260_interface defintrf = { 0 };
50   int rate = clock() / 32;
51   int i;
5852
59   for( i = 0; i < 0x1000; i++ ) {
60      double v = ( double )( 0x1000 - i );
61      double target = (max) / v;
62      double fixed = ( double )( 1 << BASE_SHIFT );
53   /* Initialize our chip structure */
54   m_intf = (static_config() != NULL) ? (const k053260_interface *)static_config() : &defintrf;
6355
64      if ( target && base ) {
65         target = fixed / ( base / target );
66         val = ( UINT32 )target;
67         if ( val == 0 )
68            val = 1;
69      } else
70         val = 1;
56   m_mode = 0;
7157
72      ic->delta_table[i] = val;
58   memory_region *region = (m_intf->rgnoverride != NULL) ? memregion(m_intf->rgnoverride) : this->region();
59
60   m_rom = *region;
61   m_rom_size = region->bytes();
62
63   device_reset();
64
65   for ( i = 0; i < 0x30; i++ )
66      m_regs[i] = 0;
67
68   m_delta_table = auto_alloc_array( machine(), UINT32, 0x1000 );
69
70   m_channel = stream_alloc( 0, 2, rate );
71
72   InitDeltaTable( rate, clock() );
73
74   /* register with the save state system */
75   save_item(NAME(m_mode));
76   save_item(NAME(m_regs));
77
78   for ( i = 0; i < 4; i++ )
79   {
80      save_item(NAME(m_channels[i].rate), i);
81      save_item(NAME(m_channels[i].size), i);
82      save_item(NAME(m_channels[i].start), i);
83      save_item(NAME(m_channels[i].bank), i);
84      save_item(NAME(m_channels[i].volume), i);
85      save_item(NAME(m_channels[i].play), i);
86      save_item(NAME(m_channels[i].pan), i);
87      save_item(NAME(m_channels[i].pos), i);
88      save_item(NAME(m_channels[i].loop), i);
89      save_item(NAME(m_channels[i].ppcm), i);
90      save_item(NAME(m_channels[i].ppcm_data), i);
7391   }
92
93   /* setup SH1 timer if necessary */
94   if ( m_intf->irq )
95      machine().scheduler().timer_pulse( attotime::from_hz(clock()) * 32, m_intf->irq, "m_intf->irq" );
7496}
7597
76static DEVICE_RESET( k053260 )
98
99//-------------------------------------------------
100//  device_reset - device-specific reset
101//-------------------------------------------------
102
103void k053260_device::device_reset()
77104{
78   k053260_state *ic = get_safe_token(device);
79105   int i;
80106
81107   for( i = 0; i < 4; i++ ) {
82      ic->channels[i].rate = 0;
83      ic->channels[i].size = 0;
84      ic->channels[i].start = 0;
85      ic->channels[i].bank = 0;
86      ic->channels[i].volume = 0;
87      ic->channels[i].play = 0;
88      ic->channels[i].pan = 0;
89      ic->channels[i].pos = 0;
90      ic->channels[i].loop = 0;
91      ic->channels[i].ppcm = 0;
92      ic->channels[i].ppcm_data = 0;
108      m_channels[i].rate = 0;
109      m_channels[i].size = 0;
110      m_channels[i].start = 0;
111      m_channels[i].bank = 0;
112      m_channels[i].volume = 0;
113      m_channels[i].play = 0;
114      m_channels[i].pan = 0;
115      m_channels[i].pos = 0;
116      m_channels[i].loop = 0;
117      m_channels[i].ppcm = 0;
118      m_channels[i].ppcm_data = 0;
93119   }
94120}
95121
122
96123INLINE int limit( int val, int max, int min )
97124{
98125   if ( val > max )
r22043r22044
106133#define MAXOUT 0x7fff
107134#define MINOUT -0x8000
108135
109static STREAM_UPDATE( k053260_update )
136//-------------------------------------------------
137//  sound_stream_update - handle a stream update
138//-------------------------------------------------
139
140void k053260_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
110141{
111142   static const long dpcmcnv[] = { 0,1,2,4,8,16,32,64, -128, -64, -32, -16, -8, -4, -2, -1};
112143
r22043r22044
115146   UINT32 delta[4], end[4], pos[4];
116147   int dataL, dataR;
117148   signed char d;
118   k053260_state *ic = (k053260_state *)param;
119149
120150   /* precache some values */
121151   for ( i = 0; i < 4; i++ ) {
122      rom[i]= &ic->rom[ic->channels[i].start + ( ic->channels[i].bank << 16 )];
123      delta[i] = ic->delta_table[ic->channels[i].rate];
124      lvol[i] = ic->channels[i].volume * ic->channels[i].pan;
125      rvol[i] = ic->channels[i].volume * ( 8 - ic->channels[i].pan );
126      end[i] = ic->channels[i].size;
127      pos[i] = ic->channels[i].pos;
128      play[i] = ic->channels[i].play;
129      loop[i] = ic->channels[i].loop;
130      ppcm[i] = ic->channels[i].ppcm;
131      ppcm_data[i] = ic->channels[i].ppcm_data;
152      rom[i]= &m_rom[m_channels[i].start + ( m_channels[i].bank << 16 )];
153      delta[i] = m_delta_table[m_channels[i].rate];
154      lvol[i] = m_channels[i].volume * m_channels[i].pan;
155      rvol[i] = m_channels[i].volume * ( 8 - m_channels[i].pan );
156      end[i] = m_channels[i].size;
157      pos[i] = m_channels[i].pos;
158      play[i] = m_channels[i].play;
159      loop[i] = m_channels[i].loop;
160      ppcm[i] = m_channels[i].ppcm;
161      ppcm_data[i] = m_channels[i].ppcm_data;
132162      if ( ppcm[i] )
133163         delta[i] /= 2;
134164   }
r22043r22044
184214                  pos[i] += delta[i];
185215               }
186216
187               if ( ic->mode & 2 ) {
217               if ( m_mode & 2 ) {
188218                  dataL += ( d * lvol[i] ) >> 2;
189219                  dataR += ( d * rvol[i] ) >> 2;
190220               }
r22043r22044
197227
198228   /* update the regs now */
199229   for ( i = 0; i < 4; i++ ) {
200      ic->channels[i].pos = pos[i];
201      ic->channels[i].play = play[i];
202      ic->channels[i].ppcm_data = ppcm_data[i];
230      m_channels[i].pos = pos[i];
231      m_channels[i].play = play[i];
232      m_channels[i].ppcm_data = ppcm_data[i];
203233   }
204234}
205235
206static DEVICE_START( k053260 )
236
237void k053260_device::InitDeltaTable( int rate, int clock )
207238{
208   static const k053260_interface defintrf = { 0 };
209   k053260_state *ic = get_safe_token(device);
210   int rate = device->clock() / 32;
211   int i;
239   int     i;
240   double  base = ( double )rate;
241   double  max = (double)(clock); /* Hz */
242   UINT32 val;
212243
213   /* Initialize our chip structure */
214   ic->device = device;
215   ic->intf = (device->static_config() != NULL) ? (const k053260_interface *)device->static_config() : &defintrf;
244   for( i = 0; i < 0x1000; i++ ) {
245      double v = ( double )( 0x1000 - i );
246      double target = (max) / v;
247      double fixed = ( double )( 1 << BASE_SHIFT );
216248
217   ic->mode = 0;
249      if ( target && base ) {
250         target = fixed / ( base / target );
251         val = ( UINT32 )target;
252         if ( val == 0 )
253            val = 1;
254      } else
255         val = 1;
218256
219   memory_region *region = (ic->intf->rgnoverride != NULL) ? device->machine().root_device().memregion(ic->intf->rgnoverride) : device->region();
220
221   ic->rom = *region;
222   ic->rom_size = region->bytes();
223
224   DEVICE_RESET_CALL(k053260);
225
226   for ( i = 0; i < 0x30; i++ )
227      ic->regs[i] = 0;
228
229   ic->delta_table = auto_alloc_array( device->machine(), UINT32, 0x1000 );
230
231   ic->channel = device->machine().sound().stream_alloc( *device, 0, 2, rate, ic, k053260_update );
232
233   InitDeltaTable( ic, rate, device->clock() );
234
235   /* register with the save state system */
236   device->save_item(NAME(ic->mode));
237   device->save_item(NAME(ic->regs));
238
239   for ( i = 0; i < 4; i++ )
240   {
241      device->save_item(NAME(ic->channels[i].rate), i);
242      device->save_item(NAME(ic->channels[i].size), i);
243      device->save_item(NAME(ic->channels[i].start), i);
244      device->save_item(NAME(ic->channels[i].bank), i);
245      device->save_item(NAME(ic->channels[i].volume), i);
246      device->save_item(NAME(ic->channels[i].play), i);
247      device->save_item(NAME(ic->channels[i].pan), i);
248      device->save_item(NAME(ic->channels[i].pos), i);
249      device->save_item(NAME(ic->channels[i].loop), i);
250      device->save_item(NAME(ic->channels[i].ppcm), i);
251      device->save_item(NAME(ic->channels[i].ppcm_data), i);
257      m_delta_table[i] = val;
252258   }
253
254   /* setup SH1 timer if necessary */
255   if ( ic->intf->irq )
256      device->machine().scheduler().timer_pulse( attotime::from_hz(device->clock()) * 32, ic->intf->irq, "ic->intf->irq" );
257259}
258260
259INLINE void check_bounds( k053260_state *ic, int channel )
261
262void k053260_device::check_bounds( int channel )
260263{
261   int channel_start = ( ic->channels[channel].bank << 16 ) + ic->channels[channel].start;
262   int channel_end = channel_start + ic->channels[channel].size - 1;
264   int channel_start = ( m_channels[channel].bank << 16 ) + m_channels[channel].start;
265   int channel_end = channel_start + m_channels[channel].size - 1;
263266
264   if ( channel_start > ic->rom_size ) {
267   if ( channel_start > m_rom_size ) {
265268      logerror("K53260: Attempting to start playing past the end of the ROM ( start = %06x, end = %06x ).\n", channel_start, channel_end );
266269
267      ic->channels[channel].play = 0;
270      m_channels[channel].play = 0;
268271
269272      return;
270273   }
271274
272   if ( channel_end > ic->rom_size ) {
275   if ( channel_end > m_rom_size ) {
273276      logerror("K53260: Attempting to play past the end of the ROM ( start = %06x, end = %06x ).\n", channel_start, channel_end );
274277
275      ic->channels[channel].size = ic->rom_size - channel_start;
278      m_channels[channel].size = m_rom_size - channel_start;
276279   }
277   if (LOG) logerror("K053260: Sample Start = %06x, Sample End = %06x, Sample rate = %04x, PPCM = %s\n", channel_start, channel_end, ic->channels[channel].rate, ic->channels[channel].ppcm ? "yes" : "no" );
280   if (LOG) logerror("K053260: Sample Start = %06x, Sample End = %06x, Sample rate = %04x, PPCM = %s\n", channel_start, channel_end, m_channels[channel].rate, m_channels[channel].ppcm ? "yes" : "no" );
278281}
279282
280WRITE8_DEVICE_HANDLER( k053260_w )
283
284WRITE8_MEMBER( k053260_device::k053260_w )
281285{
282286   int i, t;
283287   int r = offset;
284288   int v = data;
285289
286   k053260_state *ic = get_safe_token(device);
287
288290   if ( r > 0x2f ) {
289291      logerror("K053260: Writing past registers\n" );
290292      return;
291293   }
292294
293      ic->channel->update();
295      m_channel->update();
294296
295297   /* before we update the regs, we need to check for a latched reg */
296298   if ( r == 0x28 ) {
297      t = ic->regs[r] ^ v;
299      t = m_regs[r] ^ v;
298300
299301      for ( i = 0; i < 4; i++ ) {
300302         if ( t & ( 1 << i ) ) {
301303            if ( v & ( 1 << i ) ) {
302               ic->channels[i].play = 1;
303               ic->channels[i].pos = 0;
304               ic->channels[i].ppcm_data = 0;
305               check_bounds( ic, i );
304               m_channels[i].play = 1;
305               m_channels[i].pos = 0;
306               m_channels[i].ppcm_data = 0;
307               check_bounds( i );
306308            } else
307               ic->channels[i].play = 0;
309               m_channels[i].play = 0;
308310         }
309311      }
310312
311      ic->regs[r] = v;
313      m_regs[r] = v;
312314      return;
313315   }
314316
315317   /* update regs */
316   ic->regs[r] = v;
318   m_regs[r] = v;
317319
318320   /* communication registers */
319321   if ( r < 8 )
r22043r22044
325327
326328      switch ( ( r - 8 ) & 0x07 ) {
327329         case 0: /* sample rate low */
328            ic->channels[channel].rate &= 0x0f00;
329            ic->channels[channel].rate |= v;
330            m_channels[channel].rate &= 0x0f00;
331            m_channels[channel].rate |= v;
330332         break;
331333
332334         case 1: /* sample rate high */
333            ic->channels[channel].rate &= 0x00ff;
334            ic->channels[channel].rate |= ( v & 0x0f ) << 8;
335            m_channels[channel].rate &= 0x00ff;
336            m_channels[channel].rate |= ( v & 0x0f ) << 8;
335337         break;
336338
337339         case 2: /* size low */
338            ic->channels[channel].size &= 0xff00;
339            ic->channels[channel].size |= v;
340            m_channels[channel].size &= 0xff00;
341            m_channels[channel].size |= v;
340342         break;
341343
342344         case 3: /* size high */
343            ic->channels[channel].size &= 0x00ff;
344            ic->channels[channel].size |= v << 8;
345            m_channels[channel].size &= 0x00ff;
346            m_channels[channel].size |= v << 8;
345347         break;
346348
347349         case 4: /* start low */
348            ic->channels[channel].start &= 0xff00;
349            ic->channels[channel].start |= v;
350            m_channels[channel].start &= 0xff00;
351            m_channels[channel].start |= v;
350352         break;
351353
352354         case 5: /* start high */
353            ic->channels[channel].start &= 0x00ff;
354            ic->channels[channel].start |= v << 8;
355            m_channels[channel].start &= 0x00ff;
356            m_channels[channel].start |= v << 8;
355357         break;
356358
357359         case 6: /* bank */
358            ic->channels[channel].bank = v & 0xff;
360            m_channels[channel].bank = v & 0xff;
359361         break;
360362
361363         case 7: /* volume is 7 bits. Convert to 8 bits now. */
362            ic->channels[channel].volume = ( ( v & 0x7f ) << 1 ) | ( v & 1 );
364            m_channels[channel].volume = ( ( v & 0x7f ) << 1 ) | ( v & 1 );
363365         break;
364366      }
365367
r22043r22044
369371   switch( r ) {
370372      case 0x2a: /* loop, ppcm */
371373         for ( i = 0; i < 4; i++ )
372            ic->channels[i].loop = ( v & ( 1 << i ) ) != 0;
374            m_channels[i].loop = ( v & ( 1 << i ) ) != 0;
373375
374376         for ( i = 4; i < 8; i++ )
375            ic->channels[i-4].ppcm = ( v & ( 1 << i ) ) != 0;
377            m_channels[i-4].ppcm = ( v & ( 1 << i ) ) != 0;
376378      break;
377379
378380      case 0x2c: /* pan */
379         ic->channels[0].pan = v & 7;
380         ic->channels[1].pan = ( v >> 3 ) & 7;
381         m_channels[0].pan = v & 7;
382         m_channels[1].pan = ( v >> 3 ) & 7;
381383      break;
382384
383385      case 0x2d: /* more pan */
384         ic->channels[2].pan = v & 7;
385         ic->channels[3].pan = ( v >> 3 ) & 7;
386         m_channels[2].pan = v & 7;
387         m_channels[3].pan = ( v >> 3 ) & 7;
386388      break;
387389
388390      case 0x2f: /* control */
389         ic->mode = v & 7;
391         m_mode = v & 7;
390392         /* bit 0 = read ROM */
391393         /* bit 1 = enable sound output */
392394         /* bit 2 = unknown */
r22043r22044
394396   }
395397}
396398
397READ8_DEVICE_HANDLER( k053260_r )
399READ8_MEMBER( k053260_device::k053260_r )
398400{
399   k053260_state *ic = get_safe_token(device);
400
401401   switch ( offset ) {
402402      case 0x29: /* channel status */
403403         {
404404            int i, status = 0;
405405
406406            for ( i = 0; i < 4; i++ )
407               status |= ic->channels[i].play << i;
407               status |= m_channels[i].play << i;
408408
409409            return status;
410410         }
411411      break;
412412
413413      case 0x2e: /* read ROM */
414         if ( ic->mode & 1 )
414         if ( m_mode & 1 )
415415         {
416            UINT32 offs = ic->channels[0].start + ( ic->channels[0].pos >> BASE_SHIFT ) + ( ic->channels[0].bank << 16 );
416            UINT32 offs = m_channels[0].start + ( m_channels[0].pos >> BASE_SHIFT ) + ( m_channels[0].bank << 16 );
417417
418            ic->channels[0].pos += ( 1 << 16 );
418            m_channels[0].pos += ( 1 << 16 );
419419
420            if ( offs > ic->rom_size ) {
421               logerror("%s: K53260: Attempting to read past ROM size in ROM Read Mode (offs = %06x, size = %06x).\n", device->machine().describe_context(),offs,ic->rom_size );
420            if ( offs > m_rom_size ) {
421               logerror("%s: K53260: Attempting to read past ROM size in ROM Read Mode (offs = %06x, size = %06x).\n", machine().describe_context(),offs,m_rom_size );
422422
423423               return 0;
424424            }
425425
426            return ic->rom[offs];
426            return m_rom[offs];
427427         }
428428      break;
429429   }
430430
431   return ic->regs[offset];
431   return m_regs[offset];
432432}
433
434const device_type K053260 = &device_creator<k053260_device>;
435
436k053260_device::k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
437   : device_t(mconfig, K053260, "K053260", tag, owner, clock),
438      device_sound_interface(mconfig, *this)
439{
440   m_token = global_alloc_clear(k053260_state);
441}
442
443//-------------------------------------------------
444//  device_config_complete - perform any
445//  operations now that the configuration is
446//  complete
447//-------------------------------------------------
448
449void k053260_device::device_config_complete()
450{
451}
452
453//-------------------------------------------------
454//  device_start - device-specific startup
455//-------------------------------------------------
456
457void k053260_device::device_start()
458{
459   DEVICE_START_NAME( k053260 )(this);
460}
461
462//-------------------------------------------------
463//  device_reset - device-specific reset
464//-------------------------------------------------
465
466void k053260_device::device_reset()
467{
468   DEVICE_RESET_NAME( k053260 )(this);
469}
470
471//-------------------------------------------------
472//  sound_stream_update - handle a stream update
473//-------------------------------------------------
474
475void k053260_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
476{
477   // should never get here
478   fatalerror("sound_stream_update called; not applicable to legacy sound devices\n");
479}
trunk/src/emu/sound/k053260.h
r22043r22044
99#ifndef __K053260_H__
1010#define __K053260_H__
1111
12#include "devlegcy.h"
1312
14struct k053260_interface {
13//**************************************************************************
14//  INTERFACE CONFIGURATION MACROS
15//**************************************************************************
16
17#define MCFG_K053260_ADD(_tag, _clock) \
18   MCFG_DEVICE_ADD(_tag, K053260, _clock)
19#define MCFG_K053260_REPLACE(_tag, _clock) \
20   MCFG_DEVICE_REPLACE(_tag, K053260, _clock)
21
22
23//**************************************************************************
24//  TYPE DEFINITIONS
25//**************************************************************************
26
27struct k053260_interface
28{
1529   const char *rgnoverride;
1630   timer_expired_func irq;         /* called on SH1 complete cycle ( clock / 32 ) */
1731};
1832
1933
20DECLARE_WRITE8_DEVICE_HANDLER( k053260_w );
21DECLARE_READ8_DEVICE_HANDLER( k053260_r );
34struct k053260_channel
35{
36    k053260_channel() :
37     rate(0),
38     size(0),
39     start(0),
40     bank(0),
41     volume(0),
42     play(0),
43     pan(0),
44     pos(0),
45     loop(0),
46     ppcm(0),
47     ppcm_data(0) {}
48   
49   UINT32      rate;
50   UINT32      size;
51   UINT32      start;
52   UINT32      bank;
53   UINT32      volume;
54   int         play;
55   UINT32      pan;
56   UINT32      pos;
57   int         loop;
58   int         ppcm; /* packed PCM ( 4 bit signed ) */
59   int         ppcm_data;
60};
2261
62
63// ======================> k053260_device
64
2365class k053260_device : public device_t,
24                           public device_sound_interface
66                  public device_sound_interface
2567{
2668public:
2769   k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
28   ~k053260_device() { global_free(m_token); }
70   ~k053260_device() { }
2971
30   // access to legacy token
31   void *token() const { assert(m_token != NULL); return m_token; }
3272protected:
3373   // device-level overrides
34   virtual void device_config_complete();
3574   virtual void device_start();
3675   virtual void device_reset();
3776
3877   // sound stream update overrides
3978   virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
79
80public:
81    DECLARE_WRITE8_MEMBER( k053260_w );
82    DECLARE_READ8_MEMBER( k053260_r );
83
4084private:
41   // internal state
42   void *m_token;
85    void InitDeltaTable( int rate, int clock );
86    void check_bounds( int channel );
87
88private:
89   sound_stream *              m_channel;
90   int                         m_mode;
91   int                         m_regs[0x30];
92   UINT8                       *m_rom;
93   int                         m_rom_size;
94   UINT32                      *m_delta_table;
95   k053260_channel             m_channels[4];
96   const k053260_interface     *m_intf;
4397};
4498
4599extern const device_type K053260;
trunk/src/mame/drivers/simpsons.c
r22043r22044
9696   AM_RANGE(0x1fc0, 0x1fc0) AM_WRITE(simpsons_coin_counter_w)
9797   AM_RANGE(0x1fc2, 0x1fc2) AM_WRITE(simpsons_eeprom_w)
9898   AM_RANGE(0x1fc4, 0x1fc4) AM_READ(simpsons_sound_interrupt_r)
99   AM_RANGE(0x1fc6, 0x1fc7) AM_READ(simpsons_sound_r) AM_DEVWRITE_LEGACY("k053260",k053260_w)
99   AM_RANGE(0x1fc6, 0x1fc7) AM_READ(simpsons_sound_r) AM_DEVWRITE("k053260", k053260_device, k053260_w)
100100   AM_RANGE(0x1fc8, 0x1fc9) AM_DEVREAD_LEGACY("k053246", k053246_r)
101101   AM_RANGE(0x1fca, 0x1fca) AM_READ(watchdog_reset_r)
102102   AM_RANGE(0x2000, 0x3fff) AM_RAMBANK("bank4")
r22043r22044
136136   AM_RANGE(0xf000, 0xf7ff) AM_RAM
137137   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
138138   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w)
139   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
139   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, k053260_r, k053260_w)
140140   AM_RANGE(0xfe00, 0xfe00) AM_WRITE(z80_bankswitch_w)
141141ADDRESS_MAP_END
142142
trunk/src/mame/drivers/asterix.c
r22043r22044
6363
6464READ8_MEMBER(asterix_state::asterix_sound_r)
6565{
66   device_t *device = machine().device("k053260");
67   return k053260_r(device, space, 2 + offset);
66   k053260_device *device = machine().device<k053260_device>("k053260");
67   return device->k053260_r(space, 2 + offset);
6868}
6969
7070TIMER_CALLBACK_MEMBER(asterix_state::nmi_callback)
r22043r22044
175175   AM_RANGE(0x380000, 0x380001) AM_READ_PORT("IN0")
176176   AM_RANGE(0x380002, 0x380003) AM_READ_PORT("IN1")
177177   AM_RANGE(0x380100, 0x380101) AM_WRITE(control2_w)
178   AM_RANGE(0x380200, 0x380203) AM_READ8(asterix_sound_r, 0x00ff) AM_DEVWRITE8_LEGACY("k053260", k053260_w, 0x00ff)
178   AM_RANGE(0x380200, 0x380203) AM_READ8(asterix_sound_r, 0x00ff) AM_DEVWRITE8("k053260", k053260_device, k053260_w, 0x00ff)
179179   AM_RANGE(0x380300, 0x380301) AM_WRITE(sound_irq_w)
180180   AM_RANGE(0x380400, 0x380401) AM_WRITE(asterix_spritebank_w)
181181   AM_RANGE(0x380500, 0x38051f) AM_DEVWRITE_LEGACY("k053251", k053251_lsb_w)
r22043r22044
191191   AM_RANGE(0x0000, 0xefff) AM_ROM
192192   AM_RANGE(0xf000, 0xf7ff) AM_RAM
193193   AM_RANGE(0xf801, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, data_w)
194   AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
194   AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE("k053260", k053260_device, k053260_r, k053260_w)
195195   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
196196   AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE("ymsnd", ym2151_device, register_w)
197197ADDRESS_MAP_END
r22043r22044
316316   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
317317   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
318318
319   MCFG_SOUND_ADD("k053260", K053260, 4000000)
319   MCFG_K053260_ADD("k053260", 4000000)
320320   MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
321321   MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
322322MACHINE_CONFIG_END
trunk/src/mame/drivers/overdriv.c
r22043r22044
133133
134134READ8_MEMBER(overdriv_state::overdriv_1_sound_r)
135135{
136   device_t *device = machine().device("k053260_1");
137   return k053260_r(device, space, 2 + offset);
136   k053260_device *device = machine().device<k053260_device>("k053260_1");
137   return device->k053260_r(space, 2 + offset);
138138}
139139
140140READ8_MEMBER(overdriv_state::overdriv_2_sound_r)
141141{
142   device_t *device = machine().device("k053260_2");
143   return k053260_r(device, space, 2 + offset);
142   k053260_device *device = machine().device<k053260_device>("k053260_2");
143   return device->k053260_r(space, 2 + offset);
144144}
145145
146146WRITE16_MEMBER(overdriv_state::overdriv_soundirq_w)
r22043r22044
171171   AM_RANGE(0x1c0000, 0x1c001f) AM_DEVWRITE8_LEGACY("k051316_1", k051316_ctrl_w, 0xff00)
172172   AM_RANGE(0x1c8000, 0x1c801f) AM_DEVWRITE8_LEGACY("k051316_2", k051316_ctrl_w, 0xff00)
173173   AM_RANGE(0x1d0000, 0x1d001f) AM_DEVWRITE_LEGACY("k053251", k053251_msb_w)
174   AM_RANGE(0x1d8000, 0x1d8003) AM_READ8(overdriv_1_sound_r, 0x00ff) AM_DEVWRITE8_LEGACY("k053260_1", k053260_w, 0x00ff)   /* K053260 */
175   AM_RANGE(0x1e0000, 0x1e0003) AM_READ8(overdriv_2_sound_r, 0x00ff) AM_DEVWRITE8_LEGACY("k053260_2", k053260_w, 0x00ff)   /* K053260 */
174   AM_RANGE(0x1d8000, 0x1d8003) AM_READ8(overdriv_1_sound_r, 0x00ff) AM_DEVWRITE8("k053260_1", k053260_device, k053260_w, 0x00ff)   /* K053260 */
175   AM_RANGE(0x1e0000, 0x1e0003) AM_READ8(overdriv_2_sound_r, 0x00ff) AM_DEVWRITE8("k053260_2", k053260_device, k053260_w, 0x00ff)   /* K053260 */
176176   AM_RANGE(0x1e8000, 0x1e8001) AM_WRITE(overdriv_soundirq_w)
177177   AM_RANGE(0x1f0000, 0x1f0001) AM_WRITE(cpuA_ctrl_w)  /* halt cpu B, coin counter, start lamp, other? */
178178   AM_RANGE(0x1f8000, 0x1f8001) AM_WRITE(eeprom_w)
r22043r22044
203203
204204static ADDRESS_MAP_START( overdriv_sound_map, AS_PROGRAM, 8, overdriv_state )
205205   AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
206   AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE_LEGACY("k053260_1", k053260_r, k053260_w)
207   AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE_LEGACY("k053260_2", k053260_r, k053260_w)
206   AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("k053260_1", k053260_device, k053260_r, k053260_w)
207   AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE("k053260_2", k053260_device, k053260_r, k053260_w)
208208   AM_RANGE(0x0800, 0x0fff) AM_RAM
209209   AM_RANGE(0x1000, 0xffff) AM_ROM
210210ADDRESS_MAP_END
r22043r22044
370370   MCFG_SOUND_ROUTE(0, "lspeaker", 0.5)
371371   MCFG_SOUND_ROUTE(1, "rspeaker", 0.5)
372372
373   MCFG_SOUND_ADD("k053260_1", K053260, 3579545)
373   MCFG_K053260_ADD("k053260_1", 3579545)
374374   MCFG_SOUND_CONFIG(k053260_config)
375375   MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
376376   MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
377377
378   MCFG_SOUND_ADD("k053260_2", K053260, 3579545)
378   MCFG_K053260_ADD("k053260_2", 3579545)
379379   MCFG_SOUND_CONFIG(k053260_config)
380380   MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
381381   MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
trunk/src/mame/drivers/parodius.c
r22043r22044
9595
9696READ8_MEMBER(parodius_state::parodius_sound_r)
9797{
98   device_t *device = machine().device("k053260");
99   return k053260_r(device, space, 2 + offset);
98   k053260_device *device = machine().device<k053260_device>("k053260");
99   return device->k053260_r(space, 2 + offset);
100100}
101101
102102WRITE8_MEMBER(parodius_state::parodius_sh_irqtrigger_w)
r22043r22044
140140   AM_RANGE(0x3fc0, 0x3fc0) AM_READ(watchdog_reset_r) AM_WRITE(parodius_3fc0_w)
141141   AM_RANGE(0x3fc4, 0x3fc4) AM_WRITE(parodius_videobank_w)
142142   AM_RANGE(0x3fc8, 0x3fc8) AM_WRITE(parodius_sh_irqtrigger_w)
143   AM_RANGE(0x3fcc, 0x3fcd) AM_READ(parodius_sound_r) AM_DEVWRITE_LEGACY("k053260", k053260_w) /* K053260 */
143   AM_RANGE(0x3fcc, 0x3fcd) AM_READ(parodius_sound_r) AM_DEVWRITE("k053260", k053260_device, k053260_w) /* K053260 */
144144   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(parodius_052109_053245_r, parodius_052109_053245_w)
145145   AM_RANGE(0x2000, 0x5fff) AM_DEVREADWRITE_LEGACY("k052109", k052109_r, k052109_w)
146146   AM_RANGE(0x6000, 0x9fff) AM_ROMBANK("bank1")            /* banked ROM */
r22043r22044
152152   AM_RANGE(0xf000, 0xf7ff) AM_RAM
153153   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
154154   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
155   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r,k053260_w)
155   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, k053260_r, k053260_w)
156156ADDRESS_MAP_END
157157
158158
r22043r22044
309309   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
310310   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
311311
312   MCFG_SOUND_ADD("k053260", K053260, 3579545)
312   MCFG_K053260_ADD("k053260", 3579545)
313313   MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
314314   MCFG_SOUND_ROUTE(1, "rspeaker", 0.70)
315315MACHINE_CONFIG_END
trunk/src/mame/drivers/vendetta.c
r22043r22044
219219
220220READ8_MEMBER(vendetta_state::vendetta_sound_r)
221221{
222   device_t *device = machine().device("k053260");
223   return k053260_r(device, space, 2 + offset);
222   k053260_device *device = machine().device<k053260_device>("k053260");
223   return device->k053260_r(space, 2 + offset);
224224}
225225
226226/********************************************/
r22043r22044
240240   AM_RANGE(0x5fe0, 0x5fe0) AM_WRITE(vendetta_5fe0_w)
241241   AM_RANGE(0x5fe2, 0x5fe2) AM_WRITE(vendetta_eeprom_w)
242242   AM_RANGE(0x5fe4, 0x5fe4) AM_READWRITE(vendetta_sound_interrupt_r, z80_irq_w)
243   AM_RANGE(0x5fe6, 0x5fe7) AM_READ(vendetta_sound_r) AM_DEVWRITE_LEGACY("k053260", k053260_w)
243   AM_RANGE(0x5fe6, 0x5fe7) AM_READ(vendetta_sound_r) AM_DEVWRITE("k053260", k053260_device, k053260_w)
244244   AM_RANGE(0x5fe8, 0x5fe9) AM_DEVREAD_LEGACY("k053246", k053246_r)
245245   AM_RANGE(0x5fea, 0x5fea) AM_READ(watchdog_reset_r)
246246   /* what is the desired effect of overlapping these memory regions anyway? */
r22043r22044
264264   AM_RANGE(0x3fd0, 0x3fd0) AM_WRITE(vendetta_5fe0_w)      // Coin Counter, 052109 RMRD, 053246 OBJCHA
265265   AM_RANGE(0x3fd2, 0x3fd2) AM_WRITE(vendetta_eeprom_w)    // EEPROM, Video banking
266266   AM_RANGE(0x3fd4, 0x3fd4) AM_READWRITE(vendetta_sound_interrupt_r, z80_irq_w)            // Sound
267   AM_RANGE(0x3fd6, 0x3fd7) AM_READ(vendetta_sound_r) AM_DEVWRITE_LEGACY("k053260", k053260_w)     // Sound
267   AM_RANGE(0x3fd6, 0x3fd7) AM_READ(vendetta_sound_r) AM_DEVWRITE("k053260", k053260_device, k053260_w)     // Sound
268268   AM_RANGE(0x3fd8, 0x3fd9) AM_DEVREAD_LEGACY("k053246", k053246_r)                // 053246 (Sprite)
269269   AM_RANGE(0x3fda, 0x3fda) AM_WRITENOP                // Not Emulated (Watchdog ???)
270270   /* what is the desired effect of overlapping these memory regions anyway? */
r22043r22044
281281   AM_RANGE(0xf000, 0xf7ff) AM_RAM
282282   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
283283   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w)
284   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
284   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, k053260_r, k053260_w)
285285ADDRESS_MAP_END
286286
287287
r22043r22044
531531   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
532532   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
533533
534   MCFG_SOUND_ADD("k053260", K053260, XTAL_3_579545MHz)    /* verified with PCB */
534   MCFG_K053260_ADD("k053260", XTAL_3_579545MHz)    /* verified with PCB */
535535   MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
536536   MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
537537MACHINE_CONFIG_END
trunk/src/mame/drivers/tmnt.c
r22043r22044
185185
186186READ8_MEMBER(tmnt_state::punkshot_sound_r)
187187{
188   device_t *device = machine().device("k053260");
189188   /* If the sound CPU is running, read the status, otherwise
190189      just make it pass the test */
191   return k053260_r(device, space, 2 + offset);
190   k053260_device *device = machine().device<k053260_device>("k053260");
191   return device->k053260_r(space, 2 + offset);
192192}
193193
194194WRITE8_MEMBER(tmnt_state::glfgreat_sound_w)
195195{
196   device_t *device = machine().device("k053260");
197   k053260_w(device, space, offset, data);
196   k053260_device *device = machine().device<k053260_device>("k053260");
197   device->k053260_w(space, offset, data);
198198
199199   if (offset)
200200      m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
r22043r22044
614614   AM_RANGE(0x0a0006, 0x0a0007) AM_READ_PORT("P1/P2")
615615   AM_RANGE(0x0a0020, 0x0a0021) AM_WRITE(punkshot_0a0020_w)
616616   AM_RANGE(0x0a0040, 0x0a0043) AM_READ8(punkshot_sound_r, 0x00ff) /* K053260 */
617   AM_RANGE(0x0a0040, 0x0a0041) AM_DEVWRITE8_LEGACY("k053260", k053260_w, 0x00ff)
617   AM_RANGE(0x0a0040, 0x0a0041) AM_DEVWRITE8("k053260", k053260_device, k053260_w, 0x00ff)
618618   AM_RANGE(0x0a0060, 0x0a007f) AM_DEVWRITE_LEGACY("k053251", k053251_lsb_w)
619619   AM_RANGE(0x0a0080, 0x0a0081) AM_WRITE(watchdog_reset16_w)
620620   AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, punkshot_k052109_word_noA12_w)
r22043r22044
636636   AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW3")
637637   AM_RANGE(0x0a0018, 0x0a0019) AM_WRITE(lgtnfght_0a0018_w)
638638   AM_RANGE(0x0a0020, 0x0a0023) AM_READ8(punkshot_sound_r, 0x00ff) /* K053260 */
639   AM_RANGE(0x0a0020, 0x0a0021) AM_DEVWRITE8_LEGACY("k053260", k053260_w, 0x00ff)
639   AM_RANGE(0x0a0020, 0x0a0021) AM_DEVWRITE8("k053260", k053260_device, k053260_w, 0x00ff)
640640   AM_RANGE(0x0a0028, 0x0a0029) AM_WRITE(watchdog_reset16_w)
641641   AM_RANGE(0x0b0000, 0x0b3fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram")
642642   AM_RANGE(0x0c0000, 0x0c001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w)
r22043r22044
667667   AM_RANGE(0x700300, 0x700301) AM_WRITE(blswhstl_700300_w)
668668   AM_RANGE(0x700400, 0x700401) AM_WRITE(watchdog_reset16_w)
669669   AM_RANGE(0x780600, 0x780603) AM_READ8(punkshot_sound_r, 0x00ff) /* K053260 */
670   AM_RANGE(0x780600, 0x780601) AM_DEVWRITE8_LEGACY("k053260", k053260_w, 0x00ff)
670   AM_RANGE(0x780600, 0x780601) AM_DEVWRITE8("k053260", k053260_device, k053260_w, 0x00ff)
671671   AM_RANGE(0x780604, 0x780605) AM_WRITE(ssriders_soundkludge_w)
672672   AM_RANGE(0x780700, 0x78071f) AM_DEVWRITE_LEGACY("k053251", k053251_lsb_w)
673673ADDRESS_MAP_END
r22043r22044
996996   AM_RANGE(0x1c0800, 0x1c081f) AM_WRITE(tmnt2_1c0800_w) AM_SHARE("tmnt2_1c0800")  /* protection device */
997997   AM_RANGE(0x5a0000, 0x5a001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w)
998998   AM_RANGE(0x5c0600, 0x5c0603) AM_READ8(punkshot_sound_r, 0x00ff) /* K053260 */
999   AM_RANGE(0x5c0600, 0x5c0601) AM_DEVWRITE8_LEGACY("k053260", k053260_w, 0x00ff)
999   AM_RANGE(0x5c0600, 0x5c0601) AM_DEVWRITE8("k053260", k053260_device, k053260_w, 0x00ff)
10001000   AM_RANGE(0x5c0604, 0x5c0605) AM_WRITE(ssriders_soundkludge_w)
10011001   AM_RANGE(0x5c0700, 0x5c071f) AM_DEVWRITE_LEGACY("k053251", k053251_lsb_w)
10021002   AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE_LEGACY("k052109", k052109_word_r, k052109_word_w)
r22043r22044
10221022   AM_RANGE(0x1c0800, 0x1c0803) AM_WRITE(ssriders_protection_w)
10231023   AM_RANGE(0x5a0000, 0x5a001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w)
10241024   AM_RANGE(0x5c0600, 0x5c0603) AM_READ8(punkshot_sound_r, 0x00ff) /* K053260 */
1025   AM_RANGE(0x5c0600, 0x5c0601) AM_DEVWRITE8_LEGACY("k053260", k053260_w, 0x00ff)
1025   AM_RANGE(0x5c0600, 0x5c0601) AM_DEVWRITE8("k053260", k053260_device, k053260_w, 0x00ff)
10261026   AM_RANGE(0x5c0604, 0x5c0605) AM_WRITE(ssriders_soundkludge_w)
10271027   AM_RANGE(0x5c0700, 0x5c071f) AM_DEVWRITE_LEGACY("k053251", k053251_lsb_w)
10281028   AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE_LEGACY("k052109", k052109_word_r, k052109_word_w)
r22043r22044
10611061   AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
10621062   AM_RANGE(0x300000, 0x30001f) AM_DEVWRITE_LEGACY("k053251", k053251_lsb_w)
10631063   AM_RANGE(0x400000, 0x400003) AM_READ8(punkshot_sound_r, 0x00ff) /* K053260 */
1064   AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8_LEGACY("k053260", k053260_w, 0x00ff)
1064   AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("k053260", k053260_device, k053260_w, 0x00ff)
10651065   AM_RANGE(0x500000, 0x50003f) AM_DEVREADWRITE_LEGACY("k054000", k054000_lsb_r, k054000_lsb_w)
10661066   AM_RANGE(0x500100, 0x500101) AM_WRITE(thndrx2_eeprom_w)
10671067   AM_RANGE(0x500200, 0x500201) AM_READ_PORT("P1/COINS")
r22043r22044
11011101   AM_RANGE(0xf000, 0xf7ff) AM_RAM
11021102   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
11031103   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
1104   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
1104   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, k053260_r, k053260_w)
11051105ADDRESS_MAP_END
11061106
11071107
r22043r22044
11091109   AM_RANGE(0x0000, 0x7fff) AM_ROM
11101110   AM_RANGE(0x8000, 0x87ff) AM_RAM
11111111   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
1112   AM_RANGE(0xc000, 0xc02f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
1112   AM_RANGE(0xc000, 0xc02f) AM_DEVREADWRITE("k053260", k053260_device, k053260_r, k053260_w)
11131113ADDRESS_MAP_END
11141114
11151115
11161116static ADDRESS_MAP_START( glfgreat_audio_map, AS_PROGRAM, 8, tmnt_state )
11171117   AM_RANGE(0x0000, 0x7fff) AM_ROM
11181118   AM_RANGE(0xf000, 0xf7ff) AM_RAM
1119   AM_RANGE(0xf800, 0xf82f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
1119   AM_RANGE(0xf800, 0xf82f) AM_DEVREADWRITE("k053260", k053260_device, k053260_r, k053260_w)
11201120   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
11211121ADDRESS_MAP_END
11221122
r22043r22044
11251125   AM_RANGE(0x0000, 0xefff) AM_ROM
11261126   AM_RANGE(0xf000, 0xf7ff) AM_RAM
11271127   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
1128   AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
1128   AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE("k053260", k053260_device, k053260_r, k053260_w)
11291129   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
11301130ADDRESS_MAP_END
11311131
r22043r22044
11351135   AM_RANGE(0xf000, 0xf7ff) AM_RAM
11361136   AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x0010) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
11371137   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
1138   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
1138   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, k053260_r, k053260_w)
11391139ADDRESS_MAP_END
11401140
11411141
r22043r22044
23912391   MCFG_SOUND_ROUTE(0, "mono", 1.0)
23922392   MCFG_SOUND_ROUTE(1, "mono", 1.0)
23932393
2394   MCFG_SOUND_ADD("k053260", K053260, XTAL_3_579545MHz)
2394   MCFG_K053260_ADD("k053260", XTAL_3_579545MHz)
23952395   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
23962396MACHINE_CONFIG_END
23972397
r22043r22044
24342434   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
24352435   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
24362436
2437   MCFG_SOUND_ADD("k053260", K053260, XTAL_3_579545MHz)
2437   MCFG_K053260_ADD("k053260", XTAL_3_579545MHz)
24382438   MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
24392439   MCFG_SOUND_ROUTE(1, "rspeaker", 0.70)
24402440MACHINE_CONFIG_END
r22043r22044
24832483   MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
24842484   MCFG_SOUND_ROUTE(1, "rspeaker", 0.70)
24852485
2486   MCFG_SOUND_ADD("k053260", K053260, XTAL_3_579545MHz)
2486   MCFG_K053260_ADD("k053260", XTAL_3_579545MHz)
24872487   MCFG_SOUND_ROUTE(0, "rspeaker", 0.50)   /* fixed inverted stereo channels */
24882488   MCFG_SOUND_ROUTE(1, "lspeaker", 0.50)
24892489MACHINE_CONFIG_END
r22043r22044
25432543   /* sound hardware */
25442544   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
25452545
2546   MCFG_SOUND_ADD("k053260", K053260, XTAL_3_579545MHz)
2546   MCFG_K053260_ADD("k053260", XTAL_3_579545MHz)
25472547   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
25482548   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
25492549MACHINE_CONFIG_END
r22043r22044
26592659   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
26602660   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
26612661
2662   MCFG_SOUND_ADD("k053260", K053260, XTAL_3_579545MHz)
2662   MCFG_K053260_ADD("k053260", XTAL_3_579545MHz)
26632663   MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
26642664   MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
26652665MACHINE_CONFIG_END
r22043r22044
27062706   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
27072707   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
27082708
2709   MCFG_SOUND_ADD("k053260", K053260, XTAL_3_579545MHz)
2709   MCFG_K053260_ADD("k053260", XTAL_3_579545MHz)
27102710   MCFG_SOUND_ROUTE(0, "lspeaker", 0.70)
27112711   MCFG_SOUND_ROUTE(1, "rspeaker", 0.70)
27122712MACHINE_CONFIG_END
r22043r22044
27882788   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
27892789   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
27902790
2791   MCFG_SOUND_ADD("k053260", K053260, XTAL_3_579545MHz)
2791   MCFG_K053260_ADD("k053260", XTAL_3_579545MHz)
27922792   MCFG_SOUND_ROUTE(0, "lspeaker", 0.75)
27932793   MCFG_SOUND_ROUTE(1, "rspeaker", 0.75)
27942794MACHINE_CONFIG_END
trunk/src/mame/drivers/rollerg.c
r22043r22044
4949
5050READ8_MEMBER(rollerg_state::rollerg_sound_r)
5151{
52   device_t *device = machine().device("k053260");
5352   /* If the sound CPU is running, read the status, otherwise
5453      just make it pass the test */
55   return k053260_r(device, space, 2 + offset);
54   k053260_device *device = machine().device<k053260_device>("k053260");
55   return device->k053260_r(space, 2 + offset);
5656}
5757
5858WRITE8_MEMBER(rollerg_state::soundirq_w)
r22043r22044
7979static ADDRESS_MAP_START( rollerg_map, AS_PROGRAM, 8, rollerg_state )
8080   AM_RANGE(0x0010, 0x0010) AM_WRITE(rollerg_0010_w)
8181   AM_RANGE(0x0020, 0x0020) AM_READWRITE(watchdog_reset_r,watchdog_reset_w)
82   AM_RANGE(0x0030, 0x0031) AM_READ(rollerg_sound_r) AM_DEVWRITE_LEGACY("k053260", k053260_w)  /* K053260 */
82   AM_RANGE(0x0030, 0x0031) AM_READ(rollerg_sound_r) AM_DEVWRITE("k053260", k053260_device, k053260_w)  /* K053260 */
8383   AM_RANGE(0x0040, 0x0040) AM_WRITE(soundirq_w)
8484   AM_RANGE(0x0050, 0x0050) AM_READ_PORT("P1")
8585   AM_RANGE(0x0051, 0x0051) AM_READ_PORT("P2")
r22043r22044
101101static ADDRESS_MAP_START( rollerg_sound_map, AS_PROGRAM, 8, rollerg_state )
102102   AM_RANGE(0x0000, 0x7fff) AM_ROM
103103   AM_RANGE(0x8000, 0x87ff) AM_RAM
104   AM_RANGE(0xa000, 0xa02f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r,k053260_w)
104   AM_RANGE(0xa000, 0xa02f) AM_DEVREADWRITE("k053260", k053260_device, k053260_r, k053260_w)
105105   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE_LEGACY("ymsnd", ym3812_r,ym3812_w)
106106   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
107107ADDRESS_MAP_END
r22043r22044
303303   MCFG_SOUND_ADD("ymsnd", YM3812, 3579545)
304304   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
305305
306   MCFG_SOUND_ADD("k053260", K053260, 3579545)
306   MCFG_K053260_ADD("k053260", 3579545)
307307   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
308308MACHINE_CONFIG_END
309309
trunk/src/mame/machine/simpsons.c
r22043r22044
5151
5252READ8_MEMBER(simpsons_state::simpsons_sound_r)
5353{
54   return k053260_r(machine().device("k053260"), space, 2 + offset);
54   return machine().device<k053260_device>("k053260")->k053260_r(space, 2 + offset);
5555}
5656
5757

Previous 199869 Revisions Next


© 1997-2024 The MAME Team