Added secondary slot mechanism

This commit is contained in:
Angelo Salese 2013-11-22 03:49:06 +00:00
parent 8b0403a06d
commit ef6a7273a2
2 changed files with 20 additions and 4 deletions

View File

@ -73,6 +73,9 @@ public:
void sexyboom_map_bank(int bank); void sexyboom_map_bank(int bank);
DECLARE_WRITE_LINE_MEMBER(msx_vdp_interrupt); DECLARE_WRITE_LINE_MEMBER(msx_vdp_interrupt);
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
UINT8 m_sec_slot[4];
DECLARE_READ8_MEMBER(sec_slot_r);
DECLARE_WRITE8_MEMBER(sec_slot_w);
}; };
@ -168,6 +171,7 @@ void sangho_state::pzlestar_map_banks()
break; break;
} }
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xffff, 0xffff, read8_delegate(FUNC(sangho_state::sec_slot_r),this), write8_delegate(FUNC(sangho_state::sec_slot_w),this));
} }
WRITE8_MEMBER(sangho_state::pzlestar_bank_w) WRITE8_MEMBER(sangho_state::pzlestar_bank_w)
@ -237,6 +241,18 @@ WRITE8_MEMBER(sangho_state::sexyboom_bank_w)
sexyboom_map_bank(offset>>1); sexyboom_map_bank(offset>>1);
} }
/* secondary slot R/Ws from current primary slot number (see also mess/machine/msx.c) */
READ8_MEMBER(sangho_state::sec_slot_r)
{
return m_sec_slot[m_pzlestar_mem_bank >> 6] ^ 0xff;
}
WRITE8_MEMBER(sangho_state::sec_slot_w)
{
m_sec_slot[m_pzlestar_mem_bank >> 6] = data;
}
static ADDRESS_MAP_START( sangho_map, AS_PROGRAM, 8, sangho_state ) static ADDRESS_MAP_START( sangho_map, AS_PROGRAM, 8, sangho_state )
AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5") AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5")
AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6") AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6")

View File

@ -115,7 +115,7 @@ READ8_MEMBER(sfkick_state::ppi_port_b_r)
void sfkick_state::sfkick_remap_banks() void sfkick_state::sfkick_remap_banks()
{ {
/* 0000-3ffff */ /* 0000-3fff */
switch(m_bank_cfg&3) switch(m_bank_cfg&3)
{ {
case 0: /* bios */ case 0: /* bios */
@ -151,7 +151,7 @@ void sfkick_state::sfkick_remap_banks()
break; break;
} }
/* 4000-7ffff */ /* 4000-7fff */
switch((m_bank_cfg>>2)&3) switch((m_bank_cfg>>2)&3)
{ {
case 0: /* bios - upper part */ case 0: /* bios - upper part */
@ -180,7 +180,7 @@ void sfkick_state::sfkick_remap_banks()
break; break;
} }
/* 8000-bffff */ /* 8000-bfff */
switch((m_bank_cfg>>4)&3) switch((m_bank_cfg>>4)&3)
{ {
case 0: /* cartridge */ case 0: /* cartridge */
@ -209,7 +209,7 @@ void sfkick_state::sfkick_remap_banks()
break; break;
} }
/* c000-fffff */ /* c000-ffff */
switch((m_bank_cfg>>6)&3) switch((m_bank_cfg>>6)&3)
{ {
case 0: /* unknown */ case 0: /* unknown */