From e71893f9c43ebd56f6fccd7dbcb25d806b0efcab Mon Sep 17 00:00:00 2001 From: mahlemiut Date: Sun, 24 Aug 2014 09:57:26 +0000 Subject: [PATCH] fm11: make it use bankdev to avoid crashes, and handle lack of BASIC ROM. (no whatsnew) --- src/mess/drivers/fm7.c | 52 ++++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/src/mess/drivers/fm7.c b/src/mess/drivers/fm7.c index de39a80f4da..e2f65a39806 100644 --- a/src/mess/drivers/fm7.c +++ b/src/mess/drivers/fm7.c @@ -1147,7 +1147,8 @@ void fm7_state::fm7_mmr_refresh(address_space& space) if(m_basic_rom_en) { UINT8* ROM = memregion("fbasic")->base(); - membank("fbasic_bank_r")->set_base(ROM); + if(ROM != NULL) + membank("fbasic_bank_r")->set_base(ROM); } else { @@ -1494,22 +1495,22 @@ static ADDRESS_MAP_START( fm7_sub_mem, AS_PROGRAM, 8, fm7_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( fm11_mem, AS_PROGRAM, 8, fm7_state ) - AM_RANGE(0x0000,0x0fff) AM_RAMBANK("bank1") - AM_RANGE(0x1000,0x1fff) AM_RAMBANK("bank2") - AM_RANGE(0x2000,0x2fff) AM_RAMBANK("bank3") - AM_RANGE(0x3000,0x3fff) AM_RAMBANK("bank4") - AM_RANGE(0x4000,0x4fff) AM_RAMBANK("bank5") - AM_RANGE(0x5000,0x5fff) AM_RAMBANK("bank6") - AM_RANGE(0x6000,0x6fff) AM_RAMBANK("bank7") - AM_RANGE(0x7000,0x7fff) AM_RAMBANK("bank8") - AM_RANGE(0x8000,0x8fff) AM_RAMBANK("bank9") - AM_RANGE(0x9000,0x9fff) AM_RAMBANK("bank10") - AM_RANGE(0xa000,0xafff) AM_RAMBANK("bank11") - AM_RANGE(0xb000,0xbfff) AM_RAMBANK("bank12") - AM_RANGE(0xc000,0xcfff) AM_RAMBANK("bank13") - AM_RANGE(0xd000,0xdfff) AM_RAMBANK("bank14") - AM_RANGE(0xe000,0xefff) AM_RAMBANK("bank15") - AM_RANGE(0xf000,0xfbff) AM_RAMBANK("bank16") + AM_RANGE(0x0000,0x0fff) AM_DEVREADWRITE("av_bank1", address_map_bank_device, read8, write8) + AM_RANGE(0x1000,0x1fff) AM_DEVREADWRITE("av_bank2", address_map_bank_device, read8, write8) + AM_RANGE(0x2000,0x2fff) AM_DEVREADWRITE("av_bank3", address_map_bank_device, read8, write8) + AM_RANGE(0x3000,0x3fff) AM_DEVREADWRITE("av_bank4", address_map_bank_device, read8, write8) + AM_RANGE(0x4000,0x4fff) AM_DEVREADWRITE("av_bank5", address_map_bank_device, read8, write8) + AM_RANGE(0x5000,0x5fff) AM_DEVREADWRITE("av_bank6", address_map_bank_device, read8, write8) + AM_RANGE(0x6000,0x6fff) AM_DEVREADWRITE("av_bank7", address_map_bank_device, read8, write8) + AM_RANGE(0x7000,0x7fff) AM_DEVREADWRITE("av_bank8", address_map_bank_device, read8, write8) + AM_RANGE(0x8000,0x8fff) AM_DEVREADWRITE("av_bank9", address_map_bank_device, read8, write8) + AM_RANGE(0x9000,0x9fff) AM_DEVREADWRITE("av_bank10", address_map_bank_device, read8, write8) + AM_RANGE(0xa000,0xafff) AM_DEVREADWRITE("av_bank11", address_map_bank_device, read8, write8) + AM_RANGE(0xb000,0xbfff) AM_DEVREADWRITE("av_bank12", address_map_bank_device, read8, write8) + AM_RANGE(0xc000,0xcfff) AM_DEVREADWRITE("av_bank13", address_map_bank_device, read8, write8) + AM_RANGE(0xd000,0xdfff) AM_DEVREADWRITE("av_bank14", address_map_bank_device, read8, write8) + AM_RANGE(0xe000,0xefff) AM_DEVREADWRITE("av_bank15", address_map_bank_device, read8, write8) + AM_RANGE(0xf000,0xfbff) AM_DEVREADWRITE("av_bank16", address_map_bank_device, read8, write8) AM_RANGE(0xfc00,0xfc7f) AM_RAM AM_RANGE(0xfc80,0xfcff) AM_READWRITE(fm7_main_shared_r,fm7_main_shared_w) // I/O space (FD00-FDFF) @@ -2258,6 +2259,23 @@ static MACHINE_CONFIG_START( fm11, fm7_state ) MCFG_MACHINE_START_OVERRIDE(fm7_state,fm11) + MCFG_ADDRESS_BANK("av_bank1") + MCFG_ADDRESS_BANK("av_bank2") + MCFG_ADDRESS_BANK("av_bank3") + MCFG_ADDRESS_BANK("av_bank4") + MCFG_ADDRESS_BANK("av_bank5") + MCFG_ADDRESS_BANK("av_bank6") + MCFG_ADDRESS_BANK("av_bank7") + MCFG_ADDRESS_BANK("av_bank8") + MCFG_ADDRESS_BANK("av_bank9") + MCFG_ADDRESS_BANK("av_bank10") + MCFG_ADDRESS_BANK("av_bank11") + MCFG_ADDRESS_BANK("av_bank12") + MCFG_ADDRESS_BANK("av_bank13") + MCFG_ADDRESS_BANK("av_bank14") + MCFG_ADDRESS_BANK("av_bank15") + MCFG_ADDRESS_BANK("av_bank16") + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60)