static WRITE8_HANDLER( port_sound_w ) { running_device *discrete = space->machine->device("discrete"); running_device *sn = space->machine->device("snsnd"); /* D0 - interrupt enable - also goes to PC3259 as /HTCTRL */ cpu_interrupt_enable(space->machine->device("maincpu"), (data & 0x01) ? TRUE : FALSE); crbaloon_set_clear_collision_address((data & 0x01) ? TRUE : FALSE); /* D1 - SOUND STOP */ sound_global_enable(space->machine, (data & 0x02) ? TRUE : FALSE); /* D2 - unlabeled - music enable */ crbaloon_audio_set_music_enable(discrete, 0, (data & 0x04) ? TRUE : FALSE); /* D3 - EXPLOSION */ crbaloon_audio_set_explosion_enable(sn, (data & 0x08) ? TRUE : FALSE); /* D4 - BREATH */ crbaloon_audio_set_breath_enable(sn, (data & 0x10) ? TRUE : FALSE); /* D5 - APPEAR */ crbaloon_audio_set_appear_enable(sn, (data & 0x20) ? TRUE : FALSE); /* D6 - unlabeled - laugh enable */ crbaloon_audio_set_laugh_enable(discrete, 0, (data & 0x40) ? TRUE : FALSE); /* D7 - unlabeled - goes to PC3259 pin 16 */ pc3259_update(); }
/* nothing yet */ MACHINE_DRIVER_END /************************************* * * Tomahawk * *************************************/ WRITE8_HANDLER( tomahawk_audio_w ) { astrof_state *state = (astrof_state *)space->machine->driver_data; /* D0 - sonar */ /* D1 - UFO explosion */ /* D2 - morse */ /* D3 - missile */ /* D4 - UFO */ /* D5 - UFO under water */ sn76477_enable_w(state->sn, (~data >> 5) & 0x01); /* D6 - explosion */ /* D7 - sound enable bit */ sound_global_enable(space->machine, data & 0x80); }
static MACHINE_RESET( taito_dualscreen ) { warriorb_state *state = machine->driver_data<warriorb_state>(); state->banknum = 0; /**** mixer control enable ****/ sound_global_enable(machine, 1); /* mixer enabled */ }
static MACHINE_RESET( ninjaw ) { ninjaw_state *state = (ninjaw_state *)machine->driver_data; state->cpua_ctrl = 0xff; state->banknum = 0; memset(state->pandata, 0, sizeof(state->pandata)); /**** mixer control enable ****/ sound_global_enable(machine, 1); /* mixer enabled */ }
DISCRETE_SOUND_END WRITE8_HANDLER( indianbt_sh_port_1_w ) { /* bit 4 occurs every 5.25 seconds during gameplay */ mw8080bw_state *state = space->machine->driver_data<mw8080bw_state>(); UINT8 rising_bits = data & ~state->port_1_last_extra; if (rising_bits & 0x01) sample_start(state->samples, 1, 7, 0); /* Death */ if (rising_bits & 0x02) sample_start(state->samples, 0, 1, 0); /* Shot Sound */ if (rising_bits & 0x04) sample_start(state->samples, 2, 3, 0); /* Move */ if (rising_bits & 0x08) sample_start(state->samples, 3, 2, 0); /* Hit */ sound_global_enable(space->machine, data & 0x20); state->screen_red = data & 0x01; state->port_1_last_extra = data; }
DISCRETE_SOUND_END WRITE8_HANDLER( indianbt_sh_port_1_w ) { /* bit 4 occurs every 5.25 seconds during gameplay */ const device_config *samples = devtag_get_device(space->machine, "samples"); UINT8 rising_bits = data & ~port_1_last_extra; if (rising_bits & 0x01) sample_start(samples, 1, 7, 0); /* Death */ if (rising_bits & 0x02) sample_start(samples, 0, 1, 0); /* Shot Sound */ if (rising_bits & 0x04) sample_start(samples, 2, 3, 0); /* Move */ if (rising_bits & 0x08) sample_start(samples, 3, 2, 0); /* Hit */ sound_global_enable(space->machine, data & 0x20); c8080bw_screen_red_w(data & 0x01); port_1_last_extra = data; }
static MACHINE_RESET( taito_dualscreen ) { /**** mixer control enable ****/ sound_global_enable( 1 ); /* mixer enabled */ }
DISCRETE_SOUND_END /* This register controls the clown image currently displayed */ /* and also is used to enable the amplifier and trigger the */ /* discrete circuitry that produces sound effects and music */ WRITE8_HANDLER( circus_clown_z_w ) { clown_z = (data & 0x0f); *(memory_region(REGION_CPU1)+0x8000)=data; logerror("Z:%02x\n",data); //DEBUG /* Bits 4-6 enable/disable trigger different events */ switch (circus_game) { case 1: /* circus */ case 4: /* ripcord */ switch ((data & 0x70) >> 4) { case 0 : /* All Off */ discrete_sound_w(CIRCUS_MUSIC_BIT, 0); break; case 1 : /* Music */ discrete_sound_w(CIRCUS_MUSIC_BIT, 1); break; case 2 : /* Circus = Pop; Rip Cord = Splash */ sample_start (0, 0, 0); break; case 3 : /* Normal Video */ break; case 4 : /* Circus = Miss; Rip Cord = Scream */ sample_start (1, 1, 0); break; case 5 : /* Invert Video */ break; case 6 : /* Circus = Bounce; Rip Cord = Chute Open */ sample_start (2, 2, 0); break; case 7 : /* Circus = not used; Rip Cord = Whistle */ if GAME_IS_RIPCORD sample_start (3, 3, 0); break; } break; case 2: /* robotbwl */ discrete_sound_w(ROBOTBWL_MUSIC_BIT, data & 0x08); /* Footsteps */ if (data & 0x40) /* Hit */ sample_start (0, 0, 0); if (data & 0x20) /* Roll */ sample_start (1, 1, 0); if (data & 0x10) /* Ball Drop */ sample_start (2, 2, 0); if (data & 0x02) /* Demerit */ sample_start (3, 3, 0); if (data & 0x01) /* Reward */ sample_start (4, 4, 0); // if (data & 0x04) /* Invert */ break; case 3: /* crash */ /* Only the crash can be done with a sample */ switch ((data & 0x70) >> 4) { case 0 : /* All Off */ discrete_sound_w(CRASH_MUSIC_BIT, 0); break; case 1 : /* Music */ discrete_sound_w(CRASH_MUSIC_BIT, 1); break; case 2 : /* Crash */ sample_start (0, 0, 0); break; case 3 : /* Normal Video and Beep */ discrete_sound_w(CRASH_BEEPER_EN, 0); break; case 4 : /* Skid */ break; case 5 : /* Invert Video and Beep */ discrete_sound_w(CRASH_BEEPER_EN, 0); break; case 6 : /* Hi Motor */ break; case 7 : /* Low Motor */ break; } break; } /* Bit 7 enables amplifier (0 = on) */ sound_global_enable(~data & 0x80); }
static MACHINE_RESET( ninjaw ) { /**** mixer control enable ****/ sound_global_enable( machine, 1 ); /* mixer enabled */ }
static WRITE8_HANDLER( sound_enable_w ) { sound_global_enable(data & 1); }
static WRITE8_HANDLER( sound_mute_w ) { sound_global_enable(space->machine, ~data & 1); }