diff options
author | 2013-04-12 07:32:37 +0000 | |
---|---|---|
committer | 2013-04-12 07:32:37 +0000 | |
commit | 056c7d387ca68c28dced90bdc1a36701a51a8a1e (patch) | |
tree | 258340e27e7c9820332252b0f1297fa089b7ff75 | |
parent | 4570c897cf65fd758ea58d80e08fb286032a5a97 (diff) |
discrete lookups removal (nw)
38 files changed, 179 insertions, 219 deletions
diff --git a/src/mame/drivers/cliffhgr.c b/src/mame/drivers/cliffhgr.c index 721d0acac59..e81f1b11941 100644 --- a/src/mame/drivers/cliffhgr.c +++ b/src/mame/drivers/cliffhgr.c @@ -92,7 +92,8 @@ public: m_laserdisc(*this, "laserdisc"), m_port_bank(0), m_phillips_code(0) , - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } required_device<pioneer_pr8210_device> m_laserdisc; @@ -115,6 +116,7 @@ public: virtual void machine_reset(); TIMER_CALLBACK_MEMBER(cliff_irq_callback); required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; }; @@ -172,10 +174,9 @@ READ8_MEMBER(cliffhgr_state::cliff_irq_ack_r) WRITE8_MEMBER(cliffhgr_state::cliff_sound_overlay_w) { - device_t *device = machine().device("discrete"); /* audio */ - discrete_sound_w(device, space, CLIFF_ENABLE_SND_1, data & 1); - discrete_sound_w(device, space, CLIFF_ENABLE_SND_2, (data >> 1) & 1); + discrete_sound_w(m_discrete, space, CLIFF_ENABLE_SND_1, data & 1); + discrete_sound_w(m_discrete, space, CLIFF_ENABLE_SND_2, (data >> 1) & 1); // bit 4 (data & 0x10) is overlay related? } diff --git a/src/mame/drivers/firetrk.c b/src/mame/drivers/firetrk.c index 511db951a94..32444e49716 100644 --- a/src/mame/drivers/firetrk.c +++ b/src/mame/drivers/firetrk.c @@ -36,8 +36,7 @@ INPUT_CHANGED_MEMBER(firetrk_state::service_mode_switch_changed) INPUT_CHANGED_MEMBER(firetrk_state::firetrk_horn_changed) { - device_t *discrete = machine().device("discrete"); - discrete_sound_w(discrete, generic_space(), FIRETRUCK_HORN_EN, newval); + discrete_sound_w(m_discrete, generic_space(), FIRETRUCK_HORN_EN, newval); } @@ -74,8 +73,6 @@ TIMER_CALLBACK_MEMBER(firetrk_state::periodic_callback) WRITE8_MEMBER(firetrk_state::firetrk_output_w) { - device_t *discrete = machine().device("discrete"); - /* BIT0 => START1 LAMP */ set_led_status(machine(), 0, !(data & 0x01)); @@ -89,7 +86,7 @@ WRITE8_MEMBER(firetrk_state::firetrk_output_w) set_led_status(machine(), 3, !(data & 0x08)); /* BIT4 => ATTRACT */ - discrete_sound_w(discrete, space, FIRETRUCK_ATTRACT_EN, data & 0x10); + discrete_sound_w(m_discrete, space, FIRETRUCK_ATTRACT_EN, data & 0x10); coin_lockout_w(machine(), 0, !(data & 0x10)); coin_lockout_w(machine(), 1, !(data & 0x10)); @@ -99,19 +96,17 @@ WRITE8_MEMBER(firetrk_state::firetrk_output_w) /* BIT6 => UNUSED */ /* BIT7 => BELL OUT */ - discrete_sound_w(discrete, space, FIRETRUCK_BELL_EN, data & 0x80); + discrete_sound_w(m_discrete, space, FIRETRUCK_BELL_EN, data & 0x80); } WRITE8_MEMBER(firetrk_state::superbug_output_w) { - device_t *discrete = machine().device("discrete"); - /* BIT0 => START LAMP */ set_led_status(machine(), 0, offset & 0x01); /* BIT1 => ATTRACT */ - discrete_sound_w(discrete, space, SUPERBUG_ATTRACT_EN, offset & 0x02); + discrete_sound_w(m_discrete, space, SUPERBUG_ATTRACT_EN, offset & 0x02); coin_lockout_w(machine(), 0, !(offset & 0x02)); coin_lockout_w(machine(), 1, !(offset & 0x02)); @@ -125,8 +120,6 @@ WRITE8_MEMBER(firetrk_state::superbug_output_w) WRITE8_MEMBER(firetrk_state::montecar_output_1_w) { - device_t *discrete = machine().device("discrete"); - /* BIT0 => START LAMP */ set_led_status(machine(), 0, !(data & 0x01)); @@ -134,7 +127,7 @@ WRITE8_MEMBER(firetrk_state::montecar_output_1_w) set_led_status(machine(), 1, !(data & 0x02)); /* BIT2 => ATTRACT */ - discrete_sound_w(discrete, space, MONTECAR_ATTRACT_INV, data & 0x04); + discrete_sound_w(m_discrete, space, MONTECAR_ATTRACT_INV, data & 0x04); /* BIT3 => UNUSED */ /* BIT4 => UNUSED */ @@ -152,12 +145,10 @@ WRITE8_MEMBER(firetrk_state::montecar_output_1_w) WRITE8_MEMBER(firetrk_state::montecar_output_2_w) { - device_t *discrete = machine().device("discrete"); - m_flash = data & 0x80; - discrete_sound_w(discrete, space, MONTECAR_BEEPER_EN, data & 0x10); - discrete_sound_w(discrete, space, MONTECAR_DRONE_LOUD_DATA, data & 0x0f); + discrete_sound_w(m_discrete, space, MONTECAR_BEEPER_EN, data & 0x10); + discrete_sound_w(m_discrete, space, MONTECAR_DRONE_LOUD_DATA, data & 0x0f); } diff --git a/src/mame/drivers/goldnpkr.c b/src/mame/drivers/goldnpkr.c index 4fd4da0a1dd..21240d16861 100644 --- a/src/mame/drivers/goldnpkr.c +++ b/src/mame/drivers/goldnpkr.c @@ -962,7 +962,8 @@ public: : driver_device(mconfig, type, tag), m_videoram(*this, "videoram"), m_colorram(*this, "colorram"), - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } required_shared_ptr<UINT8> m_videoram; required_shared_ptr<UINT8> m_colorram; @@ -1007,6 +1008,7 @@ public: DECLARE_PALETTE_INIT(wcrdxtnd); UINT32 screen_update_goldnpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); required_device<cpu_device> m_maincpu; + optional_device<discrete_device> m_discrete; }; @@ -1358,13 +1360,12 @@ WRITE8_MEMBER(goldnpkr_state::lamps_a_w) WRITE8_MEMBER(goldnpkr_state::sound_w) { - device_t *device = machine().device("discrete"); /* 555 voltage controlled */ logerror("Sound Data: %2x\n",data & 0x0f); /* discrete sound is connected to PIA1, portA: bits 0-3 */ - discrete_sound_w(device, space, NODE_01, data >> 3 & 0x01); - discrete_sound_w(device, space, NODE_10, data & 0x07); + discrete_sound_w(m_discrete, space, NODE_01, data >> 3 & 0x01); + discrete_sound_w(m_discrete, space, NODE_10, data & 0x07); } diff --git a/src/mame/drivers/grchamp.c b/src/mame/drivers/grchamp.c index 5c90a3c519f..64eff6d7fdf 100644 --- a/src/mame/drivers/grchamp.c +++ b/src/mame/drivers/grchamp.c @@ -238,7 +238,6 @@ WRITE8_MEMBER(grchamp_state::led_board_w) WRITE8_MEMBER(grchamp_state::cpu1_outputs_w) { - device_t *discrete = machine().device("discrete"); UINT8 diff = data ^ m_cpu1_out[offset]; m_cpu1_out[offset] = data; @@ -301,18 +300,18 @@ WRITE8_MEMBER(grchamp_state::cpu1_outputs_w) /* bit 2-4: ATTACK UP 1-3 */ /* bit 5-6: SIFT 1-2 */ /* bit 7: ENGINE CS */ - discrete_sound_w(discrete, space, GRCHAMP_ENGINE_CS_EN, data & 0x80); - discrete_sound_w(discrete, space, GRCHAMP_SIFT_DATA, (data >> 5) & 0x03); - discrete_sound_w(discrete, space, GRCHAMP_ATTACK_UP_DATA, (data >> 2) & 0x07); - discrete_sound_w(discrete, space, GRCHAMP_IDLING_EN, data & 0x02); - discrete_sound_w(discrete, space, GRCHAMP_FOG_EN, data & 0x01); + discrete_sound_w(m_discrete, space, GRCHAMP_ENGINE_CS_EN, data & 0x80); + discrete_sound_w(m_discrete, space, GRCHAMP_SIFT_DATA, (data >> 5) & 0x03); + discrete_sound_w(m_discrete, space, GRCHAMP_ATTACK_UP_DATA, (data >> 2) & 0x07); + discrete_sound_w(m_discrete, space, GRCHAMP_IDLING_EN, data & 0x02); + discrete_sound_w(m_discrete, space, GRCHAMP_FOG_EN, data & 0x01); break; case 0x0d: /* OUTD */ /* bit 0-3: ATTACK SPEED 1-4 */ /* bit 4-7: PLAYER SPEED 1-4 */ - discrete_sound_w(discrete, space, GRCHAMP_PLAYER_SPEED_DATA, (data >> 4) & 0x0f); - discrete_sound_w(discrete, space, GRCHAMP_ATTACK_SPEED_DATA, data & 0x0f); + discrete_sound_w(m_discrete, space, GRCHAMP_PLAYER_SPEED_DATA, (data >> 4) & 0x0f); + discrete_sound_w(m_discrete, space, GRCHAMP_ATTACK_SPEED_DATA, data & 0x0f); break; default: @@ -410,14 +409,12 @@ READ8_MEMBER(grchamp_state::main_to_sub_comm_r) WRITE8_MEMBER(grchamp_state::grchamp_portA_0_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, GRCHAMP_A_DATA, data); + discrete_sound_w(m_discrete, space, GRCHAMP_A_DATA, data); } WRITE8_MEMBER(grchamp_state::grchamp_portB_0_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, GRCHAMP_B_DATA, 255-data); + discrete_sound_w(m_discrete, space, GRCHAMP_B_DATA, 255-data); } WRITE8_MEMBER(grchamp_state::grchamp_portA_2_w) diff --git a/src/mame/drivers/hitme.c b/src/mame/drivers/hitme.c index 044e6a41808..96951f57049 100644 --- a/src/mame/drivers/hitme.c +++ b/src/mame/drivers/hitme.c @@ -179,7 +179,6 @@ READ8_MEMBER(hitme_state::hitme_port_3_r) WRITE8_MEMBER(hitme_state::output_port_0_w) { - device_t *device = machine().device("discrete"); /* Note: We compute the timeout time on a write here. Unfortunately, the situation is kind of weird, because the discrete sound system is also affected by this timeout. @@ -191,16 +190,15 @@ WRITE8_MEMBER(hitme_state::output_port_0_w) attotime duration = attotime(0, ATTOSECONDS_PER_SECOND * 0.45 * 6.8e-6 * resistance * (data + 1)); m_timeout_time = machine().time() + duration; - discrete_sound_w(device, space, HITME_DOWNCOUNT_VAL, data); - discrete_sound_w(device, space, HITME_OUT0, 1); + discrete_sound_w(m_discrete, space, HITME_DOWNCOUNT_VAL, data); + discrete_sound_w(m_discrete, space, HITME_OUT0, 1); } WRITE8_MEMBER(hitme_state::output_port_1_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, HITME_ENABLE_VAL, data); - discrete_sound_w(device, space, HITME_OUT1, 1); + discrete_sound_w(m_discrete, space, HITME_ENABLE_VAL, data); + discrete_sound_w(m_discrete, space, HITME_OUT1, 1); } diff --git a/src/mame/drivers/madalien.c b/src/mame/drivers/madalien.c index 76a0346c552..a81562a8be8 100644 --- a/src/mame/drivers/madalien.c +++ b/src/mame/drivers/madalien.c @@ -68,13 +68,11 @@ READ8_MEMBER(madalien_state::madalien_sound_command_r) WRITE8_MEMBER(madalien_state::madalien_portA_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, MADALIEN_8910_PORTA, data); + discrete_sound_w(m_discrete, space, MADALIEN_8910_PORTA, data); } WRITE8_MEMBER(madalien_state::madalien_portB_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, MADALIEN_8910_PORTB, data); + discrete_sound_w(m_discrete, space, MADALIEN_8910_PORTB, data); } diff --git a/src/mame/drivers/mw8080bw.c b/src/mame/drivers/mw8080bw.c index a8fb85cb58f..116c8b38160 100644 --- a/src/mame/drivers/mw8080bw.c +++ b/src/mame/drivers/mw8080bw.c @@ -864,7 +864,7 @@ MACHINE_CONFIG_END void mw8080bw_state::maze_update_discrete() { - maze_write_discrete(machine().device("discrete"), m_maze_tone_timing_state); + maze_write_discrete(m_discrete, m_maze_tone_timing_state); } diff --git a/src/mame/drivers/norautp.c b/src/mame/drivers/norautp.c index d1da3b6d30c..a2a6bd35111 100644 --- a/src/mame/drivers/norautp.c +++ b/src/mame/drivers/norautp.c @@ -668,14 +668,12 @@ WRITE8_MEMBER(norautp_state::soundlamps_w) xxxx ---- * Discrete Sound Lines. */ - device_t *discrete = machine().device("discrete"); - output_set_lamp_value(8, (data >> 0) & 1); /* DEAL / DRAW lamp */ output_set_lamp_value(9, (data >> 1) & 1); /* BET / COLLECT lamp */ /* the 4 MSB are for discrete sound */ - discrete_sound_w(discrete, space, NORAUTP_SND_EN, (data >> 7) & 0x01); - discrete_sound_w(discrete, space, NORAUTP_FREQ_DATA, (data >> 4) & 0x07); + discrete_sound_w(m_discrete, space, NORAUTP_SND_EN, (data >> 7) & 0x01); + discrete_sound_w(m_discrete, space, NORAUTP_FREQ_DATA, (data >> 4) & 0x07); // popmessage("sound bits 4-5-6-7: %02x, %02x, %02x, %02x", ((data >> 4) & 0x01), ((data >> 5) & 0x01), ((data >> 6) & 0x01), ((data >> 7) & 0x01)); } diff --git a/src/mame/drivers/skydiver.c b/src/mame/drivers/skydiver.c index 5147d5445b6..9959754fe68 100644 --- a/src/mame/drivers/skydiver.c +++ b/src/mame/drivers/skydiver.c @@ -147,15 +147,13 @@ WRITE8_MEMBER(skydiver_state::skydiver_nmion_w) INTERRUPT_GEN_MEMBER(skydiver_state::skydiver_interrupt) { - device_t *discrete = machine().device("discrete"); - /* Convert range data to divide value and write to sound */ address_space &space = machine().firstcpu->space(AS_PROGRAM); - discrete_sound_w(discrete, space, SKYDIVER_RANGE_DATA, (0x01 << (~m_videoram[0x394] & 0x07)) & 0xff); // Range 0-2 + discrete_sound_w(m_discrete, space, SKYDIVER_RANGE_DATA, (0x01 << (~m_videoram[0x394] & 0x07)) & 0xff); // Range 0-2 - discrete_sound_w(discrete, space, SKYDIVER_RANGE3_EN, m_videoram[0x394] & 0x08); // Range 3 - note disable - discrete_sound_w(discrete, space, SKYDIVER_NOTE_DATA, ~m_videoram[0x395] & 0xff); // Note - freq - discrete_sound_w(discrete, space, SKYDIVER_NOISE_DATA, m_videoram[0x396] & 0x0f); // NAM - Noise Amplitude + discrete_sound_w(m_discrete, space, SKYDIVER_RANGE3_EN, m_videoram[0x394] & 0x08); // Range 3 - note disable + discrete_sound_w(m_discrete, space, SKYDIVER_NOTE_DATA, ~m_videoram[0x395] & 0xff); // Note - freq + discrete_sound_w(m_discrete, space, SKYDIVER_NOISE_DATA, m_videoram[0x396] & 0x0f); // NAM - Noise Amplitude if (m_nmion) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); @@ -171,14 +169,12 @@ INTERRUPT_GEN_MEMBER(skydiver_state::skydiver_interrupt) WRITE8_MEMBER(skydiver_state::skydiver_sound_enable_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, SKYDIVER_SOUND_EN, offset); + discrete_sound_w(m_discrete, space, SKYDIVER_SOUND_EN, offset); } WRITE8_MEMBER(skydiver_state::skydiver_whistle_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, NODE_RELATIVE(SKYDIVER_WHISTLE1_EN, (offset >> 1)), offset & 0x01); + discrete_sound_w(m_discrete, space, NODE_RELATIVE(SKYDIVER_WHISTLE1_EN, (offset >> 1)), offset & 0x01); } diff --git a/src/mame/drivers/sprint2.c b/src/mame/drivers/sprint2.c index ae95e52dbad..d14adac741b 100644 --- a/src/mame/drivers/sprint2.c +++ b/src/mame/drivers/sprint2.c @@ -62,8 +62,6 @@ int sprint2_state::service_mode() INTERRUPT_GEN_MEMBER(sprint2_state::sprint2) { - device_t *discrete = machine().device("discrete"); - /* handle steering wheels */ if (GAME_IS_SPRINT1 || GAME_IS_SPRINT2) @@ -96,9 +94,9 @@ INTERRUPT_GEN_MEMBER(sprint2_state::sprint2) } address_space &space = machine().firstcpu->space(AS_PROGRAM); - discrete_sound_w(discrete, space, SPRINT2_MOTORSND1_DATA, m_video_ram[0x394] & 15); // also DOMINOS_FREQ_DATA - discrete_sound_w(discrete, space, SPRINT2_MOTORSND2_DATA, m_video_ram[0x395] & 15); - discrete_sound_w(discrete, space, SPRINT2_CRASHSND_DATA, m_video_ram[0x396] & 15); // also DOMINOS_AMP_DATA + discrete_sound_w(m_discrete, space, SPRINT2_MOTORSND1_DATA, m_video_ram[0x394] & 15); // also DOMINOS_FREQ_DATA + discrete_sound_w(m_discrete, space, SPRINT2_MOTORSND2_DATA, m_video_ram[0x395] & 15); + discrete_sound_w(m_discrete, space, SPRINT2_CRASHSND_DATA, m_video_ram[0x396] & 15); // also DOMINOS_AMP_DATA /* interrupts and watchdog are disabled during service mode */ @@ -202,32 +200,28 @@ WRITE8_MEMBER(sprint2_state::sprint2_wram_w) WRITE8_MEMBER(sprint2_state::sprint2_attract_w) { - device_t *device = machine().device("discrete"); m_attract = offset & 1; // also DOMINOS_ATTRACT_EN - discrete_sound_w(device, space, SPRINT2_ATTRACT_EN, m_attract); + discrete_sound_w(m_discrete, space, SPRINT2_ATTRACT_EN, m_attract); } WRITE8_MEMBER(sprint2_state::sprint2_noise_reset_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, SPRINT2_NOISE_RESET, 0); + discrete_sound_w(m_discrete, space, SPRINT2_NOISE_RESET, 0); } WRITE8_MEMBER(sprint2_state::sprint2_skid1_w) { - device_t *device = machine().device("discrete"); // also DOMINOS_TUMBLE_EN - discrete_sound_w(device, space, SPRINT2_SKIDSND1_EN, offset & 1); + discrete_sound_w(m_discrete, space, SPRINT2_SKIDSND1_EN, offset & 1); } WRITE8_MEMBER(sprint2_state::sprint2_skid2_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, SPRINT2_SKIDSND2_EN, offset & 1); + discrete_sound_w(m_discrete, space, SPRINT2_SKIDSND2_EN, offset & 1); } diff --git a/src/mame/drivers/sprint4.c b/src/mame/drivers/sprint4.c index 300eb5cdffc..27a8ae6ac8a 100644 --- a/src/mame/drivers/sprint4.c +++ b/src/mame/drivers/sprint4.c @@ -185,45 +185,36 @@ WRITE8_MEMBER(sprint4_state::sprint4_lockout_w) WRITE8_MEMBER(sprint4_state::sprint4_screech_1_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, SPRINT4_SCREECH_EN_1, offset & 1); + discrete_sound_w(m_discrete, space, SPRINT4_SCREECH_EN_1, offset & 1); } WRITE8_MEMBER(sprint4_state::sprint4_screech_2_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, SPRINT4_SCREECH_EN_2, offset & 1); + discrete_sound_w(m_discrete, space, SPRINT4_SCREECH_EN_2, offset & 1); } WRITE8_MEMBER(sprint4_state::sprint4_screech_3_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, SPRINT4_SCREECH_EN_3, offset & 1); + discrete_sound_w(m_discrete, space, SPRINT4_SCREECH_EN_3, offset & 1); } WRITE8_MEMBER(sprint4_state::sprint4_screech_4_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, SPRINT4_SCREECH_EN_4, offset & 1); + discrete_sound_w(m_discrete, space, SPRINT4_SCREECH_EN_4, offset & 1); } - - - WRITE8_MEMBER(sprint4_state::sprint4_bang_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, SPRINT4_BANG_DATA, data & 0x0f); + discrete_sound_w(m_discrete, space, SPRINT4_BANG_DATA, data & 0x0f); } WRITE8_MEMBER(sprint4_state::sprint4_attract_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, SPRINT4_ATTRACT_EN, data & 1); + discrete_sound_w(m_discrete, space, SPRINT4_ATTRACT_EN, data & 1); } diff --git a/src/mame/drivers/starshp1.c b/src/mame/drivers/starshp1.c index 41b57704afc..84e00ddb3b9 100644 --- a/src/mame/drivers/starshp1.c +++ b/src/mame/drivers/starshp1.c @@ -23,33 +23,32 @@ INTERRUPT_GEN_MEMBER(starshp1_state::starshp1_interrupt) WRITE8_MEMBER(starshp1_state::starshp1_audio_w) { - device_t *device = machine().device("discrete"); data &= 1; switch (offset & 7) { case 0: m_attract = data; - discrete_sound_w(device, space, STARSHP1_ATTRACT, data); + discrete_sound_w(m_discrete, space, STARSHP1_ATTRACT, data); break; case 1: m_phasor = data; - discrete_sound_w(device, space, STARSHP1_PHASOR_ON, data); + discrete_sound_w(m_discrete, space, STARSHP1_PHASOR_ON, data); break; case 2: - discrete_sound_w(device, space, STARSHP1_KICKER, data); + discrete_sound_w(m_discrete, space, STARSHP1_KICKER, data); break; case 3: - discrete_sound_w(device, space, STARSHP1_SL1, data); + discrete_sound_w(m_discrete, space, STARSHP1_SL1, data); break; case 4: - discrete_sound_w(device, space, STARSHP1_SL2, data); + discrete_sound_w(m_discrete, space, STARSHP1_SL2, data); break; case 5: - discrete_sound_w(device, space, STARSHP1_MOLVL, data); + discrete_sound_w(m_discrete, space, STARSHP1_MOLVL, data); break; case 6: - discrete_sound_w(device, space, STARSHP1_NOISE_FREQ, data); + discrete_sound_w(m_discrete, space, STARSHP1_NOISE_FREQ, data); break; } @@ -102,20 +101,19 @@ WRITE8_MEMBER(starshp1_state::starshp1_analog_in_w) WRITE8_MEMBER(starshp1_state::starshp1_analog_out_w) { - device_t *device = machine().device("discrete"); switch (offset & 7) { case 1: m_ship_size = data; break; case 2: - discrete_sound_w(device, space, STARSHP1_NOISE_AMPLITUDE, data); + discrete_sound_w(m_discrete, space, STARSHP1_NOISE_AMPLITUDE, data); break; case 3: - discrete_sound_w(device, space, STARSHP1_TONE_PITCH, data); + discrete_sound_w(m_discrete, space, STARSHP1_TONE_PITCH, data); break; case 4: - discrete_sound_w(device, space, STARSHP1_MOTOR_SPEED, data); + discrete_sound_w(m_discrete, space, STARSHP1_MOTOR_SPEED, data); break; case 5: m_circle_hpos = data; diff --git a/src/mame/drivers/tank8.c b/src/mame/drivers/tank8.c index 3aeffc0ee9f..28e18fd2943 100644 --- a/src/mame/drivers/tank8.c +++ b/src/mame/drivers/tank8.c @@ -45,42 +45,38 @@ WRITE8_MEMBER(tank8_state::tank8_int_reset_w) WRITE8_MEMBER(tank8_state::tank8_crash_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, TANK8_CRASH_EN, data); + discrete_sound_w(m_discrete, space, TANK8_CRASH_EN, data); } WRITE8_MEMBER(tank8_state::tank8_explosion_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, TANK8_EXPLOSION_EN, data); + discrete_sound_w(m_discrete, space, TANK8_EXPLOSION_EN, data); } WRITE8_MEMBER(tank8_state::tank8_bugle_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, TANK8_BUGLE_EN, data); + discrete_sound_w(m_discrete, space, TANK8_BUGLE_EN, data); } WRITE8_MEMBER(tank8_state::tank8_bug_w) { - device_t *device = machine().device("discrete"); /* D0 and D1 determine the on/off time off the square wave */ switch(data & 3) { case 0: - discrete_sound_w(device, space, TANK8_BUGLE_DATA1,8.0); - discrete_sound_w(device, space, TANK8_BUGLE_DATA2,4.0); + discrete_sound_w(m_discrete, space, TANK8_BUGLE_DATA1,8.0); + discrete_sound_w(m_discrete, space, TANK8_BUGLE_DATA2,4.0); break; case 1: - discrete_sound_w(device, space, TANK8_BUGLE_DATA1,8.0); - discrete_sound_w(device, space, TANK8_BUGLE_DATA2,7.0); + discrete_sound_w(m_discrete, space, TANK8_BUGLE_DATA1,8.0); + discrete_sound_w(m_discrete, space, TANK8_BUGLE_DATA2,7.0); break; case 2: - discrete_sound_w(device, space, TANK8_BUGLE_DATA1,8.0); - discrete_sound_w(device, space, TANK8_BUGLE_DATA2,2.0); + discrete_sound_w(m_discrete, space, TANK8_BUGLE_DATA1,8.0); + discrete_sound_w(m_discrete, space, TANK8_BUGLE_DATA2,2.0); break; case 3: - discrete_sound_w(device, space, TANK8_BUGLE_DATA1,16.0); - discrete_sound_w(device, space, TANK8_BUGLE_DATA2,4.0); + discrete_sound_w(m_discrete, space, TANK8_BUGLE_DATA1,16.0); + discrete_sound_w(m_discrete, space, TANK8_BUGLE_DATA2,4.0); break; } @@ -88,14 +84,12 @@ WRITE8_MEMBER(tank8_state::tank8_bug_w) WRITE8_MEMBER(tank8_state::tank8_attract_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, TANK8_ATTRACT_EN, data); + discrete_sound_w(m_discrete, space, TANK8_ATTRACT_EN, data); } WRITE8_MEMBER(tank8_state::tank8_motor_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, NODE_RELATIVE(TANK8_MOTOR1_EN, offset), data); + discrete_sound_w(m_discrete, space, NODE_RELATIVE(TANK8_MOTOR1_EN, offset), data); } static ADDRESS_MAP_START( tank8_cpu_map, AS_PROGRAM, 8, tank8_state ) diff --git a/src/mame/drivers/triplhnt.c b/src/mame/drivers/triplhnt.c index 2dec3ca0235..2bf607b749e 100644 --- a/src/mame/drivers/triplhnt.c +++ b/src/mame/drivers/triplhnt.c @@ -33,8 +33,7 @@ void triplhnt_state::triplhnt_set_collision(int code) void triplhnt_state::triplhnt_update_misc(address_space &space, int offset) { - samples_device *samples = space.machine().device<samples_device>("samples"); - device_t *discrete = space.machine().device("discrete"); + samples_device *samples = machine().device<samples_device>("samples"); UINT8 is_witch_hunt; UINT8 bit = offset >> 1; @@ -64,16 +63,16 @@ void triplhnt_state::triplhnt_update_misc(address_space &space, int offset) m_sprite_zoom = (m_misc_flags >> 4) & 1; m_sprite_bank = (m_misc_flags >> 7) & 1; - set_led_status(space.machine(), 0, m_misc_flags & 0x02); + set_led_status(machine(), 0, m_misc_flags & 0x02); - coin_lockout_w(space.machine(), 0, !(m_misc_flags & 0x08)); - coin_lockout_w(space.machine(), 1, !(m_misc_flags & 0x08)); + coin_lockout_w(machine(), 0, !(m_misc_flags & 0x08)); + coin_lockout_w(machine(), 1, !(m_misc_flags & 0x08)); - discrete_sound_w(discrete, space, TRIPLHNT_SCREECH_EN, m_misc_flags & 0x04); // screech - discrete_sound_w(discrete, space, TRIPLHNT_LAMP_EN, m_misc_flags & 0x02); // Lamp is used to reset noise - discrete_sound_w(discrete, space, TRIPLHNT_BEAR_EN, m_misc_flags & 0x80); // bear + discrete_sound_w(m_discrete, space, TRIPLHNT_SCREECH_EN, m_misc_flags & 0x04); // screech + discrete_sound_w(m_discrete, space, TRIPLHNT_LAMP_EN, m_misc_flags & 0x02); // Lamp is used to reset noise + discrete_sound_w(m_discrete, space, TRIPLHNT_BEAR_EN, m_misc_flags & 0x80); // bear - is_witch_hunt = space.machine().root_device().ioport("0C09")->read() == 0x40; + is_witch_hunt = ioport("0C09")->read() == 0x40; bit = ~m_misc_flags & 0x40; /* if we're not playing the sample yet, start it */ diff --git a/src/mame/drivers/uapce.c b/src/mame/drivers/uapce.c index 8a0296ca22a..9515803705b 100644 --- a/src/mame/drivers/uapce.c +++ b/src/mame/drivers/uapce.c @@ -103,7 +103,8 @@ class uapce_state : public pce_common_state { public: uapce_state(const machine_config &mconfig, device_type type, const char *tag) - : pce_common_state(mconfig, type, tag) { } + : pce_common_state(mconfig, type, tag), + m_discrete(*this, "discrete") { } UINT8 m_jamma_if_control_latch; DECLARE_WRITE8_MEMBER(jamma_if_control_latch_w); @@ -111,6 +112,7 @@ public: DECLARE_READ8_MEMBER(jamma_if_read_dsw); virtual UINT8 joy_read(); virtual void machine_reset(); + required_device<discrete_device> m_discrete; }; #define UAPCE_SOUND_EN NODE_10 @@ -157,7 +159,7 @@ WRITE8_MEMBER(uapce_state::jamma_if_control_latch_w) 752 Hz (D-3) square wave to be output on the common audio path. (1= Tone output ON, 0= Tone output OFF) */ - discrete_sound_w(machine().device("discrete"), space, UAPCE_SOUND_EN, BIT(data,3)); + discrete_sound_w(m_discrete, space, UAPCE_SOUND_EN, BIT(data,3)); /* D2 : Not latched, though software writes to this bit like it is. */ diff --git a/src/mame/drivers/ultratnk.c b/src/mame/drivers/ultratnk.c index 0342cd2cc54..9f3ea7eacce 100644 --- a/src/mame/drivers/ultratnk.c +++ b/src/mame/drivers/ultratnk.c @@ -129,23 +129,19 @@ WRITE8_MEMBER(ultratnk_state::ultratnk_lockout_w) WRITE8_MEMBER(ultratnk_state::ultratnk_fire_1_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, ULTRATNK_FIRE_EN_1, offset & 1); + discrete_sound_w(m_discrete, space, ULTRATNK_FIRE_EN_1, offset & 1); } WRITE8_MEMBER(ultratnk_state::ultratnk_fire_2_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, ULTRATNK_FIRE_EN_2, offset & 1); + discrete_sound_w(m_discrete, space, ULTRATNK_FIRE_EN_2, offset & 1); } WRITE8_MEMBER(ultratnk_state::ultratnk_attract_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, ULTRATNK_ATTRACT_EN, data & 1); + discrete_sound_w(m_discrete, space, ULTRATNK_ATTRACT_EN, data & 1); } WRITE8_MEMBER(ultratnk_state::ultratnk_explosion_w) { - device_t *device = machine().device("discrete"); - discrete_sound_w(device, space, ULTRATNK_EXPLOSION_DATA, data & 15); + discrete_sound_w(m_discrete, space, ULTRATNK_EXPLOSION_DATA, data & 15); } diff --git a/src/mame/drivers/videopin.c b/src/mame/drivers/videopin.c index 8d35d33678a..51e13a95deb 100644 --- a/src/mame/drivers/videopin.c +++ b/src/mame/drivers/videopin.c @@ -134,7 +134,6 @@ WRITE8_MEMBER(videopin_state::videopin_led_w) WRITE8_MEMBER(videopin_state::videopin_out1_w) { - device_t *device = machine().device("discrete"); /* D0 => OCTAVE0 */ /* D1 => OCTACE1 */ /* D2 => OCTAVE2 */ @@ -152,13 +151,12 @@ WRITE8_MEMBER(videopin_state::videopin_out1_w) coin_lockout_global_w(machine(), ~data & 0x08); /* Convert octave data to divide value and write to sound */ - discrete_sound_w(device, space, VIDEOPIN_OCTAVE_DATA, (0x01 << (~data & 0x07)) & 0xfe); + discrete_sound_w(m_discrete, space, VIDEOPIN_OCTAVE_DATA, (0x01 << (~data & 0x07)) & 0xfe); } WRITE8_MEMBER(videopin_state::videopin_out2_w) { - device_t *device = machine().device("discrete"); /* D0 => VOL0 */ /* D1 => VOL1 */ /* D2 => VOL2 */ @@ -170,18 +168,17 @@ WRITE8_MEMBER(videopin_state::videopin_out2_w) coin_counter_w(machine(), 0, data & 0x10); - discrete_sound_w(device, space, VIDEOPIN_BELL_EN, data & 0x40); // Bell - discrete_sound_w(device, space, VIDEOPIN_BONG_EN, data & 0x20); // Bong - discrete_sound_w(device, space, VIDEOPIN_ATTRACT_EN, data & 0x80); // Attract - discrete_sound_w(device, space, VIDEOPIN_VOL_DATA, data & 0x07); // Vol0,1,2 + discrete_sound_w(m_discrete, space, VIDEOPIN_BELL_EN, data & 0x40); // Bell + discrete_sound_w(m_discrete, space, VIDEOPIN_BONG_EN, data & 0x20); // Bong + discrete_sound_w(m_discrete, space, VIDEOPIN_ATTRACT_EN, data & 0x80); // Attract + discrete_sound_w(m_discrete, space, VIDEOPIN_VOL_DATA, data & 0x07); // Vol0,1,2 } WRITE8_MEMBER(videopin_state::videopin_note_dvsr_w) { - device_t *device = machine().device("discrete"); /* note data */ - discrete_sound_w(device, space, VIDEOPIN_NOTE_DATA, ~data &0xff); + discrete_sound_w(m_discrete, space, VIDEOPIN_NOTE_DATA, ~data &0xff); } diff --git a/src/mame/drivers/wiz.c b/src/mame/drivers/wiz.c index 14c7562fc28..385a638d075 100644 --- a/src/mame/drivers/wiz.c +++ b/src/mame/drivers/wiz.c @@ -174,8 +174,6 @@ Stephh's notes (based on the games Z80 code and some tests) : WRITE8_MEMBER(wiz_state::sound_command_w) { - device_t *discrete = machine().device("discrete"); - switch (offset) { // 0x90 triggers a jump to non-existant address(development system?) and must be filtered @@ -185,14 +183,14 @@ WRITE8_MEMBER(wiz_state::sound_command_w) // explosion sound trigger(analog?) case 0x08: - discrete_sound_w(discrete, space, STINGER_BOOM_EN1, m_dsc1); - discrete_sound_w(discrete, space, STINGER_BOOM_EN2, m_dsc1^=1); + discrete_sound_w(m_discrete, space, STINGER_BOOM_EN1, m_dsc1); + discrete_sound_w(m_discrete, space, STINGER_BOOM_EN2, m_dsc1^=1); break; // player shot sound trigger(analog?) case 0x0a: - discrete_sound_w(discrete, space, STINGER_SHOT_EN1, m_dsc0); - discrete_sound_w(discrete, space, STINGER_SHOT_EN2, m_dsc0^=1); + discrete_sound_w(m_discrete, space, STINGER_SHOT_EN1, m_dsc0); + discrete_sound_w(m_discrete, space, STINGER_SHOT_EN2, m_dsc0^=1); break; } } diff --git a/src/mame/includes/atarifb.h b/src/mame/includes/atarifb.h index f09a0d1c026..e8e867e5647 100644 --- a/src/mame/includes/atarifb.h +++ b/src/mame/includes/atarifb.h @@ -25,7 +25,8 @@ public: m_field_videoram(*this, "field_videoram"), m_spriteram(*this, "spriteram"), m_scroll_register(*this, "scroll_register"), - m_maincpu(*this, "maincpu"){ } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete"){ } /* video-related */ required_shared_ptr<UINT8> m_alphap1_videoram; @@ -59,6 +60,7 @@ public: /* devices */ required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; DECLARE_WRITE8_MEMBER(atarifb_out1_w); DECLARE_WRITE8_MEMBER(atarifb4_out1_w); DECLARE_WRITE8_MEMBER(abaseb_out1_w); diff --git a/src/mame/includes/grchamp.h b/src/mame/includes/grchamp.h index b31687dc0e9..bea1d5be3bd 100644 --- a/src/mame/includes/grchamp.h +++ b/src/mame/includes/grchamp.h @@ -19,7 +19,8 @@ public: m_centerram(*this, "centerram"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), - m_subcpu(*this, "sub") { } + m_subcpu(*this, "sub"), + m_discrete(*this, "discrete") { } UINT8 m_cpu0_out[16]; UINT8 m_cpu1_out[16]; @@ -82,6 +83,7 @@ public: required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_subcpu; + required_device<discrete_device> m_discrete; }; /* Discrete Sound Input Nodes */ diff --git a/src/mame/includes/hitme.h b/src/mame/includes/hitme.h index 25471a8e185..649023b7ab6 100644 --- a/src/mame/includes/hitme.h +++ b/src/mame/includes/hitme.h @@ -18,7 +18,8 @@ public: hitme_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_videoram(*this, "videoram"), - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } /* memory pointers */ required_shared_ptr<UINT8> m_videoram; @@ -45,6 +46,7 @@ public: UINT8 read_port_and_t0( int port ); UINT8 read_port_and_t0_and_hblank( int port ); required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; }; diff --git a/src/mame/includes/madalien.h b/src/mame/includes/madalien.h index ea389878fa8..998239a0bb2 100644 --- a/src/mame/includes/madalien.h +++ b/src/mame/includes/madalien.h @@ -28,7 +28,8 @@ public: m_edge2_pos(*this, "edge2_pos"), m_scroll(*this, "scroll"), m_maincpu(*this, "maincpu"), - m_audiocpu(*this, "audiocpu") { } + m_audiocpu(*this, "audiocpu"), + m_discrete(*this, "discrete") { } required_shared_ptr<UINT8> m_videoram; required_shared_ptr<UINT8> m_charram; @@ -72,6 +73,7 @@ public: inline UINT8 shift_common(UINT8 hi, UINT8 lo); required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; + required_device<discrete_device> m_discrete; }; /*----------- defined in video/madalien.c -----------*/ diff --git a/src/mame/includes/norautp.h b/src/mame/includes/norautp.h index d631ba22c75..585dc04cad8 100644 --- a/src/mame/includes/norautp.h +++ b/src/mame/includes/norautp.h @@ -11,7 +11,8 @@ class norautp_state : public driver_device public: norautp_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } UINT16 *m_np_vram; UINT16 m_np_addr; @@ -30,6 +31,7 @@ public: virtual void palette_init(); UINT32 screen_update_norautp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; }; /*----------- defined in audio/norautp.c -----------*/ diff --git a/src/mame/includes/skydiver.h b/src/mame/includes/skydiver.h index 710020e8603..3c40dd7105c 100644 --- a/src/mame/includes/skydiver.h +++ b/src/mame/includes/skydiver.h @@ -25,7 +25,8 @@ public: skydiver_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_videoram(*this, "videoram") , - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } required_shared_ptr<UINT8> m_videoram; int m_nmion; @@ -55,6 +56,7 @@ public: INTERRUPT_GEN_MEMBER(skydiver_interrupt); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; }; /*----------- defined in audio/skydiver.c -----------*/ diff --git a/src/mame/includes/sprint2.h b/src/mame/includes/sprint2.h index 2f5366d5561..91b8ed0a1bf 100644 --- a/src/mame/includes/sprint2.h +++ b/src/mame/includes/sprint2.h @@ -27,7 +27,8 @@ public: sprint2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_video_ram(*this, "video_ram"), - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } int m_attract; int m_steering[2]; @@ -74,6 +75,7 @@ public: inline int get_sprite_y(UINT8 *video_ram, int n); int service_mode(); required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; }; /*----------- defined in audio/sprint2.c -----------*/ diff --git a/src/mame/includes/sprint4.h b/src/mame/includes/sprint4.h index 75263ced83a..dc4e4e342b2 100644 --- a/src/mame/includes/sprint4.h +++ b/src/mame/includes/sprint4.h @@ -4,7 +4,8 @@ public: sprint4_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_videoram(*this, "videoram"), - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } required_shared_ptr<UINT8> m_videoram; int m_da_latch; @@ -43,4 +44,5 @@ public: void screen_eof_sprint4(screen_device &screen, bool state); TIMER_CALLBACK_MEMBER(nmi_callback); required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; }; diff --git a/src/mame/includes/starshp1.h b/src/mame/includes/starshp1.h index e120b2bcbb4..f0eb6166e18 100644 --- a/src/mame/includes/starshp1.h +++ b/src/mame/includes/starshp1.h @@ -39,7 +39,8 @@ public: m_hpos_ram(*this, "hpos_ram"), m_vpos_ram(*this, "vpos_ram"), m_obj_ram(*this, "obj_ram"), - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } int m_analog_in_select; int m_attract; @@ -98,6 +99,7 @@ public: int point_in_circle(int x, int y, int center_x, int center_y, int r); int circle_collision(const rectangle &rect); required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; }; /*----------- defined in audio/starshp1.c -----------*/ diff --git a/src/mame/includes/tank8.h b/src/mame/includes/tank8.h index 42886f3a96c..7a799538aac 100644 --- a/src/mame/includes/tank8.h +++ b/src/mame/includes/tank8.h @@ -33,7 +33,8 @@ public: m_pos_v_ram(*this, "pos_v_ram"), m_pos_d_ram(*this, "pos_d_ram"), m_team(*this, "team"), - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } int m_collision_index; required_shared_ptr<UINT8> m_video_ram; @@ -70,6 +71,7 @@ public: void draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprect); void tank8_set_collision(int index); required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; }; /*----------- defined in audio/tank8.c -----------*/ diff --git a/src/mame/includes/triplhnt.h b/src/mame/includes/triplhnt.h index 73557801375..abea70daf6a 100644 --- a/src/mame/includes/triplhnt.h +++ b/src/mame/includes/triplhnt.h @@ -26,7 +26,8 @@ public: m_hpos_ram(*this, "hpos_ram"), m_orga_ram(*this, "orga_ram"), m_code_ram(*this, "code_ram"), - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } UINT8 m_cmos[16]; UINT8 m_da_latch; @@ -57,6 +58,7 @@ public: void triplhnt_set_collision(int code); void triplhnt_update_misc(address_space &space, int offset); required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; }; diff --git a/src/mame/includes/ultratnk.h b/src/mame/includes/ultratnk.h index d3339244797..7c4d9a6b749 100644 --- a/src/mame/includes/ultratnk.h +++ b/src/mame/includes/ultratnk.h @@ -4,6 +4,7 @@ *************************************************************************/ +#include "sound/discrete.h" class ultratnk_state : public driver_device { @@ -11,7 +12,8 @@ public: ultratnk_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_videoram(*this, "videoram"), - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } required_shared_ptr<UINT8> m_videoram; int m_da_latch; @@ -44,4 +46,5 @@ public: void screen_eof_ultratnk(screen_device &screen, bool state); TIMER_CALLBACK_MEMBER(nmi_callback); required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; }; diff --git a/src/mame/includes/videopin.h b/src/mame/includes/videopin.h index 9c8f6717c56..7a921e12cb9 100644 --- a/src/mame/includes/videopin.h +++ b/src/mame/includes/videopin.h @@ -21,7 +21,8 @@ public: videopin_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_video_ram(*this, "video_ram"), - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_discrete(*this, "discrete") { } attotime m_time_pushed; attotime m_time_released; @@ -47,6 +48,7 @@ public: void update_plunger(); double calc_plunger_pos(); required_device<cpu_device> m_maincpu; + required_device<discrete_device> m_discrete; }; /*----------- defined in audio/videopin.c -----------*/ diff --git a/src/mame/includes/wiz.h b/src/mame/includes/wiz.h index 9ff4e782252..cd1c441de0d 100644 --- a/src/mame/includes/wiz.h +++ b/src/mame/includes/wiz.h @@ -1,3 +1,5 @@ +#include "sound/discrete.h" + class wiz_state : public driver_device { public: @@ -12,7 +14,8 @@ public: m_spriteram(*this, "spriteram"), m_sprite_bank(*this, "sprite_bank"), m_maincpu(*this, "maincpu"), - m_audiocpu(*this, "audiocpu") { } + m_audiocpu(*this, "audiocpu"), + m_discrete(*this, "discrete") { } int m_dsc0; int m_dsc1; @@ -60,4 +63,5 @@ public: void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect, UINT8* sprite_ram,int bank); required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; + optional_device<discrete_device> m_discrete; }; diff --git a/src/mame/machine/atarifb.c b/src/mame/machine/atarifb.c index d7872c9d751..5850fbb486e 100644 --- a/src/mame/machine/atarifb.c +++ b/src/mame/machine/atarifb.c @@ -11,27 +11,23 @@ WRITE8_MEMBER(atarifb_state::atarifb_out1_w) { - device_t *discrete = machine().device("discrete"); - m_CTRLD = data; - discrete_sound_w(discrete, space, ATARIFB_WHISTLE_EN, data & 0x01); // Whistle - discrete_sound_w(discrete, space, ATARIFB_HIT_EN, data & 0x02); // Hit - discrete_sound_w(discrete, space, ATARIFB_ATTRACT_EN, data & 0x10); // Attract - discrete_sound_w(discrete, space, ATARIFB_NOISE_EN, data & 0x04); // Noise Enable / Kicker + discrete_sound_w(m_discrete, space, ATARIFB_WHISTLE_EN, data & 0x01); // Whistle + discrete_sound_w(m_discrete, space, ATARIFB_HIT_EN, data & 0x02); // Hit + discrete_sound_w(m_discrete, space, ATARIFB_ATTRACT_EN, data & 0x10); // Attract + discrete_sound_w(m_discrete, space, ATARIFB_NOISE_EN, data & 0x04); // Noise Enable / Kicker } WRITE8_MEMBER(atarifb_state::atarifb4_out1_w) { - device_t *discrete = machine().device("discrete"); - m_CTRLD = data; - discrete_sound_w(discrete, space, ATARIFB_WHISTLE_EN, data & 0x01); // Whistle - discrete_sound_w(discrete, space, ATARIFB_HIT_EN, data & 0x02); // Hit - discrete_sound_w(discrete, space, ATARIFB_ATTRACT_EN, data & 0x10); // Attract - discrete_sound_w(discrete, space, ATARIFB_NOISE_EN, data & 0x04); // Noise Enable / Kicker + discrete_sound_w(m_discrete, space, ATARIFB_WHISTLE_EN, data & 0x01); // Whistle + discrete_sound_w(m_discrete, space, ATARIFB_HIT_EN, data & 0x02); // Hit + discrete_sound_w(m_discrete, space, ATARIFB_ATTRACT_EN, data & 0x10); // Attract + discrete_sound_w(m_discrete, space, ATARIFB_NOISE_EN, data & 0x04); // Noise Enable / Kicker coin_counter_w(machine(), 1, data & 0x80); } @@ -39,14 +35,12 @@ WRITE8_MEMBER(atarifb_state::atarifb4_out1_w) WRITE8_MEMBER(atarifb_state::abaseb_out1_w) { - device_t *discrete = machine().device("discrete"); - m_CTRLD = data; - discrete_sound_w(discrete, space, ATARIFB_WHISTLE_EN, data & 0x01); // Whistle - discrete_sound_w(discrete, space, ATARIFB_HIT_EN, data & 0x02); // Hit - discrete_sound_w(discrete, space, ATARIFB_ATTRACT_EN, data & 0x10); // Attract - discrete_sound_w(discrete, space, ATARIFB_NOISE_EN, data & 0x04); // Noise Enable / Kicker + discrete_sound_w(m_discrete, space, ATARIFB_WHISTLE_EN, data & 0x01); // Whistle + discrete_sound_w(m_discrete, space, ATARIFB_HIT_EN, data & 0x02); // Hit + discrete_sound_w(m_discrete, space, ATARIFB_ATTRACT_EN, data & 0x10); // Attract + discrete_sound_w(m_discrete, space, ATARIFB_NOISE_EN, data & 0x04); // Noise Enable / Kicker if (data & 0x80) { @@ -65,8 +59,6 @@ WRITE8_MEMBER(atarifb_state::abaseb_out1_w) WRITE8_MEMBER(atarifb_state::soccer_out1_w) { - device_t *discrete = machine().device("discrete"); - m_CTRLD = data; /* bit 0 = whistle */ @@ -77,10 +69,10 @@ WRITE8_MEMBER(atarifb_state::soccer_out1_w) /* bit 5-6 = trackball CTRL bits */ /* bit 7 = Rule LED */ - discrete_sound_w(discrete, space, ATARIFB_WHISTLE_EN, data & 0x01); // Whistle - discrete_sound_w(discrete, space, ATARIFB_HIT_EN, data & 0x02); // Hit - discrete_sound_w(discrete, space, ATARIFB_ATTRACT_EN, data & 0x10); // Attract - discrete_sound_w(discrete, space, ATARIFB_NOISE_EN, data & 0x04); // Noise Enable / Kicker + discrete_sound_w(m_discrete, space, ATARIFB_WHISTLE_EN, data & 0x01); // Whistle + discrete_sound_w(m_discrete, space, ATARIFB_HIT_EN, data & 0x02); // Hit + discrete_sound_w(m_discrete, space, ATARIFB_ATTRACT_EN, data & 0x10); // Attract + discrete_sound_w(m_discrete, space, ATARIFB_NOISE_EN, data & 0x04); // Noise Enable / Kicker // set_led_status(machine(), 0, data & 0x10); // !!!!!!!!!! Is this correct???? set_led_status(machine(), 1, data & 0x80); @@ -89,9 +81,7 @@ WRITE8_MEMBER(atarifb_state::soccer_out1_w) WRITE8_MEMBER(atarifb_state::atarifb_out2_w) { - device_t *discrete = machine().device("discrete"); - - discrete_sound_w(discrete, space, ATARIFB_CROWD_DATA, data & 0x0f); // Crowd + discrete_sound_w(m_discrete, space, ATARIFB_CROWD_DATA, data & 0x0f); // Crowd coin_counter_w (machine(), 0, data & 0x10); } @@ -99,9 +89,7 @@ WRITE8_MEMBER(atarifb_state::atarifb_out2_w) WRITE8_MEMBER(atarifb_state::soccer_out2_w) { - device_t *discrete = machine().device("discrete"); - - discrete_sound_w(discrete, space, ATARIFB_CROWD_DATA, data & 0x0f); // Crowd + discrete_sound_w(m_discrete, space, ATARIFB_CROWD_DATA, data & 0x0f); // Crowd coin_counter_w (machine(), 0, data & 0x10); coin_counter_w (machine(), 1, data & 0x20); diff --git a/src/mame/video/skydiver.c b/src/mame/video/skydiver.c index abc39f2f3dc..7d2a2982909 100644 --- a/src/mame/video/skydiver.c +++ b/src/mame/video/skydiver.c @@ -124,7 +124,6 @@ WRITE8_MEMBER(skydiver_state::skydiver_lamp_d_w) WRITE8_MEMBER(skydiver_state::skydiver_2000_201F_w) { - device_t *discrete = machine().device("discrete"); int bit = offset & 0x01; watchdog_reset_w(space,0,0); @@ -144,13 +143,13 @@ WRITE8_MEMBER(skydiver_state::skydiver_2000_201F_w) output_set_value("lampr", bit); break; case (0x0a): - discrete_sound_w(discrete, space, SKYDIVER_OCT1_EN, bit); + discrete_sound_w(m_discrete, space, SKYDIVER_OCT1_EN, bit); break; case (0x0c): - discrete_sound_w(discrete, space, SKYDIVER_OCT2_EN, bit); + discrete_sound_w(m_discrete, space, SKYDIVER_OCT2_EN, bit); break; case (0x0e): - discrete_sound_w(discrete, space, SKYDIVER_NOISE_RST, bit); + discrete_sound_w(m_discrete, space, SKYDIVER_NOISE_RST, bit); break; } } diff --git a/src/mame/video/sprint4.c b/src/mame/video/sprint4.c index d04ba58914e..dd4f5719ca1 100644 --- a/src/mame/video/sprint4.c +++ b/src/mame/video/sprint4.c @@ -95,8 +95,6 @@ void sprint4_state::screen_eof_sprint4(screen_device &screen, bool state) /* check for sprite-playfield collisions */ - device_t *discrete = machine().device("discrete"); - for (i = 0; i < 4; i++) { rectangle rect; @@ -138,10 +136,10 @@ void sprint4_state::screen_eof_sprint4(screen_device &screen, bool state) /* update sound status */ address_space &space = machine().driver_data()->generic_space(); - discrete_sound_w(discrete, space, SPRINT4_MOTOR_DATA_1, videoram[0x391] & 15); - discrete_sound_w(discrete, space, SPRINT4_MOTOR_DATA_2, videoram[0x393] & 15); - discrete_sound_w(discrete, space, SPRINT4_MOTOR_DATA_3, videoram[0x395] & 15); - discrete_sound_w(discrete, space, SPRINT4_MOTOR_DATA_4, videoram[0x397] & 15); + discrete_sound_w(m_discrete, space, SPRINT4_MOTOR_DATA_1, videoram[0x391] & 15); + discrete_sound_w(m_discrete, space, SPRINT4_MOTOR_DATA_2, videoram[0x393] & 15); + discrete_sound_w(m_discrete, space, SPRINT4_MOTOR_DATA_3, videoram[0x395] & 15); + discrete_sound_w(m_discrete, space, SPRINT4_MOTOR_DATA_4, videoram[0x397] & 15); } } diff --git a/src/mame/video/subs.c b/src/mame/video/subs.c index b78d5e62b0a..6cad86610fb 100644 --- a/src/mame/video/subs.c +++ b/src/mame/video/subs.c @@ -43,8 +43,6 @@ UINT32 subs_state::screen_update_subs_left(screen_device &screen, bitmap_ind16 & UINT8 *spriteram = m_spriteram; int offs; - device_t *discrete = machine().device("discrete"); - /* for every character in the Video RAM, check if it has been modified */ /* since last time and update it accordingly. */ for (offs = 0x400 - 1; offs >= 0; offs--) @@ -114,8 +112,8 @@ UINT32 subs_state::screen_update_subs_left(screen_device &screen, bitmap_ind16 & /* Update sound */ address_space &space = machine().driver_data()->generic_space(); - discrete_sound_w(discrete, space, SUBS_LAUNCH_DATA, spriteram[5] & 0x0f); // Launch data - discrete_sound_w(discrete, space, SUBS_CRASH_DATA, spriteram[5] >> 4); // Crash/explode data + discrete_sound_w(m_discrete, space, SUBS_LAUNCH_DATA, spriteram[5] & 0x0f); // Launch data + discrete_sound_w(m_discrete, space, SUBS_CRASH_DATA, spriteram[5] >> 4); // Crash/explode data return 0; } diff --git a/src/mame/video/triplhnt.c b/src/mame/video/triplhnt.c index a5aa49cbdb1..4a7a3c46b52 100644 --- a/src/mame/video/triplhnt.c +++ b/src/mame/video/triplhnt.c @@ -104,8 +104,6 @@ void triplhnt_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec UINT32 triplhnt_state::screen_update_triplhnt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - device_t *discrete = machine().device("discrete"); - m_bg_tilemap->mark_all_dirty(); m_bg_tilemap->draw(bitmap, cliprect, 0, 0); @@ -113,7 +111,7 @@ UINT32 triplhnt_state::screen_update_triplhnt(screen_device &screen, bitmap_ind1 draw_sprites(bitmap, cliprect); address_space &space = machine().driver_data()->generic_space(); - discrete_sound_w(discrete, space, TRIPLHNT_BEAR_ROAR_DATA, m_playfield_ram[0xfa] & 15); - discrete_sound_w(discrete, space, TRIPLHNT_SHOT_DATA, m_playfield_ram[0xfc] & 15); + discrete_sound_w(m_discrete, space, TRIPLHNT_BEAR_ROAR_DATA, m_playfield_ram[0xfa] & 15); + discrete_sound_w(m_discrete, space, TRIPLHNT_SHOT_DATA, m_playfield_ram[0xfc] & 15); return 0; } diff --git a/src/mame/video/ultratnk.c b/src/mame/video/ultratnk.c index 786357ddde5..d72821a66e9 100644 --- a/src/mame/video/ultratnk.c +++ b/src/mame/video/ultratnk.c @@ -95,7 +95,6 @@ void ultratnk_state::screen_eof_ultratnk(screen_device &screen, bool state) { int i; UINT16 BG = colortable_entry_get_value(machine().colortable, 0); - device_t *discrete = machine().device("discrete"); UINT8 *videoram = m_videoram; /* check for sprite-playfield collisions */ @@ -141,8 +140,8 @@ void ultratnk_state::screen_eof_ultratnk(screen_device &screen, bool state) /* update sound status */ address_space &space = machine().driver_data()->generic_space(); - discrete_sound_w(discrete, space, ULTRATNK_MOTOR_DATA_1, videoram[0x391] & 15); - discrete_sound_w(discrete, space, ULTRATNK_MOTOR_DATA_2, videoram[0x393] & 15); + discrete_sound_w(m_discrete, space, ULTRATNK_MOTOR_DATA_1, videoram[0x391] & 15); + discrete_sound_w(m_discrete, space, ULTRATNK_MOTOR_DATA_2, videoram[0x393] & 15); } } |