mirror of
https://github.com/holub/mame
synced 2025-05-19 20:29:09 +03:00
discrete lookups removal (nw)
This commit is contained in:
parent
4570c897cf
commit
056c7d387c
@ -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?
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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 )
|
||||
|
@ -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 */
|
||||
|
@ -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. */
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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 -----------*/
|
||||
|
||||
|
@ -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 -----------*/
|
||||
|
@ -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 -----------*/
|
||||
|
@ -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 -----------*/
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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 -----------*/
|
||||
|
@ -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 -----------*/
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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 -----------*/
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user