mirror of
https://github.com/holub/mame
synced 2025-06-16 09:20:04 +03:00
(MESS) hunter2 : added banking
This commit is contained in:
parent
b26c3a4d61
commit
56e70aab3f
@ -20,6 +20,9 @@ public:
|
||||
, m_maincpu(*this, "maincpu")
|
||||
{ }
|
||||
|
||||
DECLARE_DRIVER_INIT(hunter2);
|
||||
DECLARE_WRITE8_MEMBER(porte0_w);
|
||||
|
||||
private:
|
||||
virtual void machine_reset();
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -27,12 +30,16 @@ private:
|
||||
|
||||
static ADDRESS_MAP_START(hunter2_mem, AS_PROGRAM, 8, hunter2_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("roms", 0)
|
||||
AM_RANGE(0x8000, 0xbfff) AM_RAM
|
||||
AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
|
||||
AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1")
|
||||
AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bankr2") AM_WRITE_BANK("bankw2")
|
||||
AM_RANGE(0xc000, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(hunter2_io, AS_IO, 8, hunter2_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0xe0, 0xe0) AM_WRITE(porte0_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -40,9 +47,68 @@ ADDRESS_MAP_END
|
||||
static INPUT_PORTS_START( hunter2 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
/*
|
||||
data bank0 bank1 bank2
|
||||
00 00 01 02
|
||||
01 00 01 03
|
||||
02 00 01 04
|
||||
....
|
||||
09 00 01 11
|
||||
80 16 17 18
|
||||
....
|
||||
8F 61 62 63
|
||||
*/
|
||||
WRITE8_MEMBER( hunter2_state::porte0_w )
|
||||
{
|
||||
if (data < 0x0a)
|
||||
{
|
||||
membank("bankr0")->set_entry(0);
|
||||
membank("bankr1")->set_entry(0);
|
||||
membank("bankr2")->set_entry(data);
|
||||
membank("bankw0")->set_entry(0);
|
||||
membank("bankw1")->set_entry(0);
|
||||
membank("bankw2")->set_entry(0);
|
||||
}
|
||||
else
|
||||
if ((data >= 0x80) && (data <= 0x8f))
|
||||
{
|
||||
data -= 0x70;
|
||||
membank("bankr0")->set_entry(data);
|
||||
membank("bankr1")->set_entry(data);
|
||||
membank("bankr2")->set_entry(data);
|
||||
membank("bankw0")->set_entry(data);
|
||||
membank("bankw1")->set_entry(data);
|
||||
membank("bankw2")->set_entry(data);
|
||||
}
|
||||
}
|
||||
|
||||
void hunter2_state::machine_reset()
|
||||
{
|
||||
membank("bankr0")->set_entry(0);
|
||||
membank("bankr1")->set_entry(0);
|
||||
membank("bankr2")->set_entry(0);
|
||||
membank("bankw0")->set_entry(0);
|
||||
membank("bankw1")->set_entry(0);
|
||||
membank("bankw2")->set_entry(0);
|
||||
}
|
||||
|
||||
// it is presumed that writing to rom will go nowhere
|
||||
DRIVER_INIT_MEMBER( hunter2_state, hunter2 )
|
||||
{
|
||||
UINT8 *rom = memregion("roms")->base();
|
||||
UINT8 *ram = memregion("rams")->base();
|
||||
membank("bankr0")->configure_entries( 0, 10, &rom[0x00000], 0x0000);
|
||||
membank("bankr0")->configure_entries(16, 16, &ram[0x00000], 0xc000);
|
||||
membank("bankr1")->configure_entries( 0, 10, &rom[0x04000], 0x0000);
|
||||
membank("bankr1")->configure_entries(16, 16, &ram[0x04000], 0xc000);
|
||||
membank("bankr2")->configure_entries( 0, 10, &rom[0x08000], 0x4000);
|
||||
membank("bankr2")->configure_entries(16, 16, &ram[0x08000], 0xc000);
|
||||
membank("bankw0")->configure_entries( 0, 10, &ram[0xc0000], 0x0000);
|
||||
membank("bankw0")->configure_entries(16, 16, &ram[0x00000], 0xc000);
|
||||
membank("bankw1")->configure_entries( 0, 10, &ram[0xc0000], 0x0000);
|
||||
membank("bankw1")->configure_entries(16, 16, &ram[0x04000], 0xc000);
|
||||
membank("bankw2")->configure_entries( 0, 10, &ram[0xc0000], 0x0000);
|
||||
membank("bankw2")->configure_entries(16, 16, &ram[0x08000], 0xc000);
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( hunter2, hunter2_state )
|
||||
@ -54,12 +120,15 @@ MACHINE_CONFIG_END
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( hunter2 )
|
||||
ROM_REGION(0x10000, "roms", 0)
|
||||
ROM_REGION(0x30000, "roms", ROMREGION_ERASEFF) // board has space for 6 roms, but only 2 are populated normally
|
||||
ROM_LOAD( "tr032kx8mrom0.ic50", 0x0000, 0x8000, CRC(694d252c) SHA1(b11dbf24faf648596d92b1823e25a8e4fb7f542c) )
|
||||
ROM_LOAD( "tr032kx8mrom1.ic51", 0x8000, 0x8000, CRC(82901642) SHA1(d84f2bbd2e9e052bd161a313c240a67918f774ad) )
|
||||
|
||||
// 48 x 4k blocks plus 1 sinkhole
|
||||
ROM_REGION(0xc4000, "rams", ROMREGION_ERASEVAL(0xa5)) // board can have up to 736k of ram, but 192k is standard
|
||||
ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1981, hunter2, 0, 0, hunter2, hunter2, driver_device, 0, "Husky", "Hunter 2", GAME_IS_SKELETON )
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1981, hunter2, 0, 0, hunter2, hunter2, hunter2_state, hunter2, "Husky", "Hunter 2", GAME_IS_SKELETON )
|
||||
|
Loading…
Reference in New Issue
Block a user