80
static READ8_HANDLER( bking3_ext_check_r )
74
READ8_MEMBER(bking_state::bking3_ext_check_r)
82
76
return 0x31; //no "bad rom.", no "bad ext."
85
static ADDRESS_MAP_START( bking_map, AS_PROGRAM, 8 )
79
static ADDRESS_MAP_START( bking_map, AS_PROGRAM, 8, bking_state )
86
80
AM_RANGE(0x0000, 0x7fff) AM_ROM
87
81
AM_RANGE(0x8000, 0x83ff) AM_RAM
88
AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(bking_playfield_w) AM_BASE_MEMBER(bking_state, m_playfield_ram)
91
static ADDRESS_MAP_START( bking_io_map, AS_IO, 8 )
92
ADDRESS_MAP_GLOBAL_MASK(0xff)
93
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(bking_xld1_w)
94
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(bking_yld1_w)
95
AM_RANGE(0x02, 0x02) AM_READ_PORT("DSWA") AM_WRITE(bking_xld2_w)
96
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWB") AM_WRITE(bking_yld2_w)
97
AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWC") AM_WRITE(bking_xld3_w)
98
AM_RANGE(0x05, 0x05) AM_READWRITE(bking_input_port_5_r, bking_yld3_w)
99
AM_RANGE(0x06, 0x06) AM_READWRITE(bking_input_port_6_r, bking_msk_w)
100
AM_RANGE(0x07, 0x07) AM_WRITE(watchdog_reset_w)
101
AM_RANGE(0x08, 0x08) AM_WRITE(bking_cont1_w)
102
AM_RANGE(0x09, 0x09) AM_WRITE(bking_cont2_w)
103
AM_RANGE(0x0a, 0x0a) AM_WRITE(bking_cont3_w)
104
AM_RANGE(0x0b, 0x0b) AM_WRITE(bking_soundlatch_w)
105
// AM_RANGE(0x0c, 0x0c) AM_WRITE(bking_eport2_w) this is not shown to be connected anywhere
106
AM_RANGE(0x0d, 0x0d) AM_WRITE(bking_hitclr_w)
107
AM_RANGE(0x07, 0x1f) AM_READ(bking_pos_r)
110
static ADDRESS_MAP_START( bking3_io_map, AS_IO, 8 )
111
ADDRESS_MAP_GLOBAL_MASK(0xff)
112
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(bking_xld1_w)
113
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(bking_yld1_w)
114
AM_RANGE(0x02, 0x02) AM_READ_PORT("DSWA") AM_WRITE(bking_xld2_w)
115
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWB") AM_WRITE(bking_yld2_w)
116
AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWC") AM_WRITE(bking_xld3_w)
117
AM_RANGE(0x05, 0x05) AM_READWRITE(bking_input_port_5_r, bking_yld3_w)
118
AM_RANGE(0x06, 0x06) AM_READWRITE(bking_input_port_6_r, bking_msk_w)
119
AM_RANGE(0x07, 0x07) AM_WRITE(watchdog_reset_w)
120
AM_RANGE(0x08, 0x08) AM_WRITE(bking_cont1_w)
121
AM_RANGE(0x09, 0x09) AM_WRITE(bking_cont2_w)
122
AM_RANGE(0x0a, 0x0a) AM_WRITE(bking_cont3_w)
123
AM_RANGE(0x0b, 0x0b) AM_WRITE(bking_soundlatch_w)
124
// AM_RANGE(0x0c, 0x0c) AM_WRITE(bking_eport2_w) this is not shown to be connected anywhere
125
AM_RANGE(0x0d, 0x0d) AM_WRITE(bking_hitclr_w)
126
AM_RANGE(0x07, 0x1f) AM_READ(bking_pos_r)
127
AM_RANGE(0x2f, 0x2f) AM_DEVREADWRITE("bmcu", buggychl_mcu_r, buggychl_mcu_w)
128
AM_RANGE(0x4f, 0x4f) AM_DEVREADWRITE("bmcu", buggychl_mcu_status_r, unk_w)
82
AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(bking_playfield_w) AM_SHARE("playfield_ram")
85
static ADDRESS_MAP_START( bking_io_map, AS_IO, 8, bking_state )
86
ADDRESS_MAP_GLOBAL_MASK(0xff)
87
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(bking_xld1_w)
88
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(bking_yld1_w)
89
AM_RANGE(0x02, 0x02) AM_READ_PORT("DSWA") AM_WRITE(bking_xld2_w)
90
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWB") AM_WRITE(bking_yld2_w)
91
AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWC") AM_WRITE(bking_xld3_w)
92
AM_RANGE(0x05, 0x05) AM_READWRITE(bking_input_port_5_r, bking_yld3_w)
93
AM_RANGE(0x06, 0x06) AM_READWRITE(bking_input_port_6_r, bking_msk_w)
94
AM_RANGE(0x07, 0x07) AM_WRITE(watchdog_reset_w)
95
AM_RANGE(0x08, 0x08) AM_WRITE(bking_cont1_w)
96
AM_RANGE(0x09, 0x09) AM_WRITE(bking_cont2_w)
97
AM_RANGE(0x0a, 0x0a) AM_WRITE(bking_cont3_w)
98
AM_RANGE(0x0b, 0x0b) AM_WRITE(bking_soundlatch_w)
99
// AM_RANGE(0x0c, 0x0c) AM_WRITE_LEGACY(bking_eport2_w) this is not shown to be connected anywhere
100
AM_RANGE(0x0d, 0x0d) AM_WRITE(bking_hitclr_w)
101
AM_RANGE(0x07, 0x1f) AM_READ(bking_pos_r)
104
static ADDRESS_MAP_START( bking3_io_map, AS_IO, 8, bking_state )
105
ADDRESS_MAP_GLOBAL_MASK(0xff)
106
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(bking_xld1_w)
107
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(bking_yld1_w)
108
AM_RANGE(0x02, 0x02) AM_READ_PORT("DSWA") AM_WRITE(bking_xld2_w)
109
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWB") AM_WRITE(bking_yld2_w)
110
AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWC") AM_WRITE(bking_xld3_w)
111
AM_RANGE(0x05, 0x05) AM_READWRITE(bking_input_port_5_r, bking_yld3_w)
112
AM_RANGE(0x06, 0x06) AM_READWRITE(bking_input_port_6_r, bking_msk_w)
113
AM_RANGE(0x07, 0x07) AM_WRITE(watchdog_reset_w)
114
AM_RANGE(0x08, 0x08) AM_WRITE(bking_cont1_w)
115
AM_RANGE(0x09, 0x09) AM_WRITE(bking_cont2_w)
116
AM_RANGE(0x0a, 0x0a) AM_WRITE(bking_cont3_w)
117
AM_RANGE(0x0b, 0x0b) AM_WRITE(bking_soundlatch_w)
118
// AM_RANGE(0x0c, 0x0c) AM_WRITE_LEGACY(bking_eport2_w) this is not shown to be connected anywhere
119
AM_RANGE(0x0d, 0x0d) AM_WRITE(bking_hitclr_w)
120
AM_RANGE(0x07, 0x1f) AM_READ(bking_pos_r)
121
AM_RANGE(0x2f, 0x2f) AM_DEVREADWRITE_LEGACY("bmcu", buggychl_mcu_r, buggychl_mcu_w)
122
AM_RANGE(0x4f, 0x4f) AM_DEVREADWRITE_LEGACY("bmcu", buggychl_mcu_status_r, unk_w)
129
123
AM_RANGE(0x60, 0x60) AM_READ(bking3_extrarom_r)
130
124
AM_RANGE(0x6f, 0x6f) AM_READWRITE(bking3_ext_check_r, bking3_addr_h_w)
131
125
AM_RANGE(0x8f, 0x8f) AM_WRITE(bking3_addr_l_w)
134
static ADDRESS_MAP_START( bking_audio_map, AS_PROGRAM, 8 )
128
static ADDRESS_MAP_START( bking_audio_map, AS_PROGRAM, 8, bking_state )
135
129
AM_RANGE(0x0000, 0x1fff) AM_ROM
136
130
AM_RANGE(0x2000, 0x2fff) AM_ROM //only bking3
137
131
AM_RANGE(0x4000, 0x43ff) AM_RAM
138
AM_RANGE(0x4400, 0x4401) AM_DEVWRITE("ay1", ay8910_address_data_w)
139
AM_RANGE(0x4401, 0x4401) AM_DEVREAD("ay1", ay8910_r)
140
AM_RANGE(0x4402, 0x4403) AM_DEVWRITE("ay2", ay8910_address_data_w)
141
AM_RANGE(0x4403, 0x4403) AM_DEVREAD("ay2", ay8910_r)
142
AM_RANGE(0x4800, 0x4800) AM_READ(soundlatch_r)
132
AM_RANGE(0x4400, 0x4401) AM_DEVWRITE_LEGACY("ay1", ay8910_address_data_w)
133
AM_RANGE(0x4401, 0x4401) AM_DEVREAD_LEGACY("ay1", ay8910_r)
134
AM_RANGE(0x4402, 0x4403) AM_DEVWRITE_LEGACY("ay2", ay8910_address_data_w)
135
AM_RANGE(0x4403, 0x4403) AM_DEVREAD_LEGACY("ay2", ay8910_r)
136
AM_RANGE(0x4800, 0x4800) AM_READ(soundlatch_byte_r)
143
137
AM_RANGE(0x4802, 0x4802) AM_READWRITE(bking_sndnmi_disable_r, bking_sndnmi_enable_w)
144
138
AM_RANGE(0xe000, 0xefff) AM_ROM /* Space for diagnostic ROM */
148
static READ8_HANDLER( bking3_68705_port_a_r )
142
READ8_MEMBER(bking_state::bking3_68705_port_a_r)
150
bking_state *state = space->machine().driver_data<bking_state>();
151
//printf("port_a_r = %02X\n",(state->m_port_a_out & state->m_ddr_a) | (state->m_port_a_in & ~state->m_ddr_a));
152
return (state->m_port_a_out & state->m_ddr_a) | (state->m_port_a_in & ~state->m_ddr_a);
144
//printf("port_a_r = %02X\n",(m_port_a_out & m_ddr_a) | (m_port_a_in & ~m_ddr_a));
145
return (m_port_a_out & m_ddr_a) | (m_port_a_in & ~m_ddr_a);
155
static WRITE8_HANDLER( bking3_68705_port_a_w )
148
WRITE8_MEMBER(bking_state::bking3_68705_port_a_w)
157
bking_state *state = space->machine().driver_data<bking_state>();
158
state->m_port_a_out = data;
159
151
// printf("port_a_out = %02X\n",data);
162
static WRITE8_HANDLER( bking3_68705_ddr_a_w )
164
bking_state *state = space->machine().driver_data<bking_state>();
165
state->m_ddr_a = data;
168
static READ8_HANDLER( bking3_68705_port_b_r )
170
bking_state *state = space->machine().driver_data<bking_state>();
171
return (state->m_port_b_out & state->m_ddr_b) | (state->m_port_b_in & ~state->m_ddr_b);
174
static WRITE8_HANDLER( bking3_68705_port_b_w )
176
bking_state *state = space->machine().driver_data<bking_state>();
154
WRITE8_MEMBER(bking_state::bking3_68705_ddr_a_w)
159
READ8_MEMBER(bking_state::bking3_68705_port_b_r)
161
return (m_port_b_out & m_ddr_b) | (m_port_b_in & ~m_ddr_b);
164
WRITE8_MEMBER(bking_state::bking3_68705_port_b_w)
177
166
// if(data != 0xff)
178
167
// printf("port_b_out = %02X\n",data);
180
169
if (~data & 0x02)
182
state->m_port_a_in = from_main;
183
if (main_sent) cputag_set_input_line(space->machine(), "mcu", 0, CLEAR_LINE);
171
m_port_a_in = from_main;
172
if (main_sent) cputag_set_input_line(machine(), "mcu", 0, CLEAR_LINE);
187
176
if (~data & 0x04)
189
178
/* 68705 is writing data for the Z80 */
190
from_mcu = state->m_port_a_out;
179
from_mcu = m_port_a_out;
194
183
if(data != 0xff && data != 0xfb && data != 0xfd)
195
184
printf("port_b_w = %X\n",data);
197
state->m_port_b_out = data;
200
static WRITE8_HANDLER( bking3_68705_ddr_b_w )
189
WRITE8_MEMBER(bking_state::bking3_68705_ddr_b_w)
202
bking_state *state = space->machine().driver_data<bking_state>();
203
state->m_ddr_b = data;
206
static READ8_HANDLER( bking3_68705_port_c_r )
194
READ8_MEMBER(bking_state::bking3_68705_port_c_r)
208
196
int port_c_in = 0;
209
197
if (main_sent) port_c_in |= 0x01;
210
198
if (!mcu_sent) port_c_in |= 0x02;
211
//logerror("%04x: 68705 port C read %02x\n",cpu_get_pc(&space->device()),port_c_in);
199
//logerror("%04x: 68705 port C read %02x\n",cpu_get_pc(&space.device()),port_c_in);
212
200
return port_c_in;