20
20
cyberbal_state *state = machine.driver_data<cyberbal_state>();
22
22
/* reset the sound system */
23
state->m_bank_base = &machine.region("audiocpu")->base()[0x10000];
24
memory_set_bankptr(machine, "soundbank", &state->m_bank_base[0x0000]);
23
state->m_bank_base = &state->memregion("audiocpu")->base()[0x10000];
24
state->membank("soundbank")->set_base(&state->m_bank_base[0x0000]);
25
25
state->m_fast_68k_int = state->m_io_68k_int = 0;
26
26
state->m_sound_data_from_68k = state->m_sound_data_from_6502 = 0;
27
27
state->m_sound_data_from_68k_ready = state->m_sound_data_from_6502_ready = 0;
36
36
*************************************/
38
READ8_HANDLER( cyberbal_special_port3_r )
38
READ8_MEMBER(cyberbal_state::cyberbal_special_port3_r)
40
cyberbal_state *state = space->machine().driver_data<cyberbal_state>();
41
int temp = input_port_read(space->machine(), "JSAII");
42
if (!(input_port_read(space->machine(), "IN0") & 0x8000)) temp ^= 0x80;
43
if (state->m_cpu_to_sound_ready) temp ^= 0x40;
44
if (state->m_sound_to_cpu_ready) temp ^= 0x20;
40
int temp = ioport("JSAII")->read();
41
if (!(ioport("IN0")->read() & 0x8000)) temp ^= 0x80;
42
if (m_cpu_to_sound_ready) temp ^= 0x40;
43
if (m_sound_to_cpu_ready) temp ^= 0x20;
49
READ8_HANDLER( cyberbal_sound_6502_stat_r )
48
READ8_MEMBER(cyberbal_state::cyberbal_sound_6502_stat_r)
51
cyberbal_state *state = space->machine().driver_data<cyberbal_state>();
53
if (state->m_sound_data_from_6502_ready) temp ^= 0x80;
54
if (state->m_sound_data_from_68k_ready) temp ^= 0x40;
51
if (m_sound_data_from_6502_ready) temp ^= 0x80;
52
if (m_sound_data_from_68k_ready) temp ^= 0x40;
59
WRITE8_HANDLER( cyberbal_sound_bank_select_w )
61
cyberbal_state *state = space->machine().driver_data<cyberbal_state>();
62
memory_set_bankptr(space->machine(), "soundbank", &state->m_bank_base[0x1000 * ((data >> 6) & 3)]);
63
coin_counter_w(space->machine(), 1, (data >> 5) & 1);
64
coin_counter_w(space->machine(), 0, (data >> 4) & 1);
65
cputag_set_input_line(space->machine(), "dac", INPUT_LINE_RESET, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
66
if (!(data & 0x01)) devtag_reset(space->machine(), "ymsnd");
70
READ8_HANDLER( cyberbal_sound_68k_6502_r )
72
cyberbal_state *state = space->machine().driver_data<cyberbal_state>();
73
state->m_sound_data_from_68k_ready = 0;
74
return state->m_sound_data_from_68k;
78
WRITE8_HANDLER( cyberbal_sound_68k_6502_w )
80
cyberbal_state *state = space->machine().driver_data<cyberbal_state>();
82
state->m_sound_data_from_6502 = data;
83
state->m_sound_data_from_6502_ready = 1;
85
if (!state->m_io_68k_int)
57
WRITE8_MEMBER(cyberbal_state::cyberbal_sound_bank_select_w)
59
membank("soundbank")->set_base(&m_bank_base[0x1000 * ((data >> 6) & 3)]);
60
coin_counter_w(machine(), 1, (data >> 5) & 1);
61
coin_counter_w(machine(), 0, (data >> 4) & 1);
62
cputag_set_input_line(machine(), "dac", INPUT_LINE_RESET, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
63
if (!(data & 0x01)) devtag_reset(machine(), "ymsnd");
67
READ8_MEMBER(cyberbal_state::cyberbal_sound_68k_6502_r)
69
m_sound_data_from_68k_ready = 0;
70
return m_sound_data_from_68k;
74
WRITE8_MEMBER(cyberbal_state::cyberbal_sound_68k_6502_w)
77
m_sound_data_from_6502 = data;
78
m_sound_data_from_6502_ready = 1;
87
state->m_io_68k_int = 1;
88
update_sound_68k_interrupts(space->machine());
83
update_sound_68k_interrupts(machine());
119
WRITE16_HANDLER( cyberbal_io_68k_irq_ack_w )
114
WRITE16_MEMBER(cyberbal_state::cyberbal_io_68k_irq_ack_w)
121
cyberbal_state *state = space->machine().driver_data<cyberbal_state>();
122
if (state->m_io_68k_int)
124
state->m_io_68k_int = 0;
125
update_sound_68k_interrupts(space->machine());
119
update_sound_68k_interrupts(machine());
130
READ16_HANDLER( cyberbal_sound_68k_r )
124
READ16_MEMBER(cyberbal_state::cyberbal_sound_68k_r)
132
cyberbal_state *state = space->machine().driver_data<cyberbal_state>();
133
int temp = (state->m_sound_data_from_6502 << 8) | 0xff;
135
state->m_sound_data_from_6502_ready = 0;
137
if (state->m_sound_data_from_6502_ready) temp ^= 0x08;
138
if (state->m_sound_data_from_68k_ready) temp ^= 0x04;
126
int temp = (m_sound_data_from_6502 << 8) | 0xff;
128
m_sound_data_from_6502_ready = 0;
130
if (m_sound_data_from_6502_ready) temp ^= 0x08;
131
if (m_sound_data_from_68k_ready) temp ^= 0x04;
143
WRITE16_HANDLER( cyberbal_sound_68k_w )
136
WRITE16_MEMBER(cyberbal_state::cyberbal_sound_68k_w)
145
cyberbal_state *state = space->machine().driver_data<cyberbal_state>();
146
138
if (ACCESSING_BITS_8_15)
148
state->m_sound_data_from_68k = (data >> 8) & 0xff;
149
state->m_sound_data_from_68k_ready = 1;
140
m_sound_data_from_68k = (data >> 8) & 0xff;
141
m_sound_data_from_68k_ready = 1;
154
WRITE16_HANDLER( cyberbal_sound_68k_dac_w )
146
WRITE16_MEMBER(cyberbal_state::cyberbal_sound_68k_dac_w)
156
cyberbal_state *state = space->machine().driver_data<cyberbal_state>();
157
device_t *dac = space->machine().device((offset & 8) ? "dac2" : "dac1");
148
device_t *dac = machine().device((offset & 8) ? "dac2" : "dac1");
158
149
dac_data_16_w(dac, (((data >> 3) & 0x800) | ((data >> 2) & 0x7ff)) << 4);
160
if (state->m_fast_68k_int)
162
state->m_fast_68k_int = 0;
163
update_sound_68k_interrupts(space->machine());
154
update_sound_68k_interrupts(machine());