summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cosmic.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/cosmic.c')
-rw-r--r--src/mame/drivers/cosmic.c142
1 files changed, 73 insertions, 69 deletions
diff --git a/src/mame/drivers/cosmic.c b/src/mame/drivers/cosmic.c
index 8dae9781e39..7bb60f88644 100644
--- a/src/mame/drivers/cosmic.c
+++ b/src/mame/drivers/cosmic.c
@@ -59,6 +59,7 @@ static UINT32 pixel_clock = 0;
static WRITE8_HANDLER( panic_sound_output_w )
{
+ const device_config *samples = devtag_get_device(space->machine, SOUND, "samples");
static int sound_enabled=1;
/* Sound Enable / Disable */
@@ -67,7 +68,7 @@ static WRITE8_HANDLER( panic_sound_output_w )
{
int count;
if (data == 0)
- for(count=0; count<9; count++) sample_stop(count);
+ for(count=0; count<9; count++) sample_stop(samples, count);
sound_enabled = data;
}
@@ -76,50 +77,50 @@ static WRITE8_HANDLER( panic_sound_output_w )
{
switch (offset)
{
- case 0: if (data) sample_start(0, 0, 0); break; /* Walk */
- case 1: if (data) sample_start(0, 5, 0); break; /* Enemy Die 1 */
+ case 0: if (data) sample_start(samples, 0, 0, 0); break; /* Walk */
+ case 1: if (data) sample_start(samples, 0, 5, 0); break; /* Enemy Die 1 */
case 2: if (data) /* Drop 1 */
{
- if (!sample_playing(1))
+ if (!sample_playing(samples, 1))
{
- sample_stop(2);
- sample_start(1, 3, 0);
+ sample_stop(samples, 2);
+ sample_start(samples, 1, 3, 0);
}
}
else
- sample_stop(1);
+ sample_stop(samples, 1);
break;
- case 3: if (data && !sample_playing(6)) /* Oxygen */
- sample_start(6, 9, 1);
+ case 3: if (data && !sample_playing(samples, 6)) /* Oxygen */
+ sample_start(samples, 6, 9, 1);
break;
case 4: break; /* Drop 2 */
- case 5: if (data) sample_start(0, 5, 0); break; /* Enemy Die 2 (use same sample as 1) */
- case 6: if (data && !sample_playing(1) && !sample_playing(3)) /* Hang */
- sample_start(2, 2, 0);
+ case 5: if (data) sample_start(samples, 0, 5, 0); break; /* Enemy Die 2 (use same sample as 1) */
+ case 6: if (data && !sample_playing(samples, 1) && !sample_playing(samples, 3)) /* Hang */
+ sample_start(samples, 2, 2, 0);
break;
case 7: if (data) /* Escape */
{
- sample_stop(2);
- sample_start(3, 4, 0);
+ sample_stop(samples, 2);
+ sample_start(samples, 3, 4, 0);
}
else
- sample_stop(3);
+ sample_stop(samples, 3);
break;
- case 8: if (data) sample_start(0, 1, 0); break; /* Stairs */
+ case 8: if (data) sample_start(samples, 0, 1, 0); break; /* Stairs */
case 9: if (data) /* Extend */
- sample_start(4, 8, 0);
+ sample_start(samples, 4, 8, 0);
else
- sample_stop(4);
+ sample_stop(samples, 4);
break;
- case 10: dac_data_w(0, data); break; /* Bonus */
- case 15: if (data) sample_start(0, 6, 0); break; /* Player Die */
- case 16: if (data) sample_start(5, 7, 0); break; /* Enemy Laugh */
- case 17: if (data) sample_start(0, 10, 0); break; /* Coin - Not triggered by software */
+ case 10: dac_data_w(devtag_get_device(space->machine, SOUND, "dac"), data); break;/* Bonus */
+ case 15: if (data) sample_start(samples, 0, 6, 0); break; /* Player Die */
+ case 16: if (data) sample_start(samples, 5, 7, 0); break; /* Enemy Laugh */
+ case 17: if (data) sample_start(samples, 0, 10, 0); break; /* Coin - Not triggered by software */
}
}
@@ -135,6 +136,7 @@ static WRITE8_HANDLER( panic_sound_output2_w )
static WRITE8_HANDLER( cosmicg_output_w )
{
+ const device_config *samples = devtag_get_device(space->machine, SOUND, "samples");
static int march_select;
static int gun_die_select;
static int sound_enabled;
@@ -147,7 +149,7 @@ static WRITE8_HANDLER( cosmicg_output_w )
sound_enabled = data;
if (data == 0)
- for(count=0;count<9;count++) sample_stop(count);
+ for(count=0;count<9;count++) sample_stop(samples, count);
}
if (sound_enabled)
@@ -158,38 +160,38 @@ static WRITE8_HANDLER( cosmicg_output_w )
/* as other cosmic series games, but it never seems to */
/* be used for anything. It is implemented for sake of */
/* completness. Maybe it plays a tune if you win ? */
- case 1: dac_data_w(0, -data); break;
- case 2: if (data) sample_start (0, march_select, 0); break; /* March Sound */
+ case 1: dac_data_w(devtag_get_device(space->machine, SOUND, "dac"), -data); break;
+ case 2: if (data) sample_start (samples, 0, march_select, 0); break; /* March Sound */
case 3: march_select = (march_select & 0xfe) | data; break;
case 4: march_select = (march_select & 0xfd) | (data << 1); break;
case 5: march_select = (march_select & 0xfb) | (data << 2); break;
case 6: if (data) /* Killer Attack (crawly thing at bottom of screen) */
- sample_start(1, 8, 1);
+ sample_start(samples, 1, 8, 1);
else
- sample_stop(1);
+ sample_stop(samples, 1);
break;
case 7: if (data) /* Bonus Chance & Got Bonus */
{
- sample_stop(4);
- sample_start(4, 10, 0);
+ sample_stop(samples, 4);
+ sample_start(samples, 4, 10, 0);
}
break;
case 8: if (data)
{
- if (!sample_playing(4)) sample_start(4, 9, 1);
+ if (!sample_playing(samples, 4)) sample_start(samples, 4, 9, 1);
}
else
- sample_stop(4);
+ sample_stop(samples, 4);
break;
- case 9: if (data) sample_start(3, 11, 0); break; /* Got Ship */
+ case 9: if (data) sample_start(samples, 3, 11, 0); break; /* Got Ship */
// case 11: watchdog_reset_w(0, 0); break; /* Watchdog */
- case 13: if (data) sample_start(8, 13-gun_die_select, 0); break; /* Got Monster / Gunshot */
+ case 13: if (data) sample_start(samples, 8, 13-gun_die_select, 0); break; /* Got Monster / Gunshot */
case 14: gun_die_select = data; break;
- case 15: if (data) sample_start(5, 14, 0); break; /* Coin Extend (extra base) */
+ case 15: if (data) sample_start(samples, 5, 14, 0); break; /* Coin Extend (extra base) */
}
}
@@ -201,6 +203,7 @@ static WRITE8_HANDLER( cosmicg_output_w )
static WRITE8_HANDLER( cosmica_sound_output_w )
{
+ const device_config *samples = devtag_get_device(space->machine, SOUND, "samples");
static int sound_enabled=1;
static int dive_bomb_b_select=0;
@@ -209,10 +212,10 @@ static WRITE8_HANDLER( cosmica_sound_output_w )
{
int count;
if (data == 0)
- for(count=0; count<12; count++) sample_stop(count);
+ for(count=0; count<12; count++) sample_stop(samples, count);
else
{
- sample_start(0, 0, 1); /*Background Noise*/
+ sample_start(samples, 0, 0, 1); /*Background Noise*/
}
sound_enabled = data;
@@ -222,7 +225,7 @@ static WRITE8_HANDLER( cosmica_sound_output_w )
{
switch (offset)
{
- case 0: if (data) sample_start(1, 2, 0); break; /*Dive Bombing Type A*/
+ case 0: if (data) sample_start(samples, 1, 2, 0); break; /*Dive Bombing Type A*/
case 2: /*Dive Bombing Type B (Main Control)*/
@@ -235,65 +238,65 @@ static WRITE8_HANDLER( cosmica_sound_output_w )
case 2:
- if (sample_playing(2))
+ if (sample_playing(samples, 2))
{
- sample_stop(2);
- sample_start(2, 3, 0); break;
+ sample_stop(samples, 2);
+ sample_start(samples, 2, 3, 0); break;
}
else
- sample_start(2, 3, 0); break;
+ sample_start(samples, 2, 3, 0); break;
case 3:
- if (sample_playing(3))
+ if (sample_playing(samples, 3))
{
- sample_stop(3);
- sample_start(3, 4, 0); break;
+ sample_stop(samples, 3);
+ sample_start(samples, 3, 4, 0); break;
}
else
- sample_start(3, 4, 0); break;
+ sample_start(samples, 3, 4, 0); break;
case 4:
- if (sample_playing(4))
+ if (sample_playing(samples, 4))
{
- sample_stop(4);
- sample_start(4, 5, 0); break;
+ sample_stop(samples, 4);
+ sample_start(samples, 4, 5, 0); break;
}
else
- sample_start(4, 5, 0); break;
+ sample_start(samples, 4, 5, 0); break;
case 5:
- if (sample_playing(5))
+ if (sample_playing(samples, 5))
{
- sample_stop(5);
- sample_start(5, 6, 0); break;
+ sample_stop(samples, 5);
+ sample_start(samples, 5, 6, 0); break;
}
else
- sample_start(5, 6, 0); break;
+ sample_start(samples, 5, 6, 0); break;
case 6:
- if (sample_playing(6))
+ if (sample_playing(samples, 6))
{
- sample_stop(6);
- sample_start(6, 7, 0); break;
+ sample_stop(samples, 6);
+ sample_start(samples, 6, 7, 0); break;
}
else
- sample_start(6, 7, 0); break;
+ sample_start(samples, 6, 7, 0); break;
case 7:
- if (sample_playing(7))
+ if (sample_playing(samples, 7))
{
- sample_stop(7);
- sample_start(7, 8, 0); break;
+ sample_stop(samples, 7);
+ sample_start(samples, 7, 8, 0); break;
}
else
- sample_start(7, 8, 0); break;
+ sample_start(samples, 7, 8, 0); break;
}
}
@@ -324,22 +327,22 @@ static WRITE8_HANDLER( cosmica_sound_output_w )
break;
- case 6: if (data) sample_start(8, 9, 0); break; /*Fire Control*/
+ case 6: if (data) sample_start(samples, 8, 9, 0); break; /*Fire Control*/
- case 7: if (data) sample_start(9, 10, 0); break; /*Small Explosion*/
+ case 7: if (data) sample_start(samples, 9, 10, 0); break; /*Small Explosion*/
- case 8: if (data) sample_start(10, 11, 0); break; /*Loud Explosion*/
+ case 8: if (data) sample_start(samples, 10, 11, 0); break; /*Loud Explosion*/
case 9:
if (data)
- sample_start(11, 1, 1);
+ sample_start(samples, 11, 1, 1);
else
- sample_stop(11);
+ sample_stop(samples, 11);
break; /*Extend Sound control*/
case 12:
- if (data) sample_start(11,12, 0); break; /*Insert Coin*/
+ if (data) sample_start(samples, 11,12, 0); break; /*Insert Coin*/
}
}
@@ -536,7 +539,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( magspot_writemem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x2fff) AM_WRITE(SMH_ROM)
AM_RANGE(0x4000, 0x401f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
- AM_RANGE(0x4800, 0x4800) AM_WRITE(dac_0_data_w)
+ AM_RANGE(0x4800, 0x4800) AM_DEVWRITE(SOUND, "dac", dac_w)
AM_RANGE(0x480c, 0x480d) AM_WRITE(cosmic_color_register_w)
AM_RANGE(0x480f, 0x480f) AM_WRITE(flip_screen_w)
AM_RANGE(0x6000, 0x7fff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
@@ -1593,10 +1596,11 @@ static DRIVER_INIT( devzone )
static DRIVER_INIT( nomnlnd )
{
+ const device_config *dac = devtag_get_device(machine, SOUND, "dac");
memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5000, 0x5001, 0, 0, nomnlnd_port_0_1_r);
memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4800, 0x4800, 0, 0, SMH_NOP);
memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4807, 0x4807, 0, 0, cosmic_background_enable_w);
- memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x480a, 0x480a, 0, 0, dac_0_data_w);
+ memory_install_write8_device_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), dac, 0x480a, 0x480a, 0, 0, dac_w);
}