(MESS) a2600: Changed some more c functions into members. (nw)

This commit is contained in:
Wilbert Pol 2012-10-02 19:37:08 +00:00
parent 332d04f2e6
commit 999968d744

View File

@ -136,6 +136,8 @@ protected:
void mode3E_RAM_switch(UINT16 offset, UINT8 data); void mode3E_RAM_switch(UINT16 offset, UINT8 data);
void modeFV_switch(UINT16 offset, UINT8 data); void modeFV_switch(UINT16 offset, UINT8 data);
void modeJVP_switch(UINT16 offset, UINT8 data); void modeJVP_switch(UINT16 offset, UINT8 data);
void modeFE_switch(UINT16 offset, UINT8 data);
void install_banks(int count, unsigned init);
UINT8 *m_cart; UINT8 *m_cart;
}; };
@ -1160,27 +1162,26 @@ DIRECT_UPDATE_MEMBER(a2600_state::modeFE_opbase_handler)
return address; return address;
} }
static void modeFE_switch(running_machine &machine,UINT16 offset, UINT8 data) void a2600_state::modeFE_switch(UINT16 offset, UINT8 data)
{ {
a2600_state *state = machine.driver_data<a2600_state>(); address_space& space = machine().device("maincpu")->memory().space(AS_PROGRAM);
address_space& space = machine.device("maincpu")->memory().space(AS_PROGRAM);
/* Retrieve last byte read by the cpu (for this mapping scheme this /* Retrieve last byte read by the cpu (for this mapping scheme this
should be the last byte that was on the data bus should be the last byte that was on the data bus
*/ */
state->m_FETimer = 1; m_FETimer = 1;
state->m_FE_old_opbase_handler = space.set_direct_update_handler(direct_update_delegate(FUNC(a2600_state::modeFE_opbase_handler), state)); m_FE_old_opbase_handler = space.set_direct_update_handler(direct_update_delegate(FUNC(a2600_state::modeFE_opbase_handler), this));
} }
READ8_MEMBER(a2600_state::modeFE_switch_r) READ8_MEMBER(a2600_state::modeFE_switch_r)
{ {
modeFE_switch(machine(),offset, 0 ); modeFE_switch(offset, 0 );
return space.read_byte(0xFE ); return space.read_byte(0xFE );
} }
WRITE8_MEMBER(a2600_state::modeFE_switch_w) WRITE8_MEMBER(a2600_state::modeFE_switch_w)
{ {
space.write_byte(0xFE, data ); space.write_byte(0xFE, data );
modeFE_switch(machine(),offset, 0 ); modeFE_switch(offset, 0 );
} }
READ8_MEMBER(a2600_state::current_bank_r) READ8_MEMBER(a2600_state::current_bank_r)
@ -1291,11 +1292,9 @@ static const riot6532_interface r6532_interface =
}; };
static void install_banks(running_machine &machine, int count, unsigned init) void a2600_state::install_banks(int count, unsigned init)
{ {
a2600_state *state = machine.driver_data<a2600_state>();
int i; int i;
UINT8 *cart = CART;
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
{ {
@ -1307,12 +1306,12 @@ static void install_banks(running_machine &machine, int count, unsigned init)
"bank4", "bank4",
}; };
machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank( machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(
0x1000 + (i + 0) * 0x1000 / count - 0, 0x1000 + (i + 0) * 0x1000 / count - 0,
0x1000 + (i + 1) * 0x1000 / count - 1, handler[i]); 0x1000 + (i + 1) * 0x1000 / count - 1, handler[i]);
state->m_bank_base[i + 1] = cart + init; m_bank_base[i + 1] = m_cart + init;
state->membank(handler[i])->set_base(state->m_bank_base[i + 1]); membank(handler[i])->set_base(m_bank_base[i + 1]);
} }
} }
@ -1824,86 +1823,86 @@ void a2600_state::machine_reset()
switch (m_banking_mode) switch (m_banking_mode)
{ {
case mode2K: case mode2K:
install_banks(machine(), 2, 0x0000); install_banks(2, 0x0000);
break; break;
case mode4K: case mode4K:
install_banks(machine(), 1, 0x0000); install_banks(1, 0x0000);
break; break;
case modeF8: case modeF8:
if (!memcmp(&CART_MEMBER[0x1ffc],snowwhite,sizeof(snowwhite))) if (!memcmp(&CART_MEMBER[0x1ffc],snowwhite,sizeof(snowwhite)))
{ {
install_banks(machine(), 1, 0x0000); install_banks(1, 0x0000);
} }
else else
{ {
install_banks(machine(), 1, 0x1000); install_banks(1, 0x1000);
} }
break; break;
case modeFA: case modeFA:
install_banks(machine(), 1, 0x2000); install_banks(1, 0x2000);
break; break;
case modeF6: case modeF6:
install_banks(machine(), 1, 0x0000); install_banks(1, 0x0000);
break; break;
case modeF4: case modeF4:
install_banks(machine(), 1, 0x7000); install_banks(1, 0x7000);
break; break;
case modeFE: case modeFE:
install_banks(machine(), 1, 0x0000); install_banks(1, 0x0000);
break; break;
case modeE0: case modeE0:
install_banks(machine(), 4, 0x1c00); install_banks(4, 0x1c00);
break; break;
case mode3F: case mode3F:
install_banks(machine(), 2, m_cart_size - 0x800); install_banks(2, m_cart_size - 0x800);
m_number_banks = m_cart_size / 0x800; m_number_banks = m_cart_size / 0x800;
break; break;
case modeUA: case modeUA:
install_banks(machine(), 1, 0x1000); install_banks(1, 0x1000);
break; break;
case modeE7: case modeE7:
install_banks(machine(), 2, 0x3800); install_banks(2, 0x3800);
break; break;
case modeDC: case modeDC:
install_banks(machine(), 1, 0x1000 * m_current_bank); install_banks(1, 0x1000 * m_current_bank);
break; break;
case modeCV: case modeCV:
install_banks(machine(), 2, 0x0000); install_banks(2, 0x0000);
break; break;
case mode3E: case mode3E:
install_banks(machine(), 2, m_cart_size - 0x800); install_banks(2, m_cart_size - 0x800);
m_number_banks = m_cart_size / 0x800; m_number_banks = m_cart_size / 0x800;
m_mode3E_ram_enabled = 0; m_mode3E_ram_enabled = 0;
break; break;
case modeSS: case modeSS:
install_banks(machine(), 2, 0x0000); install_banks(2, 0x0000);
break; break;
case modeFV: case modeFV:
install_banks(machine(), 1, 0x0000); install_banks(1, 0x0000);
m_current_bank = 0; m_current_bank = 0;
break; break;
case modeDPC: case modeDPC:
install_banks(machine(), 1, 0x0000); install_banks(1, 0x0000);
break; break;
case mode32in1: case mode32in1:
install_banks(machine(), 2, 0x0000); install_banks(2, 0x0000);
m_current_reset_bank_counter = m_current_reset_bank_counter & 0x1F; m_current_reset_bank_counter = m_current_reset_bank_counter & 0x1F;
break; break;
@ -1912,7 +1911,7 @@ void a2600_state::machine_reset()
if ( m_cart_size == 0x2000 ) if ( m_cart_size == 0x2000 )
m_current_reset_bank_counter = 0; m_current_reset_bank_counter = 0;
m_current_bank = m_current_reset_bank_counter * 2; m_current_bank = m_current_reset_bank_counter * 2;
install_banks(machine(), 1, 0x1000 * m_current_bank); install_banks(1, 0x1000 * m_current_bank);
break; break;
} }