47
47
***************************************************************************/
49
static WRITE8_HANDLER( exzisus_cpua_bankswitch_w )
51
exzisus_state *state = space->machine().driver_data<exzisus_state>();
52
UINT8 *RAM = space->machine().region("cpua")->base();
54
if ( (data & 0x0f) != state->m_cpua_bank )
56
state->m_cpua_bank = data & 0x0f;
57
if (state->m_cpua_bank >= 2)
59
memory_set_bankptr(space->machine(), "bank2", &RAM[ 0x10000 + ( (state->m_cpua_bank - 2) * 0x4000 ) ] );
63
flip_screen_set(space->machine(), data & 0x40);
66
static WRITE8_HANDLER( exzisus_cpub_bankswitch_w )
68
exzisus_state *state = space->machine().driver_data<exzisus_state>();
69
UINT8 *RAM = space->machine().region("cpub")->base();
71
if ( (data & 0x0f) != state->m_cpub_bank )
73
state->m_cpub_bank = data & 0x0f;
74
if (state->m_cpub_bank >= 2)
76
memory_set_bankptr(space->machine(), "bank1", &RAM[ 0x10000 + ( (state->m_cpub_bank - 2) * 0x4000 ) ] );
80
flip_screen_set(space->machine(), data & 0x40);
83
static WRITE8_HANDLER( exzisus_coincounter_w )
85
coin_lockout_w(space->machine(), 0,~data & 0x01);
86
coin_lockout_w(space->machine(), 1,~data & 0x02);
87
coin_counter_w(space->machine(), 0,data & 0x04);
88
coin_counter_w(space->machine(), 1,data & 0x08);
91
static READ8_HANDLER( exzisus_sharedram_ab_r )
93
exzisus_state *state = space->machine().driver_data<exzisus_state>();
94
return state->m_sharedram_ab[offset];
97
static READ8_HANDLER( exzisus_sharedram_ac_r )
99
exzisus_state *state = space->machine().driver_data<exzisus_state>();
100
return state->m_sharedram_ac[offset];
103
static WRITE8_HANDLER( exzisus_sharedram_ab_w )
105
exzisus_state *state = space->machine().driver_data<exzisus_state>();
106
state->m_sharedram_ab[offset] = data;
109
static WRITE8_HANDLER( exzisus_sharedram_ac_w )
111
exzisus_state *state = space->machine().driver_data<exzisus_state>();
112
state->m_sharedram_ac[offset] = data;
49
WRITE8_MEMBER(exzisus_state::exzisus_cpua_bankswitch_w)
51
UINT8 *RAM = memregion("cpua")->base();
53
if ( (data & 0x0f) != m_cpua_bank )
55
m_cpua_bank = data & 0x0f;
58
membank("bank2")->set_base(&RAM[ 0x10000 + ( (m_cpua_bank - 2) * 0x4000 ) ] );
62
flip_screen_set(data & 0x40);
65
WRITE8_MEMBER(exzisus_state::exzisus_cpub_bankswitch_w)
67
UINT8 *RAM = memregion("cpub")->base();
69
if ( (data & 0x0f) != m_cpub_bank )
71
m_cpub_bank = data & 0x0f;
74
membank("bank1")->set_base(&RAM[ 0x10000 + ( (m_cpub_bank - 2) * 0x4000 ) ] );
78
flip_screen_set(data & 0x40);
81
WRITE8_MEMBER(exzisus_state::exzisus_coincounter_w)
83
coin_lockout_w(machine(), 0,~data & 0x01);
84
coin_lockout_w(machine(), 1,~data & 0x02);
85
coin_counter_w(machine(), 0,data & 0x04);
86
coin_counter_w(machine(), 1,data & 0x08);
89
READ8_MEMBER(exzisus_state::exzisus_sharedram_ab_r)
91
return m_sharedram_ab[offset];
94
READ8_MEMBER(exzisus_state::exzisus_sharedram_ac_r)
96
return m_sharedram_ac[offset];
99
WRITE8_MEMBER(exzisus_state::exzisus_sharedram_ab_w)
101
m_sharedram_ab[offset] = data;
104
WRITE8_MEMBER(exzisus_state::exzisus_sharedram_ac_w)
106
m_sharedram_ac[offset] = data;
115
109
// is it ok that cpub_reset refers to cpuc?
116
static WRITE8_HANDLER( exzisus_cpub_reset_w )
110
WRITE8_MEMBER(exzisus_state::exzisus_cpub_reset_w)
118
cputag_set_input_line(space->machine(), "cpuc", INPUT_LINE_RESET, PULSE_LINE);
112
cputag_set_input_line(machine(), "cpuc", INPUT_LINE_RESET, PULSE_LINE);
141
135
**************************************************************************/
143
static ADDRESS_MAP_START( cpua_map, AS_PROGRAM, 8 )
137
static ADDRESS_MAP_START( cpua_map, AS_PROGRAM, 8, exzisus_state )
144
138
AM_RANGE(0x0000, 0x7fff) AM_ROM
145
139
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
146
AM_RANGE(0xc000, 0xc5ff) AM_READWRITE(exzisus_objectram_1_r, exzisus_objectram_1_w) AM_BASE_MEMBER(exzisus_state, m_objectram1) AM_SIZE_MEMBER(exzisus_state, m_objectram_size1)
147
AM_RANGE(0xc600, 0xdfff) AM_READWRITE(exzisus_videoram_1_r, exzisus_videoram_1_w) AM_BASE_MEMBER(exzisus_state, m_videoram1)
148
AM_RANGE(0xe000, 0xefff) AM_READWRITE(exzisus_sharedram_ac_r, exzisus_sharedram_ac_w) AM_BASE_MEMBER(exzisus_state, m_sharedram_ac)
140
AM_RANGE(0xc000, 0xc5ff) AM_READWRITE(exzisus_objectram_1_r, exzisus_objectram_1_w) AM_SHARE("objectram1")
141
AM_RANGE(0xc600, 0xdfff) AM_READWRITE(exzisus_videoram_1_r, exzisus_videoram_1_w) AM_SHARE("videoram1")
142
AM_RANGE(0xe000, 0xefff) AM_READWRITE(exzisus_sharedram_ac_r, exzisus_sharedram_ac_w) AM_SHARE("sharedram_ac")
149
143
AM_RANGE(0xf400, 0xf400) AM_WRITE(exzisus_cpua_bankswitch_w)
150
144
AM_RANGE(0xf404, 0xf404) AM_WRITE(exzisus_cpub_reset_w) // ??
151
AM_RANGE(0xf800, 0xffff) AM_READWRITE(exzisus_sharedram_ab_r, exzisus_sharedram_ab_w) AM_BASE_MEMBER(exzisus_state, m_sharedram_ab)
145
AM_RANGE(0xf800, 0xffff) AM_READWRITE(exzisus_sharedram_ab_r, exzisus_sharedram_ab_w) AM_SHARE("sharedram_ab")
154
static ADDRESS_MAP_START( cpub_map, AS_PROGRAM, 8 )
148
static ADDRESS_MAP_START( cpub_map, AS_PROGRAM, 8, exzisus_state )
155
149
AM_RANGE(0x0000, 0x7fff) AM_ROM
156
150
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
157
AM_RANGE(0xc000, 0xc5ff) AM_READWRITE(exzisus_objectram_0_r, exzisus_objectram_0_w) AM_BASE_MEMBER(exzisus_state, m_objectram0) AM_SIZE_MEMBER(exzisus_state, m_objectram_size0)
158
AM_RANGE(0xc600, 0xdfff) AM_READWRITE(exzisus_videoram_0_r, exzisus_videoram_0_w) AM_BASE_MEMBER(exzisus_state, m_videoram0)
151
AM_RANGE(0xc000, 0xc5ff) AM_READWRITE(exzisus_objectram_0_r, exzisus_objectram_0_w) AM_SHARE("objectram0")
152
AM_RANGE(0xc600, 0xdfff) AM_READWRITE(exzisus_videoram_0_r, exzisus_videoram_0_w) AM_SHARE("videoram0")
159
153
AM_RANGE(0xe000, 0xefff) AM_RAM
160
AM_RANGE(0xf000, 0xf000) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_port_w)
161
AM_RANGE(0xf001, 0xf001) AM_DEVREADWRITE("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w)
154
AM_RANGE(0xf000, 0xf000) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_port_w)
155
AM_RANGE(0xf001, 0xf001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_comm_r, tc0140syt_comm_w)
162
156
AM_RANGE(0xf400, 0xf400) AM_READ_PORT("P1")
163
157
AM_RANGE(0xf400, 0xf400) AM_WRITE(exzisus_cpub_bankswitch_w)
164
158
AM_RANGE(0xf401, 0xf401) AM_READ_PORT("P2")
178
172
AM_RANGE(0xb000, 0xbfff) AM_RAM
181
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8 )
175
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, exzisus_state )
182
176
AM_RANGE(0x0000, 0x7fff) AM_ROM
183
177
AM_RANGE(0x8000, 0x8fff) AM_RAM
184
AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
185
AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_slave_port_w)
186
AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)
178
AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
179
AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE_LEGACY("tc0140syt", tc0140syt_slave_port_w)
180
AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE_LEGACY("tc0140syt", tc0140syt_slave_comm_r, tc0140syt_slave_comm_w)