summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cam900 <dbtlrchl@naver.com>2018-04-13 19:03:08 +0900
committer Vas Crabb <cuavas@users.noreply.github.com>2018-04-14 01:06:00 +1000
commit53c92bcdcbe61547fcb8f9db8a29a8c5de960661 (patch)
tree3982f5fe0709e526c6433cb8f7f5f70cb43513c4
parent88bcdb4a50c005ae660d8c2dcb6c88f35992be0e (diff)
partner.cpp : Cleanup bankswitch
-rw-r--r--src/mame/includes/partner.h2
-rw-r--r--src/mame/machine/partner.cpp88
2 files changed, 43 insertions, 47 deletions
diff --git a/src/mame/includes/partner.h b/src/mame/includes/partner.h
index e7571b5615a..d953999de54 100644
--- a/src/mame/includes/partner.h
+++ b/src/mame/includes/partner.h
@@ -24,6 +24,7 @@ public:
: radio86_state(mconfig, type, tag)
, m_ram(*this, RAM_TAG)
, m_fdc(*this, "wd1793")
+ , m_bank(*this, "bank%u", 1U)
{
}
@@ -51,6 +52,7 @@ protected:
required_device<ram_device> m_ram;
required_device<fd1793_device> m_fdc;
+ required_memory_bank_array<13> m_bank;
};
diff --git a/src/mame/machine/partner.cpp b/src/mame/machine/partner.cpp
index 67293d2f7ea..9993bec324f 100644
--- a/src/mame/machine/partner.cpp
+++ b/src/mame/machine/partner.cpp
@@ -15,8 +15,6 @@
#include "includes/radio86.h"
#include "includes/partner.h"
#include "imagedev/flopdrv.h"
-#include "machine/ram.h"
-
/* Driver initialization */
DRIVER_INIT_MEMBER(partner_state,partner)
@@ -26,31 +24,27 @@ DRIVER_INIT_MEMBER(partner_state,partner)
void partner_state::partner_window_1(uint8_t bank_num, uint16_t offset,uint8_t *rom)
{
- char bank[10];
- sprintf(bank,"bank%d",bank_num);
switch(m_win_mem_page) {
case 2 : // FDD BIOS
- membank(bank)->set_base(rom + 0x16000 + offset);
+ m_bank[bank_num]->set_base(rom + 0x16000 + offset);
break;
case 4 : // MCPG BIOS
- membank(bank)->set_base(rom + 0x14000 + offset);
+ m_bank[bank_num]->set_base(rom + 0x14000 + offset);
break;
default : // BIOS
- membank(bank)->set_base(rom + 0x10000 + offset);
+ m_bank[bank_num]->set_base(rom + 0x10000 + offset);
break;
}
}
void partner_state::partner_window_2(uint8_t bank_num, uint16_t offset,uint8_t *rom)
{
- char bank[10];
- sprintf(bank,"bank%d",bank_num);
switch(m_win_mem_page) {
case 4 : // MCPG FONT
- membank(bank)->set_base(rom + 0x18000 + offset);
+ m_bank[bank_num]->set_base(rom + 0x18000 + offset);
break;
default : // BIOS
- membank(bank)->set_base(rom + 0x10000 + offset);
+ m_bank[bank_num]->set_base(rom + 0x10000 + offset);
break;
}
}
@@ -112,7 +106,7 @@ void partner_state::partner_iomap_bank(uint8_t *rom)
// Timer
break;
default : // BIOS
- membank("bank11")->set_base(rom + 0x10000);
+ m_bank[10]->set_base(rom + 0x10000);
break;
}
}
@@ -140,40 +134,40 @@ void partner_state::partner_bank_switch()
// BANK 1 (0x0000 - 0x07ff)
if (m_mem_page==0) {
space.unmap_write(0x0000, 0x07ff);
- membank("bank1")->set_base(rom + 0x10000);
+ m_bank[0]->set_base(rom + 0x10000);
} else {
if (m_mem_page==7) {
- membank("bank1")->set_base(ram + 0x8000);
+ m_bank[0]->set_base(ram + 0x8000);
} else {
- membank("bank1")->set_base(ram + 0x0000);
+ m_bank[0]->set_base(ram + 0x0000);
}
}
// BANK 2 (0x0800 - 0x3fff)
if (m_mem_page==7) {
- membank("bank2")->set_base(ram + 0x8800);
+ m_bank[1]->set_base(ram + 0x8800);
} else {
- membank("bank2")->set_base(ram + 0x0800);
+ m_bank[1]->set_base(ram + 0x0800);
}
// BANK 3 (0x4000 - 0x5fff)
if (m_mem_page==7) {
- membank("bank3")->set_base(ram + 0xC000);
+ m_bank[2]->set_base(ram + 0xC000);
} else {
if (m_mem_page==10) {
//window 1
space.unmap_write(0x4000, 0x5fff);
- partner_window_1(3, 0, rom);
+ partner_window_1(2, 0, rom);
} else {
- membank("bank3")->set_base(ram + 0x4000);
+ m_bank[2]->set_base(ram + 0x4000);
}
}
// BANK 4 (0x6000 - 0x7fff)
if (m_mem_page==7) {
- membank("bank4")->set_base(ram + 0xe000);
+ m_bank[3]->set_base(ram + 0xe000);
} else {
- membank("bank4")->set_base(ram + 0x6000);
+ m_bank[3]->set_base(ram + 0x6000);
}
// BANK 5 (0x8000 - 0x9fff)
@@ -182,19 +176,19 @@ void partner_state::partner_bank_switch()
case 10:
//window 2
space.unmap_write(0x8000, 0x9fff);
- partner_window_2(5, 0, rom);
+ partner_window_2(4, 0, rom);
break;
case 8:
case 9:
//window 1
space.unmap_write(0x8000, 0x9fff);
- partner_window_1(5, 0, rom);
+ partner_window_1(4, 0, rom);
break;
case 7:
- membank("bank5")->set_base(ram + 0x0000);
+ m_bank[4]->set_base(ram + 0x0000);
break;
default:
- membank("bank5")->set_base(ram + 0x8000);
+ m_bank[4]->set_base(ram + 0x8000);
break;
}
@@ -204,19 +198,19 @@ void partner_state::partner_bank_switch()
case 10:
//window 2
space.unmap_write(0xa000, 0xb7ff);
- partner_window_2(6, 0, rom);
+ partner_window_2(5, 0, rom);
break;
case 6:
case 8:
//BASIC
space.unmap_write(0xa000, 0xb7ff);
- membank("bank6")->set_base(rom + 0x12000); // BASIC
+ m_bank[5]->set_base(rom + 0x12000); // BASIC
break;
case 7:
- membank("bank6")->set_base(ram + 0x2000);
+ m_bank[5]->set_base(ram + 0x2000);
break;
default:
- membank("bank6")->set_base(ram + 0xa000);
+ m_bank[5]->set_base(ram + 0xa000);
break;
}
@@ -227,70 +221,70 @@ void partner_state::partner_bank_switch()
case 10:
//window 2
space.unmap_write(0xb800, 0xbfff);
- partner_window_2(7, 0x1800, rom);
+ partner_window_2(6, 0x1800, rom);
break;
case 6:
case 8:
//BASIC
space.unmap_write(0xb800, 0xbfff);
- membank("bank7")->set_base(rom + 0x13800); // BASIC
+ m_bank[6]->set_base(rom + 0x13800); // BASIC
break;
case 7:
- membank("bank7")->set_base(ram + 0x3800);
+ m_bank[6]->set_base(ram + 0x3800);
break;
default:
- membank("bank7")->set_base(ram + 0xb800);
+ m_bank[6]->set_base(ram + 0xb800);
break;
}
// BANK 8 (0xc000 - 0xc7ff)
switch (m_mem_page) {
case 7:
- membank("bank8")->set_base(ram + 0x4000);
+ m_bank[7]->set_base(ram + 0x4000);
break;
case 8:
case 10:
space.unmap_write(0xc000, 0xc7ff);
- membank("bank8")->set_base(rom + 0x10000);
+ m_bank[7]->set_base(rom + 0x10000);
break;
default:
- membank("bank8")->set_base(ram + 0xc000);
+ m_bank[7]->set_base(ram + 0xc000);
break;
}
// BANK 9 (0xc800 - 0xcfff)
switch (m_mem_page) {
case 7:
- membank("bank9")->set_base(ram + 0x4800);
+ m_bank[8]->set_base(ram + 0x4800);
break;
case 8:
case 9:
// window 2
space.unmap_write(0xc800, 0xcfff);
- partner_window_2(9, 0, rom);
+ partner_window_2(8, 0, rom);
break;
case 10:
space.unmap_write(0xc800, 0xcfff);
- membank("bank9")->set_base(rom + 0x10800);
+ m_bank[8]->set_base(rom + 0x10800);
break;
default:
- membank("bank9")->set_base(ram + 0xc800);
+ m_bank[8]->set_base(ram + 0xc800);
break;
}
// BANK 10 (0xd000 - 0xd7ff)
switch (m_mem_page) {
case 7:
- membank("bank10")->set_base(ram + 0x5000);
+ m_bank[9]->set_base(ram + 0x5000);
break;
case 8:
case 9:
// window 2
space.unmap_write(0xd000, 0xd7ff);
- partner_window_2(10, 0x0800, rom);
+ partner_window_2(9, 0x0800, rom);
break;
default:
- membank("bank10")->set_base(ram + 0xd000);
+ m_bank[9]->set_base(ram + 0xd000);
break;
}
@@ -299,7 +293,7 @@ void partner_state::partner_bank_switch()
// BANK 12 (0xe000 - 0xe7ff)
if (m_mem_page==1) {
- membank("bank12")->set_base(rom + 0x10000);
+ m_bank[11]->set_base(rom + 0x10000);
} else {
//window 1
partner_window_1(12, 0, rom);
@@ -311,11 +305,11 @@ void partner_state::partner_bank_switch()
case 4:
case 5:
// window 1
- partner_window_1(13, 0x800, rom);
+ partner_window_1(12, 0x800, rom);
break;
default:
// BIOS
- membank("bank13")->set_base(rom + 0x10800);
+ m_bank[12]->set_base(rom + 0x10800);
break;
}
}