mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
namcos22: add alpinesa prg rom banking
This commit is contained in:
parent
74913a40d1
commit
5028d8bf0d
@ -1914,38 +1914,23 @@ void timecris_state::timecris_am(address_map &map)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Alpine Surfer protection
|
// Alpine Surfer banking
|
||||||
u32 alpine_state::alpinesa_prot_r()
|
u32 alpinesa_state::rombank_r()
|
||||||
{
|
{
|
||||||
return m_alpinesa_protection;
|
return m_rombank->entry();
|
||||||
}
|
}
|
||||||
|
|
||||||
void alpine_state::alpinesa_prot_w(u32 data)
|
void alpinesa_state::rombank_w(u32 data)
|
||||||
{
|
{
|
||||||
switch (data)
|
m_rombank->set_entry(std::clamp(data & 3, 0U, 2U));
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
m_alpinesa_protection = 0;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
m_alpinesa_protection = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
m_alpinesa_protection = 2;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void alpine_state::alpinesa_am(address_map &map)
|
void alpinesa_state::alpinesa_am(address_map &map)
|
||||||
{
|
{
|
||||||
namcos22s_am(map);
|
namcos22s_am(map);
|
||||||
map(0x200000, 0x200003).r(FUNC(alpine_state::alpinesa_prot_r));
|
map(0x200000, 0x3fffff).bankr("rombank");
|
||||||
map(0x300000, 0x300003).w(FUNC(alpine_state::alpinesa_prot_w));
|
map(0x200000, 0x200003).r(FUNC(alpinesa_state::rombank_r));
|
||||||
|
map(0x300000, 0x300003).w(FUNC(alpinesa_state::rombank_w));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3734,7 +3719,6 @@ void alpine_state::machine_start()
|
|||||||
{
|
{
|
||||||
namcos22s_state::machine_start();
|
namcos22s_state::machine_start();
|
||||||
|
|
||||||
save_item(NAME(m_alpinesa_protection));
|
|
||||||
save_item(NAME(m_motor_status));
|
save_item(NAME(m_motor_status));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3860,11 +3844,11 @@ void alpine_state::alpine(machine_config &config)
|
|||||||
TIMER(config, m_motor_timer).configure_generic(FUNC(alpine_state::alpine_steplock_callback));
|
TIMER(config, m_motor_timer).configure_generic(FUNC(alpine_state::alpine_steplock_callback));
|
||||||
}
|
}
|
||||||
|
|
||||||
void alpine_state::alpinesa(machine_config &config)
|
void alpinesa_state::alpinesa(machine_config &config)
|
||||||
{
|
{
|
||||||
alpine(config);
|
alpine(config);
|
||||||
|
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &alpine_state::alpinesa_am);
|
m_maincpu->set_addrmap(AS_PROGRAM, &alpinesa_state::alpinesa_am);
|
||||||
}
|
}
|
||||||
|
|
||||||
void namcos22s_state::cybrcycc(machine_config &config)
|
void namcos22s_state::cybrcycc(machine_config &config)
|
||||||
@ -6124,11 +6108,13 @@ void alpine_state::init_alpiner2()
|
|||||||
m_motor_status = 2;
|
m_motor_status = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
void alpine_state::init_alpinesa()
|
void alpinesa_state::init_alpinesa()
|
||||||
{
|
{
|
||||||
m_gametype = NAMCOS22_ALPINE_SURFER;
|
m_gametype = NAMCOS22_ALPINE_SURFER;
|
||||||
install_141_speedup();
|
install_141_speedup();
|
||||||
|
|
||||||
|
m_rombank->configure_entries(0, 3, memregion("maincpu")->base() + 0x200000, 0x200000);
|
||||||
|
|
||||||
m_motor_status = 2;
|
m_motor_status = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6144,7 +6130,7 @@ void propcycl_state::init_propcycl()
|
|||||||
|
|
||||||
// patch out strange routine (uninitialized-eeprom related?)
|
// patch out strange routine (uninitialized-eeprom related?)
|
||||||
// maybe needs more accurate 28C64 eeprom device emulation
|
// maybe needs more accurate 28C64 eeprom device emulation
|
||||||
ROM[0x1992C/4] = 0x4e754e75;
|
ROM[0x1992c/4] = 0x4e754e75;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The dipswitch reading routine in Prop Cycle polls the
|
* The dipswitch reading routine in Prop Cycle polls the
|
||||||
@ -6251,7 +6237,7 @@ GAME( 1995, timecris, 0, timecris, timecris, timecris_state, init_ti
|
|||||||
GAME( 1995, timecrisa, timecris, timecris, timecris, timecris_state, init_timecris, ROT0, "Namco", "Time Crisis (Rev. TS2 Ver.A, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 96/01/08 18:56:09
|
GAME( 1995, timecrisa, timecris, timecris, timecris, timecris_state, init_timecris, ROT0, "Namco", "Time Crisis (Rev. TS2 Ver.A, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 96/01/08 18:56:09
|
||||||
GAME( 1996, propcycl, 0, propcycl, propcycl, propcycl_state, init_propcycl, ROT0, "Namco", "Prop Cycle (Rev. PR2 Ver.A, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 96/06/18 21:22:13
|
GAME( 1996, propcycl, 0, propcycl, propcycl, propcycl_state, init_propcycl, ROT0, "Namco", "Prop Cycle (Rev. PR2 Ver.A, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 96/06/18 21:22:13
|
||||||
GAME( 1996, propcyclj, propcycl, propcycl, propcycl, propcycl_state, init_propcyclj, ROT0, "Namco", "Prop Cycle (Rev. PR1 Ver.A, Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 96/06/18 21:06:03
|
GAME( 1996, propcyclj, propcycl, propcycl, propcycl, propcycl_state, init_propcyclj, ROT0, "Namco", "Prop Cycle (Rev. PR1 Ver.A, Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 96/06/18 21:06:03
|
||||||
GAME( 1996, alpinesa, 0, alpinesa, alpiner, alpine_state, init_alpinesa, ROT0, "Namco", "Alpine Surfer (Rev. AF2 Ver.A, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // 96/07/01 15:19:23. major problems, protection?
|
GAME( 1996, alpinesa, 0, alpinesa, alpiner, alpinesa_state, init_alpinesa, ROT0, "Namco", "Alpine Surfer (Rev. AF2 Ver.A, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // 96/07/01 15:19:23. major problems, protection?
|
||||||
GAME( 1996, tokyowar, 0, tokyowar, tokyowar, namcos22s_state, init_tokyowar, ROT0, "Namco", "Tokyo Wars (Rev. TW2 Ver.A, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 96/09/03 14:08:47
|
GAME( 1996, tokyowar, 0, tokyowar, tokyowar, namcos22s_state, init_tokyowar, ROT0, "Namco", "Tokyo Wars (Rev. TW2 Ver.A, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 96/09/03 14:08:47
|
||||||
GAME( 1996, tokyowarj, tokyowar, tokyowar, tokyowar, namcos22s_state, init_tokyowar, ROT0, "Namco", "Tokyo Wars (Rev. TW1 Ver.A, Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 96/09/03 14:16:29
|
GAME( 1996, tokyowarj, tokyowar, tokyowar, tokyowar, namcos22s_state, init_tokyowar, ROT0, "Namco", "Tokyo Wars (Rev. TW1 Ver.A, Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 96/09/03 14:16:29
|
||||||
GAME( 1996, aquajet, 0, cybrcycc, aquajet, namcos22s_state, init_aquajet, ROT0, "Namco", "Aqua Jet (Rev. AJ2 Ver.B, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 96/09/20 14:28:30
|
GAME( 1996, aquajet, 0, cybrcycc, aquajet, namcos22s_state, init_aquajet, ROT0, "Namco", "Aqua Jet (Rev. AJ2 Ver.B, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 96/09/20 14:28:30
|
||||||
|
@ -578,32 +578,41 @@ public:
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
void alpine(machine_config &config);
|
void alpine(machine_config &config);
|
||||||
void alpinesa(machine_config &config);
|
|
||||||
|
|
||||||
void init_alpiner2();
|
void init_alpiner2();
|
||||||
void init_alpiner();
|
void init_alpiner();
|
||||||
void init_alpinesa();
|
|
||||||
|
|
||||||
template <int N> DECLARE_READ_LINE_MEMBER(alpine_motor_r);
|
template <int N> DECLARE_READ_LINE_MEMBER(alpine_motor_r);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void machine_start() override;
|
|
||||||
|
|
||||||
u32 alpinesa_prot_r();
|
|
||||||
void alpinesa_prot_w(u32 data);
|
|
||||||
|
|
||||||
void alpine_mcu_port4_w(u8 data);
|
|
||||||
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(alpine_steplock_callback);
|
|
||||||
|
|
||||||
void alpinesa_am(address_map &map);
|
|
||||||
|
|
||||||
required_device<timer_device> m_motor_timer;
|
required_device<timer_device> m_motor_timer;
|
||||||
|
|
||||||
u32 m_alpinesa_protection = 0;
|
virtual void machine_start() override;
|
||||||
|
|
||||||
|
void alpine_mcu_port4_w(u8 data);
|
||||||
|
TIMER_DEVICE_CALLBACK_MEMBER(alpine_steplock_callback);
|
||||||
|
|
||||||
int m_motor_status = 0;
|
int m_motor_status = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class alpinesa_state : public alpine_state
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
alpinesa_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
|
alpine_state(mconfig, type, tag),
|
||||||
|
m_rombank(*this, "rombank")
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void alpinesa(machine_config &config);
|
||||||
|
void init_alpinesa();
|
||||||
|
|
||||||
|
private:
|
||||||
|
required_memory_bank m_rombank;
|
||||||
|
|
||||||
|
void rombank_w(u32 data);
|
||||||
|
u32 rombank_r();
|
||||||
|
void alpinesa_am(address_map &map);
|
||||||
|
};
|
||||||
|
|
||||||
class timecris_state : public namcos22s_state
|
class timecris_state : public namcos22s_state
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Loading…
Reference in New Issue
Block a user