summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/machine
diff options
context:
space:
mode:
author Wilbert Pol <wilbert@jdg.info>2013-02-05 20:54:03 +0000
committer Wilbert Pol <wilbert@jdg.info>2013-02-05 20:54:03 +0000
commit400b9bcc299a67dfef945f82ca8de18b9a56f212 (patch)
tree0af1713fb7a5151d6dc8e90772f3d21fc27f1252 /src/mess/machine
parent3e7883e3fcf57399319157242ee4031b6323ca3b (diff)
Started moving DEVICE_IMAGE_ functions into driver_device classes. (nw)
Diffstat (limited to 'src/mess/machine')
-rw-r--r--src/mess/machine/990_hd.c8
-rw-r--r--src/mess/machine/a7800.c88
-rw-r--r--src/mess/machine/amstrad.c2
-rw-r--r--src/mess/machine/ataricrt.c659
-rw-r--r--src/mess/machine/ataridev.h12
-rw-r--r--src/mess/machine/bbc.c4
-rw-r--r--src/mess/machine/c64_legacy.c36
-rw-r--r--src/mess/machine/gamecom.c4
-rw-r--r--src/mess/machine/gb.c33
-rw-r--r--src/mess/machine/intv.c4
-rw-r--r--src/mess/machine/lynx.c27
-rw-r--r--src/mess/machine/msx.c12
-rw-r--r--src/mess/machine/nascom1.c18
-rw-r--r--src/mess/machine/nc.c36
-rw-r--r--src/mess/machine/nes.c2
-rw-r--r--src/mess/machine/pc.c2
-rw-r--r--src/mess/machine/pce.c2
-rw-r--r--src/mess/machine/pokemini.c2
-rw-r--r--src/mess/machine/sms.c31
-rw-r--r--src/mess/machine/snescart.c20
-rw-r--r--src/mess/machine/svi318.c11
-rw-r--r--src/mess/machine/thomson.c4
-rw-r--r--src/mess/machine/vtech2.c4
-rw-r--r--src/mess/machine/wswan.c82
24 files changed, 209 insertions, 894 deletions
diff --git a/src/mess/machine/990_hd.c b/src/mess/machine/990_hd.c
index 66af02f7e82..d475daff3f6 100644
--- a/src/mess/machine/990_hd.c
+++ b/src/mess/machine/990_hd.c
@@ -203,7 +203,7 @@ DEVICE_STOP( ti990_hd )
/*
Initialize hard disk unit and open a hard disk image
*/
-static DEVICE_IMAGE_LOAD( ti990_hd )
+static DEVICE_IMAGE_LOAD_LEGACY( ti990_hd )
{
int id = get_id_from_device( &image.device() );
hd_unit_t *d;
@@ -280,7 +280,7 @@ static DEVICE_IMAGE_LOAD( ti990_hd )
/*
close a hard disk image
*/
-static DEVICE_IMAGE_UNLOAD( ti990_hd )
+static DEVICE_IMAGE_UNLOAD_LEGACY( ti990_hd )
{
int id = get_id_from_device( image );
hd_unit_t *d;
@@ -1038,8 +1038,8 @@ WRITE16_HANDLER(ti990_hdc_w)
static const struct harddisk_interface ti990_harddisk_config =
{
- DEVICE_IMAGE_LOAD_NAME( ti990_hd ),
- DEVICE_IMAGE_UNLOAD_NAME( ti990_hd ),
+ DEVICE_IMAGE_LOAD_NAME_LEGACY( ti990_hd ),
+ DEVICE_IMAGE_UNLOAD_NAME_LEGACY( ti990_hd ),
NULL,
NULL
};
diff --git a/src/mess/machine/a7800.c b/src/mess/machine/a7800.c
index 643721c751e..21848e2efd7 100644
--- a/src/mess/machine/a7800.c
+++ b/src/mess/machine/a7800.c
@@ -191,27 +191,26 @@ static int a7800_verify_cart(char header[128])
}
-DEVICE_START( a7800_cart )
+DEVICE_IMAGE_START_MEMBER( a7800_state, a7800_cart )
{
- a7800_state *state = device->machine().driver_data<a7800_state>();
- UINT8 *memory = state->memregion("maincpu")->base();
+ UINT8 *memory = memregion("maincpu")->base();
- state->m_bios_bkup = NULL;
- state->m_cart_bkup = NULL;
+ m_bios_bkup = NULL;
+ m_cart_bkup = NULL;
/* Allocate memory for BIOS bank switching */
- state->m_bios_bkup = auto_alloc_array_clear(device->machine(), UINT8, 0x4000);
- state->m_cart_bkup = auto_alloc_array(device->machine(), UINT8, 0x4000);
+ m_bios_bkup = auto_alloc_array_clear(machine(), UINT8, 0x4000);
+ m_cart_bkup = auto_alloc_array(machine(), UINT8, 0x4000);
/* save the BIOS so we can switch it in and out */
- memcpy( state->m_bios_bkup, memory + 0xC000, 0x4000 );
+ memcpy( m_bios_bkup, memory + 0xC000, 0x4000 );
/* Initialize cart area to "no data" */
- memset( state->m_cart_bkup, 0xFF, 0x4000 );
+ memset( m_cart_bkup, 0xFF, 0x4000 );
/* defaults for PAL bios without cart */
- state->m_cart_type = 0;
- state->m_stick_type = 1;
+ m_cart_type = 0;
+ m_stick_type = 1;
}
struct a7800_pcb
@@ -249,9 +248,8 @@ static UINT16 a7800_get_pcb_id(const char *pcb)
return 0;
}
-DEVICE_IMAGE_LOAD( a7800_cart )
+DEVICE_IMAGE_LOAD_MEMBER( a7800_state, a7800_cart )
{
- a7800_state *state = image.device().machine().driver_data<a7800_state>();
UINT32 len = 0, start = 0;
unsigned char header[128];
UINT8 *memory = image.device().machine().root_device().memregion("maincpu")->base();
@@ -268,43 +266,43 @@ DEVICE_IMAGE_LOAD( a7800_cart )
return IMAGE_INIT_FAIL;
len =(header[49] << 24) |(header[50] << 16) |(header[51] << 8) | header[52];
- state->m_cart_size = len;
+ m_cart_size = len;
- state->m_cart_type =(header[53] << 8) | header[54];
- state->m_stick_type = header[55];
- logerror("Cart type: %x\n", state->m_cart_type);
+ m_cart_type =(header[53] << 8) | header[54];
+ m_stick_type = header[55];
+ logerror("Cart type: %x\n", m_cart_type);
/* For now, if game support stick and gun, set it to stick */
- if (state->m_stick_type == 3)
- state->m_stick_type = 1;
+ if (m_stick_type == 3)
+ m_stick_type = 1;
}
else
{
len = image.get_software_region_length("rom");
- state->m_cart_size = len;
+ m_cart_size = len;
// TODO: add stick/gun support to xml!
- state->m_stick_type = 1;
+ m_stick_type = 1;
if ((pcb_name = image.get_feature("pcb_type")) == NULL)
- state->m_cart_type = 0;
+ m_cart_type = 0;
else
- state->m_cart_type = a7800_get_pcb_id(pcb_name);
+ m_cart_type = a7800_get_pcb_id(pcb_name);
}
- if (state->m_cart_type == 0 || state->m_cart_type == 1)
+ if (m_cart_type == 0 || m_cart_type == 1)
{
/* Normal Cart */
start = 0x10000 - len;
- state->m_cartridge_rom = memory + start;
+ m_cartridge_rom = memory + start;
if (image.software_entry() == NULL)
- image.fread(state->m_cartridge_rom, len);
+ image.fread(m_cartridge_rom, len);
else
- memcpy(state->m_cartridge_rom, image.get_software_region("rom"), len);
+ memcpy(m_cartridge_rom, image.get_software_region("rom"), len);
}
- else if (state->m_cart_type & 0x02)
+ else if (m_cart_type & 0x02)
{
/* Super Cart */
/* Extra ROM at $4000 */
- if (state->m_cart_type & 0x08)
+ if (m_cart_type & 0x08)
{
if (image.software_entry() == NULL)
image.fread(memory + 0x4000, 0x4000);
@@ -314,11 +312,11 @@ DEVICE_IMAGE_LOAD( a7800_cart )
start = 0x4000;
}
- state->m_cartridge_rom = memory + 0x10000;
+ m_cartridge_rom = memory + 0x10000;
if (image.software_entry() == NULL)
- image.fread(state->m_cartridge_rom, len);
+ image.fread(m_cartridge_rom, len);
else
- memcpy(state->m_cartridge_rom, image.get_software_region("rom") + start, len);
+ memcpy(m_cartridge_rom, image.get_software_region("rom") + start, len);
/* bank 0 */
memcpy(memory + 0x8000, memory + 0x10000, 0x4000);
@@ -332,22 +330,22 @@ DEVICE_IMAGE_LOAD( a7800_cart )
*/
/* bank n-2 */
- if (!(state->m_cart_type & 0x0d))
+ if (!(m_cart_type & 0x0d))
{
memcpy(memory + 0x4000, memory + 0x10000 + len - 0x8000, 0x4000);
}
}
- else if (state->m_cart_type == MBANK_TYPE_ABSOLUTE)
+ else if (m_cart_type == MBANK_TYPE_ABSOLUTE)
{
/* F18 Hornet */
- logerror("Cart type: %x Absolute\n",state->m_cart_type);
+ logerror("Cart type: %x Absolute\n",m_cart_type);
- state->m_cartridge_rom = memory + 0x10000;
+ m_cartridge_rom = memory + 0x10000;
if (image.software_entry() == NULL)
- image.fread(state->m_cartridge_rom, len);
+ image.fread(m_cartridge_rom, len);
else
- memcpy(state->m_cartridge_rom, image.get_software_region("rom") + start, len);
+ memcpy(m_cartridge_rom, image.get_software_region("rom") + start, len);
/* bank 0 */
memcpy(memory + 0x4000, memory + 0x10000, 0x4000);
@@ -355,17 +353,17 @@ DEVICE_IMAGE_LOAD( a7800_cart )
/* last bank */
memcpy(memory + 0x8000, memory + 0x18000, 0x8000);
}
- else if (state->m_cart_type == MBANK_TYPE_ACTIVISION)
+ else if (m_cart_type == MBANK_TYPE_ACTIVISION)
{
/* Activision */
- logerror("Cart type: %x Activision\n",state->m_cart_type);
+ logerror("Cart type: %x Activision\n",m_cart_type);
- state->m_cartridge_rom = memory + 0x10000;
+ m_cartridge_rom = memory + 0x10000;
if (image.software_entry() == NULL)
- image.fread(state->m_cartridge_rom, len);
+ image.fread(m_cartridge_rom, len);
else
- memcpy(state->m_cartridge_rom, image.get_software_region("rom") + start, len);
+ memcpy(m_cartridge_rom, image.get_software_region("rom") + start, len);
/* bank 0 */
memcpy(memory + 0xa000, memory + 0x10000, 0x4000);
@@ -384,8 +382,8 @@ DEVICE_IMAGE_LOAD( a7800_cart )
}
- memcpy(state->m_cart_bkup, memory + 0xc000, 0x4000);
- memcpy(memory + 0xc000, state->m_bios_bkup, 0x4000);
+ memcpy(m_cart_bkup, memory + 0xc000, 0x4000);
+ memcpy(memory + 0xc000, m_bios_bkup, 0x4000);
return IMAGE_INIT_PASS;
}
diff --git a/src/mess/machine/amstrad.c b/src/mess/machine/amstrad.c
index 0977c48c463..226a7bc020f 100644
--- a/src/mess/machine/amstrad.c
+++ b/src/mess/machine/amstrad.c
@@ -3135,7 +3135,7 @@ SNAPSHOT_LOAD(amstrad)
}
-DEVICE_IMAGE_LOAD(amstrad_plus_cartridge)
+DEVICE_IMAGE_LOAD_MEMBER(amstrad_state, amstrad_plus_cartridge)
{
// load CPC Plus / GX4000 cartridge image
// Format is RIFF: RIFF header chunk contains "AMS!"
diff --git a/src/mess/machine/ataricrt.c b/src/mess/machine/ataricrt.c
index afee4ba8bf6..f151100f767 100644
--- a/src/mess/machine/ataricrt.c
+++ b/src/mess/machine/ataricrt.c
@@ -25,247 +25,6 @@ enum
SPARTADOS_X
};
-static int a800_cart_loaded = 0;
-static int atari = 0;
-static int a800_cart_type = A800_UNKNOWN;
-
-/*************************************
- *
- * Generic code
- *
- *************************************/
-
-
-// Currently, the drivers have fixed 40k RAM, however the function here is ready for different sizes too
-static void a800_setbank(running_machine &machine, int cart_mounted)
-{
- offs_t ram_top;
- // take care of 0x0000-0x7fff: RAM or NOP
- ram_top = MIN(machine.device<ram_device>(RAM_TAG)->size(), 0x8000) - 1;
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_bank(0x0000, ram_top, "0000");
- machine.root_device().membank("0000")->set_base(machine.device<ram_device>(RAM_TAG)->pointer());
-
- // take care of 0x8000-0x9fff: A800 -> either right slot or RAM or NOP, others -> RAM or NOP
- // is there anything in the right slot?
- if (cart_mounted & RIGHT_CARTSLOT_MOUNTED)
- {
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0x8000, 0x9fff, "8000");
- machine.root_device().membank("8000")->set_base(machine.root_device().memregion("rslot")->base());
- machine.device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0x8000, 0x9fff);
- }
- else if (a800_cart_type != BBSB)
- {
- ram_top = MIN(machine.device<ram_device>(RAM_TAG)->size(), 0xa000) - 1;
- if (ram_top > 0x8000)
- {
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_bank(0x8000, ram_top, "8000");
- machine.root_device().membank("8000")->set_base(machine.device<ram_device>(RAM_TAG)->pointer() + 0x8000);
- }
- }
-
- // take care of 0xa000-0xbfff: is there anything in the left slot?
- if (cart_mounted & LEFT_CARTSLOT_MOUNTED)
- {
- // FIXME: this is an hack to keep XL working until we clean up its memory map as well!
- if (atari == ATARI_800XL)
- {
- if (a800_cart_type == A800_16K)
- {
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0x8000, 0x9fff, "8000");
- machine.root_device().membank("8000")->set_base(machine.root_device().memregion("lslot")->base());
- machine.device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0x8000, 0x9fff);
-
- memcpy(machine.root_device().memregion("maincpu")->base() + 0x10000, machine.root_device().memregion("lslot")->base() + 0x2000, 0x2000);
- }
- else if (a800_cart_type == A800_8K)
- memcpy(machine.root_device().memregion("maincpu")->base() + 0x10000, machine.root_device().memregion("lslot")->base(), 0x2000);
- else
- fatalerror("This type of cart is not supported yet in this driver. Please use a400 or a800.\n");
- }
- else if (a800_cart_type == A800_16K)
- {
- machine.root_device().membank("8000")->set_base(machine.root_device().memregion("lslot")->base());
- machine.root_device().membank("a000")->set_base(machine.root_device().memregion("lslot")->base() + 0x2000);
- machine.device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0x8000, 0xbfff);
- }
- else if (a800_cart_type == BBSB)
- {
- // this requires separate banking in 0x8000 & 0x9000!
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0x8000, 0x8fff, "8000");
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0x9000, 0x9fff, "9000");
- machine.root_device().membank("8000")->set_base(machine.root_device().memregion("lslot")->base() + 0x0000);
- machine.root_device().membank("9000")->set_base(machine.root_device().memregion("lslot")->base() + 0x4000);
- machine.root_device().membank("a000")->set_base(machine.root_device().memregion("lslot")->base() + 0x8000);
- machine.device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0xa000, 0xbfff);
- }
- else if (a800_cart_type == OSS_034M)
- {
- // this requires separate banking in 0xa000 & 0xb000!
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0xa000, 0xafff, "a000");
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0xb000, 0xbfff, "b000");
- machine.root_device().membank("b000")->set_base(machine.root_device().memregion("lslot")->base() + 0x3000);
- machine.device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0xa000, 0xbfff);
- }
- else if (a800_cart_type == OSS_M091)
- {
- // this requires separate banking in 0xa000 & 0xb000!
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0xa000, 0xafff, "a000");
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0xb000, 0xbfff, "b000");
- machine.root_device().membank("b000")->set_base(machine.root_device().memregion("lslot")->base());
- machine.device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0xa000, 0xbfff);
- }
- else if (a800_cart_type == XEGS_32K)
- {
- machine.root_device().membank("8000")->set_base(machine.root_device().memregion("lslot")->base());
- machine.root_device().membank("a000")->set_base(machine.root_device().memregion("lslot")->base() + 0x6000);
- machine.device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0x8000, 0xbfff);
- }
- else
- {
- machine.root_device().membank("a000")->set_base(machine.root_device().memregion("lslot")->base());
- machine.device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0xa000, 0xbfff);
- }
- }
-}
-
-/* MESS specific parts that have to be started */
-static void ms_atari_machine_start(running_machine &machine, int type, int has_cart)
-{
- /* set atari type (temporarily not used) */
- atari = type;
- a800_setbank(machine, a800_cart_loaded);
-}
-
-static void ms_atari800xl_machine_start(running_machine &machine, int type, int has_cart)
-{
- /* set atari type (temporarily not used) */
- atari = type;
- a800_setbank(machine, a800_cart_loaded);
-}
-
-/*************************************
- *
- * Atari 400
- *
- *************************************/
-
-MACHINE_START( a400 )
-{
- atari_machine_start(machine);
- ms_atari_machine_start(machine, ATARI_400, TRUE);
-}
-
-
-/*************************************
- *
- * Atari 800
- *
- *************************************/
-
-MACHINE_START( a800 )
-{
- atari_machine_start(machine);
- ms_atari_machine_start(machine, ATARI_800, TRUE);
-}
-
-static WRITE8_HANDLER( x32_bank_w )
-{
- // printf("written %x\n", data);
- int bank = data & 0x03;
- space.machine().root_device().membank("8000")->set_base(space.machine().root_device().memregion("lslot")->base() + bank * 0x2000);
-}
-
-static WRITE8_HANDLER( w64_bank_w )
-{
-// printf("write to %x\n", offset);
-
- if (offset < 8)
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("lslot")->base() + offset * 0x2000);
- else
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("maincpu")->base());
- // FIXME: writes to 0x8-0xf should disable the cart
-}
-
-// this covers Express 64, Diamond 64 and SpartaDOS (same bankswitch, but at different addresses)
-static WRITE8_HANDLER( ex64_bank_w )
-{
-// printf("write to %x\n", offset);
-
- if (offset < 8)
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("lslot")->base() + (7 - offset) * 0x2000);
- else
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("maincpu")->base());
- // FIXME: writes to 0x8-0xf should disable the cart
-}
-
-static WRITE8_HANDLER( bbsb_bankl_w )
-{
-// printf("write to %x\n", 0x8000 + offset);
- if (offset >= 0xff6 && offset <= 0xff9)
- space.machine().root_device().membank("8000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x0000 + (offset - 0xff6) * 0x1000);
-}
-
-static WRITE8_HANDLER( bbsb_bankh_w )
-{
-// printf("write to %x\n", 0x9000 + offset);
- if (offset >= 0xff6 && offset <= 0xff9)
- space.machine().root_device().membank("9000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x4000 + (offset - 0xff6) * 0x1000);
-}
-
-static WRITE8_HANDLER( oss_034m_w )
-{
- switch (offset & 0x0f)
- {
- case 0:
- case 1:
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("lslot")->base());
- space.machine().root_device().membank("b000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x3000);
- break;
- case 2:
- case 6:
- // docs says this should put 0xff in the 0xa000 bank -> let's point to the end of the cart
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x4000);
- space.machine().root_device().membank("b000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x3000);
- break;
- case 3:
- case 7:
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x1000);
- space.machine().root_device().membank("b000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x3000);
- break;
- case 4:
- case 5:
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x2000);
- space.machine().root_device().membank("b000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x3000);
- break;
- default:
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("maincpu")->base() + 0xa000);
- space.machine().root_device().membank("b000")->set_base(space.machine().root_device().memregion("maincpu")->base() + 0xb000);
- break;
- }
-}
-
-static WRITE8_HANDLER( oss_m091_w )
-{
- switch (offset & 0x09)
- {
- case 0:
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x1000);
- space.machine().root_device().membank("b000")->set_base(space.machine().root_device().memregion("lslot")->base());
- break;
- case 1:
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x3000);
- space.machine().root_device().membank("b000")->set_base(space.machine().root_device().memregion("lslot")->base());
- break;
- case 8:
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("maincpu")->base() + 0xa000);
- space.machine().root_device().membank("b000")->set_base(space.machine().root_device().memregion("maincpu")->base() + 0xb000);
- break;
- case 9:
- space.machine().root_device().membank("a000")->set_base(space.machine().root_device().memregion("lslot")->base() + 0x2000);
- space.machine().root_device().membank("b000")->set_base(space.machine().root_device().memregion("lslot")->base());
- break;
- }
-}
#if 0
static int bbsb_bankl = 0;
@@ -296,422 +55,4 @@ static READ8_HANDLER( bbsb_bankh_r )
}
#endif
-struct a800_pcb
-{
- const char *pcb_name;
- int pcb_id;
-};
-
-// Here, we take the feature attribute from .xml (i.e. the PCB name) and we assign a unique ID to it
-// WARNING: most of these are still unsupported by the driver
-static const a800_pcb pcb_list[] =
-{
- {"standard 4k", A800_8K},
- {"standard 8k", A800_8K},
- {"standard 12k", A800_16K},
- {"standard 16k", A800_16K},
- {"right slot 4k", A800_RIGHT_4K},
- {"right slot 8k", A800_RIGHT_8K},
-
- {"oss 034m", OSS_034M},
- {"oss m091", OSS_M091},
- {"phoenix 8k", PHOENIX_8K},
- {"xegs 32k", XEGS_32K},
- {"bbsb", BBSB},
- {"diamond 64k", DIAMOND_64K},
- {"williams 64k", WILLIAMS_64K},
- {"express 64", EXPRESS_64},
- {"spartados x", SPARTADOS_X},
- {"N/A", A800_UNKNOWN}
-};
-
-static int a800_get_pcb_id(const char *pcb)
-{
- int i;
-
- for (i = 0; i < ARRAY_LENGTH(pcb_list); i++)
- {
- if (!mame_stricmp(pcb_list[i].pcb_name, pcb))
- return pcb_list[i].pcb_id;
- }
-
- return A800_UNKNOWN;
-}
-
-// currently this does nothing, but it will eventually install the memory handlers required by the mappers
-static void a800_setup_mappers(running_machine &machine, int type)
-{
- switch (type)
- {
- case A800_4K:
- case A800_RIGHT_4K:
- case A800_12K:
- case A800_8K:
- case A800_16K:
- case A800_RIGHT_8K:
- case PHOENIX_8K: // as normal 8k cart, but it can be disabled by writing to 0xd500-0xdfff
- break;
- case XEGS_32K:
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0xd500, 0xd5ff, FUNC(x32_bank_w));
- break;
- case OSS_034M:
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0xd500, 0xd5ff, FUNC(oss_034m_w));
- break;
- case OSS_M091:
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0xd500, 0xd5ff, FUNC(oss_m091_w));
- break;
- case BBSB:
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x8000, 0x8fff, FUNC(bbsb_bankl_w));
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x9000, 0x9fff, FUNC(bbsb_bankh_w));
- break;
- case WILLIAMS_64K:
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0xd500, 0xd50f, FUNC(w64_bank_w));
- break;
- case DIAMOND_64K:
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0xd5d0, 0xd5df, FUNC(ex64_bank_w));
- break;
- case EXPRESS_64:
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0xd570, 0xd57f, FUNC(ex64_bank_w));
- break;
- case SPARTADOS_X:
- machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0xd5e0, 0xd5ef, FUNC(ex64_bank_w));
- break;
- default:
- break;
- }
-}
-
-static int a800_get_type(device_image_interface &image)
-{
- UINT8 header[16];
- image.fread(header, 0x10);
- int hdr_type, cart_type = A800_UNKNOWN;
-
- // add check of CART format
- if (strncmp((const char *)header, "CART", 4))
- fatalerror("Invalid header detected!\n");
-
- hdr_type = (header[4] << 24) + (header[5] << 16) + (header[6] << 8) + (header[7] << 0);
- switch (hdr_type)
- {
- case 1:
- cart_type = A800_8K;
- break;
- case 2:
- cart_type = A800_16K;
- break;
- case 3:
- cart_type = OSS_034M;
- break;
- case 8:
- cart_type = WILLIAMS_64K;
- break;
- case 9:
- cart_type = DIAMOND_64K;
- break;
- case 10:
- cart_type = EXPRESS_64;
- break;
- case 11:
- cart_type = SPARTADOS_X;
- break;
- case 12:
- cart_type = XEGS_32K;
- break;
- case 15:
- cart_type = OSS_M091;
- break;
- case 18:
- cart_type = BBSB;
- break;
- case 21:
- cart_type = A800_RIGHT_8K;
- break;
- case 39:
- cart_type = PHOENIX_8K;
- break;
- case 4:
- case 6:
- case 7:
- case 16:
- case 19:
- case 20:
- fatalerror("Cart type \"%d\" means this is an Atari 5200 cart.\n", hdr_type);
- break;
- default:
- mame_printf_info("Cart type \"%d\" is currently unsupported.\n", hdr_type);
- break;
- }
- return cart_type;
-}
-static int a800_check_cart_type(device_image_interface &image)
-{
- const char *pcb_name;
- int type = A800_UNKNOWN;
-
- if (image.software_entry() == NULL)
- {
- UINT32 size = image.length();
-
- // check if there is an header, if so extract cart_type from it, otherwise
- // try to guess the cart_type from the file size (notice that after the
- // a800_get_type call, we point at the start of the data)
- if ((size % 0x1000) == 0x10)
- type = a800_get_type(image);
- else if (size == 0x4000)
- type = A800_16K;
- else if (size == 0x2000)
- {
- if (strcmp(image.device().tag(),":cart2") == 0)
- type = A800_RIGHT_8K;
- else
- type = A800_8K;
- }
- }
- else
- {
- if ((pcb_name = image.get_feature("cart_type")) != NULL)
- type = a800_get_pcb_id(pcb_name);
-
- switch (type)
- {
- case A800_UNKNOWN:
- case A800_4K:
- case A800_RIGHT_4K:
- case A800_12K:
- case A800_8K:
- case A800_16K:
- case A800_RIGHT_8K:
- break;
- default:
- mame_printf_info("Cart type \"%s\" currently unsupported.\n", pcb_name);
- break;
- }
- }
-
- if ((strcmp(image.device().tag(),":cart2") == 0) && (type != A800_RIGHT_8K))
- fatalerror("You cannot load this image '%s' in the right slot\n", image.filename());
-
- return type;
-}
-
-DEVICE_IMAGE_LOAD( a800_cart )
-{
- UINT32 size, start = 0;
-
- a800_cart_loaded = a800_cart_loaded & ~LEFT_CARTSLOT_MOUNTED;
- a800_cart_type = a800_check_cart_type(image);
-
- a800_setup_mappers(image.device().machine(), a800_cart_type);
-
- if (image.software_entry() == NULL)
- {
- size = image.length();
- // if there is an header, skip it
- if ((size % 0x1000) == 0x10)
- {
- size -= 0x10;
- start = 0x10;
- }
- image.fread(image.device().machine().root_device().memregion("lslot")->base(), size - start);
- }
- else
- {
- size = image.get_software_region_length("rom");
- memcpy(image.device().machine().root_device().memregion("lslot")->base(), image.get_software_region("rom"), size);
- }
-
- a800_cart_loaded |= (size > 0x0000) ? 1 : 0;
-
- logerror("%s loaded left cartridge '%s' size %dK\n", image.device().machine().system().name, image.filename(), size/1024);
- return IMAGE_INIT_PASS;
-}
-
-DEVICE_IMAGE_LOAD( a800_cart_right )
-{
- UINT32 size, start = 0;
-
- a800_cart_loaded = a800_cart_loaded & ~RIGHT_CARTSLOT_MOUNTED;
- a800_cart_type = a800_check_cart_type(image);
-
- a800_setup_mappers(image.device().machine(), a800_cart_type);
-
- if (image.software_entry() == NULL)
- {
- size = image.length();
- // if there is an header, skip it
- if ((size % 0x1000) == 0x10)
- {
- size -= 0x10;
- start = 0x10;
- }
- image.fread(image.device().machine().root_device().memregion("rslot")->base(), size - start);
- }
- else
- {
- size = image.get_software_region_length("rom");
- memcpy(image.device().machine().root_device().memregion("rslot")->base(), image.get_software_region("rom"), size);
- }
-
- a800_cart_loaded |= (size > 0x0000) ? 2 : 0;
-
- logerror("%s loaded right cartridge '%s' size 8K\n", image.device().machine().system().name, image.filename());
- return IMAGE_INIT_PASS;
-}
-
-DEVICE_IMAGE_UNLOAD( a800_cart )
-{
- a800_cart_loaded = a800_cart_loaded & ~LEFT_CARTSLOT_MOUNTED;
- a800_cart_type = A800_UNKNOWN;
- a800_setbank(image.device().machine(), a800_cart_loaded);
-}
-
-DEVICE_IMAGE_UNLOAD( a800_cart_right )
-{
- a800_cart_loaded = a800_cart_loaded & ~RIGHT_CARTSLOT_MOUNTED;
- a800_cart_type = A800_UNKNOWN;
- a800_setbank(image.device().machine(), a800_cart_loaded);
-}
-
-
-/*************************************
- *
- * Atari 800XL
- *
- *************************************/
-
-MACHINE_START( a800xl )
-{
- atari_machine_start(machine);
- ms_atari800xl_machine_start(machine, ATARI_800XL, TRUE);
-}
-
-/*************************************
- *
- * Atari 5200 console
- *
- *************************************/
-
-MACHINE_START( a5200 )
-{
- atari_machine_start(machine);
- ms_atari_machine_start(machine, ATARI_800XL, TRUE);
-}
-
-
-DEVICE_IMAGE_LOAD( a5200_cart )
-{
- UINT8 *mem = image.device().machine().root_device().memregion("maincpu")->base();
- UINT32 size;
- bool A13_mirr = FALSE;
-
- if (image.software_entry() == NULL)
- {
- /* load an optional (dual) cartidge */
- size = image.fread(&mem[0x4000], 0x8000);
- const char *info = hashfile_extrainfo(image);
- if (info && !strcmp(info, "A13MIRRORING"))
- A13_mirr = TRUE;
- }
- else
- {
- size = image.get_software_region_length("rom");
- memcpy(mem + 0x4000, image.get_software_region("rom"), size);
- const char *pcb_name = image.get_feature("cart_type");
- if (pcb_name && !strcmp(pcb_name, "A13MIRRORING"))
- A13_mirr = TRUE;
- }
-
- if (size<0x8000) memmove(mem+0x4000+0x8000-size, mem+0x4000, size);
- // mirroring of smaller cartridges
- if (size <= 0x1000) memcpy(mem+0xa000, mem+0xb000, 0x1000);
- if (size <= 0x2000) memcpy(mem+0x8000, mem+0xa000, 0x2000);
- if (size <= 0x4000)
- {
- memcpy(&mem[0x4000], &mem[0x8000], 0x4000);
- if (A13_mirr)
- {
- memcpy(&mem[0x8000], &mem[0xa000], 0x2000);
- memcpy(&mem[0x6000], &mem[0x4000], 0x2000);
- }
- }
- logerror("A5200 loaded cartridge '%s' size %dK\n", image.filename() , size/1024);
- return IMAGE_INIT_PASS;
-}
-
-DEVICE_IMAGE_UNLOAD( a5200_cart )
-{
- UINT8 *mem = image.device().machine().root_device().memregion("maincpu")->base();
- /* zap the cartridge memory (again) */
- memset(&mem[0x4000], 0x00, 0x8000);
-}
-
-/*************************************
- *
- * Atari XEGS
- *
- *************************************/
-
-static UINT8 xegs_banks = 0;
-static UINT8 xegs_cart = 0;
-
-static WRITE8_HANDLER( xegs_bankswitch )
-{
- UINT8 *cart = space.machine().root_device().memregion("user1")->base();
- data &= xegs_banks - 1;
- space.machine().root_device().membank("bank0")->set_base(cart + data * 0x2000);
-}
-
-MACHINE_START( xegs )
-{
- address_space &space = machine.device("maincpu")->memory().space(AS_PROGRAM);
- UINT8 *cart = space.machine().root_device().memregion("user1")->base();
- UINT8 *cpu = space.machine().root_device().memregion("maincpu")->base();
-
- atari_machine_start(machine);
- space.install_legacy_write_handler(0xd500, 0xd5ff, FUNC(xegs_bankswitch));
-
- if (xegs_cart)
- {
- machine.root_device().membank("bank0")->set_base(cart);
- machine.root_device().membank("bank1")->set_base(cart + (xegs_banks - 1) * 0x2000);
- }
- else
- {
- // point to built-in Missile Command (this does not work well, though... FIXME!!)
- machine.root_device().membank("bank0")->set_base(cpu + 0x10000);
- machine.root_device().membank("bank1")->set_base(cpu + 0x10000);
- }
-}
-
-DEVICE_IMAGE_LOAD( xegs_cart )
-{
- UINT32 size;
- UINT8 *ptr = image.device().machine().root_device().memregion("user1")->base();
-
- if (image.software_entry() == NULL)
- {
- // skip the header
- image.fseek(0x10, SEEK_SET);
- size = image.length() - 0x10;
- if (image.fread(ptr, size) != size)
- return IMAGE_INIT_FAIL;
- }
- else
- {
- size = image.get_software_region_length("rom");
- memcpy(ptr, image.get_software_region("rom"), size);
- }
-
- xegs_banks = size / 0x2000;
- xegs_cart = 1;
-
- return IMAGE_INIT_PASS;
-}
-
-DEVICE_IMAGE_UNLOAD( xegs_cart )
-{
- xegs_cart = 0;
- xegs_banks = 0;
-}
diff --git a/src/mess/machine/ataridev.h b/src/mess/machine/ataridev.h
index e9c865270cd..14e8cdaeca5 100644
--- a/src/mess/machine/ataridev.h
+++ b/src/mess/machine/ataridev.h
@@ -20,18 +20,6 @@ MACHINE_START( a800xl );
MACHINE_START( a5200 );
MACHINE_START( xegs );
-DEVICE_IMAGE_LOAD( a800_cart );
-DEVICE_IMAGE_UNLOAD( a800_cart );
-
-DEVICE_IMAGE_LOAD( a800_cart_right );
-DEVICE_IMAGE_UNLOAD( a800_cart_right );
-
-DEVICE_IMAGE_LOAD( a5200_cart );
-DEVICE_IMAGE_UNLOAD( a5200_cart );
-
-DEVICE_IMAGE_LOAD( xegs_cart );
-DEVICE_IMAGE_UNLOAD( xegs_cart );
-
/*----------- defined in machine/atarifdc.c -----------*/
/***************************************************************************
diff --git a/src/mess/machine/bbc.c b/src/mess/machine/bbc.c
index fe90477da4a..5e0a88bd8d8 100644
--- a/src/mess/machine/bbc.c
+++ b/src/mess/machine/bbc.c
@@ -1913,9 +1913,9 @@ WRITE8_MEMBER(bbc_state::bbc_disc_w)
/**************************************
BBC B Rom loading functions
***************************************/
-DEVICE_IMAGE_LOAD( bbcb_cart )
+DEVICE_IMAGE_LOAD_MEMBER( bbc_state, bbcb_cart )
{
- UINT8 *mem = image.device().machine().root_device().memregion("user1")->base();
+ UINT8 *mem = machine().root_device().memregion("user1")->base();
int size, read_;
int addr = 0;
int index = 0;
diff --git a/src/mess/machine/c64_legacy.c b/src/mess/machine/c64_legacy.c
index 95f3903b6ea..a3a1c6751df 100644
--- a/src/mess/machine/c64_legacy.c
+++ b/src/mess/machine/c64_legacy.c
@@ -505,30 +505,28 @@ enum {
*****************************************/
};
-static DEVICE_IMAGE_UNLOAD( c64_cart )
+DEVICE_IMAGE_UNLOAD_MEMBER( legacy_c64_state, c64_cart )
{
- legacy_c64_state *state = image.device().machine().driver_data<legacy_c64_state>();
int i;
for (i = 0; i < C64_MAX_ROMBANK; i++)
{
- state->m_cart.bank[i].size = 0;
- state->m_cart.bank[i].addr = 0;
- state->m_cart.bank[i].index = 0;
- state->m_cart.bank[i].start = 0;
+ m_cart.bank[i].size = 0;
+ m_cart.bank[i].addr = 0;
+ m_cart.bank[i].index = 0;
+ m_cart.bank[i].start = 0;
}
}
-static DEVICE_START( c64_cart )
+DEVICE_IMAGE_START_MEMBER( legacy_c64_state, c64_cart )
{
- legacy_c64_state *state = device->machine().driver_data<legacy_c64_state>();
/* In the first slot we can load a .crt file. In this case we want
to use game & exrom values from the header, not the default ones. */
- state->m_cart.game = -1;
- state->m_cart.exrom = -1;
- state->m_cart.mapper = GENERIC_CRT;
- state->m_cart.n_banks = 0;
+ m_cart.game = -1;
+ m_cart.exrom = -1;
+ m_cart.mapper = GENERIC_CRT;
+ m_cart.n_banks = 0;
}
static int c64_crt_load( device_image_interface &image )
@@ -1166,7 +1164,7 @@ static void c64_software_list_cartridge_load(device_image_interface &image)
}
}
-static DEVICE_IMAGE_LOAD( c64_cart )
+DEVICE_IMAGE_LOAD_MEMBER( legacy_c64_state, c64_cart )
{
int result = IMAGE_INIT_PASS;
@@ -1184,16 +1182,16 @@ MACHINE_CONFIG_FRAGMENT( c64_cartslot )
MCFG_CARTSLOT_EXTENSION_LIST("crt,80")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("c64_cart")
- MCFG_CARTSLOT_START(c64_cart)
- MCFG_CARTSLOT_LOAD(c64_cart)
- MCFG_CARTSLOT_UNLOAD(c64_cart)
+ MCFG_CARTSLOT_START(legacy_c64_state,c64_cart)
+ MCFG_CARTSLOT_LOAD(legacy_c64_state,c64_cart)
+ MCFG_CARTSLOT_UNLOAD(legacy_c64_state,c64_cart)
MCFG_CARTSLOT_ADD("cart2")
MCFG_CARTSLOT_EXTENSION_LIST("crt,80")
MCFG_CARTSLOT_NOT_MANDATORY
- MCFG_CARTSLOT_START(c64_cart)
- MCFG_CARTSLOT_LOAD(c64_cart)
- MCFG_CARTSLOT_UNLOAD(c64_cart)
+ MCFG_CARTSLOT_START(legacy_c64_state,c64_cart)
+ MCFG_CARTSLOT_LOAD(legacy_c64_state,c64_cart)
+ MCFG_CARTSLOT_UNLOAD(legacy_c64_state,c64_cart)
MCFG_SOFTWARE_LIST_ADD("cart_list_c64", "c64_cart")
MACHINE_CONFIG_END
diff --git a/src/mess/machine/gamecom.c b/src/mess/machine/gamecom.c
index ed619a9e0a8..aac7e9f99b5 100644
--- a/src/mess/machine/gamecom.c
+++ b/src/mess/machine/gamecom.c
@@ -560,7 +560,7 @@ DRIVER_INIT_MEMBER(gamecom_state,gamecom)
m_p_ram = m_region_maincpu->base(); // required here because pio_w gets called before machine_reset
}
-DEVICE_IMAGE_LOAD( gamecom_cart1 )
+DEVICE_IMAGE_LOAD_MEMBER( gamecom_state, gamecom_cart1 )
{
gamecom_state *state = image.device().machine().driver_data<gamecom_state>();
UINT32 filesize;
@@ -607,7 +607,7 @@ DEVICE_IMAGE_LOAD( gamecom_cart1 )
return IMAGE_INIT_PASS;
}
-DEVICE_IMAGE_LOAD( gamecom_cart2 )
+DEVICE_IMAGE_LOAD_MEMBER( gamecom_state, gamecom_cart2 )
{
gamecom_state *state = image.device().machine().driver_data<gamecom_state>();
UINT32 filesize;
diff --git a/src/mess/machine/gb.c b/src/mess/machine/gb.c
index 89380c35f11..4b6bdee6897 100644
--- a/src/mess/machine/gb.c
+++ b/src/mess/machine/gb.c
@@ -1496,35 +1496,34 @@ READ8_MEMBER(gb_state::gb_io_r)
}
}
-DEVICE_START(gb_cart)
+DEVICE_IMAGE_START_MEMBER(gb_state,gb_cart)
{
- gb_state *state = device->machine().driver_data<gb_state>();
int I;
- state->m_gb_dummy_rom_bank = auto_alloc_array(device->machine(), UINT8, 0x4000);
- memset(state->m_gb_dummy_rom_bank, 0xff, 0x4000);
+ m_gb_dummy_rom_bank = auto_alloc_array(machine(), UINT8, 0x4000);
+ memset(m_gb_dummy_rom_bank, 0xff, 0x4000);
- state->m_gb_dummy_ram_bank = auto_alloc_array(device->machine(), UINT8, 0x2000);
- memset(state->m_gb_dummy_ram_bank, 0xff, 0x2000 );
+ m_gb_dummy_ram_bank = auto_alloc_array(machine(), UINT8, 0x2000);
+ memset(m_gb_dummy_ram_bank, 0xff, 0x2000 );
for(I = 0; I < MAX_ROMBANK; I++)
{
- state->m_ROMMap[I] = state->m_gb_dummy_rom_bank;
+ m_ROMMap[I] = m_gb_dummy_rom_bank;
}
for(I = 0; I < MAX_RAMBANK; I++)
{
- state->m_RAMMap[I] = state->m_gb_dummy_ram_bank;
+ m_RAMMap[I] = m_gb_dummy_ram_bank;
}
- state->m_ROMBank00 = 0;
- state->m_ROMBanks = 0;
- state->m_RAMBanks = 0;
- state->m_MBCType = MBC_NONE;
- state->m_CartType = 0;
- state->m_ROMMask = 0;
- state->m_RAMMask = 0;
+ m_ROMBank00 = 0;
+ m_ROMBanks = 0;
+ m_RAMBanks = 0;
+ m_MBCType = MBC_NONE;
+ m_CartType = 0;
+ m_ROMMask = 0;
+ m_RAMMask = 0;
}
-DEVICE_IMAGE_LOAD(gb_cart)
+DEVICE_IMAGE_LOAD_MEMBER(gb_state,gb_cart)
{
gb_state *state = image.device().machine().driver_data<gb_state>();
static const char *const CartTypes[] =
@@ -2285,7 +2284,7 @@ WRITE8_MEMBER(gb_state::megaduck_rom_bank_select_type2)
}
}
-DEVICE_IMAGE_LOAD(megaduck_cart)
+DEVICE_IMAGE_LOAD_MEMBER(gb_state,megaduck_cart)
{
gb_state *state = image.device().machine().driver_data<gb_state>();
int I;
diff --git a/src/mess/machine/intv.c b/src/mess/machine/intv.c
index 83221c8e330..06a34d35384 100644
--- a/src/mess/machine/intv.c
+++ b/src/mess/machine/intv.c
@@ -545,7 +545,7 @@ static int intv_load_rom_file(device_image_interface &image)
}
}
-DEVICE_IMAGE_LOAD( intv_cart )
+DEVICE_IMAGE_LOAD_MEMBER( intv_state,intv_cart )
{
if (image.software_entry() == NULL)
return intv_load_rom_file(image);
@@ -820,7 +820,7 @@ WRITE8_MEMBER( intv_state::intv_ecs_porta_w )
/* Intellivision console + keyboard component */
-DEVICE_IMAGE_LOAD( intvkbd_cart )
+DEVICE_IMAGE_LOAD_MEMBER( intv_state,intvkbd_cart )
{
if (strcmp(image.device().tag(),":cart1") == 0) /* Legacy cartridge slot */
{
diff --git a/src/mess/machine/lynx.c b/src/mess/machine/lynx.c
index ff84a22f831..94d44d3e8df 100644
--- a/src/mess/machine/lynx.c
+++ b/src/mess/machine/lynx.c
@@ -2026,14 +2026,13 @@ int lynx_verify_cart (char *header, int kind)
return IMAGE_VERIFY_PASS;
}
-static DEVICE_IMAGE_LOAD( lynx_cart )
+DEVICE_IMAGE_LOAD_MEMBER( lynx_state, lynx_cart )
{
/* Lynx carts have 19 address lines, the upper 8 used for bank select. The lower
11 bits are used to address data within the selected bank. Valid bank sizes are 256,
512, 1024 or 2048 bytes. Commercial roms use all 256 banks.*/
- lynx_state *state = image.device().machine().driver_data<lynx_state>();
- UINT8 *rom = state->memregion("user1")->base();
+ UINT8 *rom = memregion("user1")->base();
UINT32 size;
UINT8 header[0x40];
@@ -2063,10 +2062,10 @@ static DEVICE_IMAGE_LOAD( lynx_cart )
/* 2008-10 FP: According to Handy source these should be page_size_bank0. Are we using
it correctly in MESS? Moreover, the next two values should be page_size_bank1. We should
implement this as well */
- state->m_granularity = header[4] | (header[5] << 8);
+ m_granularity = header[4] | (header[5] << 8);
logerror ("%s %dkb cartridge with %dbyte granularity from %s\n",
- header + 10, size / 1024, state->m_granularity, header + 42);
+ header + 10, size / 1024, m_granularity, header + 42);
size -= 0x40;
}
@@ -2076,11 +2075,11 @@ static DEVICE_IMAGE_LOAD( lynx_cart )
(see above). What if bank 0 has to be loaded elsewhere? And what about bank 1?
These should work with most .lyx files, but we need additional info on raw cart images */
if (size == 0x20000)
- state->m_granularity = 0x0200;
+ m_granularity = 0x0200;
else if (size == 0x80000)
- state->m_granularity = 0x0800;
+ m_granularity = 0x0800;
else
- state->m_granularity = 0x0400;
+ m_granularity = 0x0400;
}
if (image.fread( rom, size) != size)
@@ -2090,21 +2089,21 @@ static DEVICE_IMAGE_LOAD( lynx_cart )
{
size = image.get_software_region_length("rom");
if (size > 0xffff) // 64,128,256,512k cartridges
- state->m_granularity = size >> 8;
+ m_granularity = size >> 8;
else
- state->m_granularity = 0x400; // Homebrew roms not using all 256 banks (T-Tris) (none currently in softlist)
+ m_granularity = 0x400; // Homebrew roms not using all 256 banks (T-Tris) (none currently in softlist)
memcpy(rom, image.get_software_region("rom"), size);
const char *rotate = image.get_feature("rotation");
- state->m_rotate = 0;
+ m_rotate = 0;
if (rotate)
{
if(strcmp(rotate, "RIGHT") == 0) {
- state->m_rotate = 1;
+ m_rotate = 1;
}
else if (strcmp(rotate, "LEFT") == 0) {
- state->m_rotate = 2;
+ m_rotate = 2;
}
}
@@ -2118,7 +2117,7 @@ MACHINE_CONFIG_FRAGMENT(lynx_cartslot)
MCFG_CARTSLOT_EXTENSION_LIST("lnx,lyx")
MCFG_CARTSLOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("lynx_cart")
- MCFG_CARTSLOT_LOAD(lynx_cart)
+ MCFG_CARTSLOT_LOAD(lynx_state, lynx_cart)
MCFG_CARTSLOT_PARTIALHASH(lynx_partialhash)
/* Software lists */
diff --git a/src/mess/machine/msx.c b/src/mess/machine/msx.c
index d2ce4c12e57..d261a584051 100644
--- a/src/mess/machine/msx.c
+++ b/src/mess/machine/msx.c
@@ -69,9 +69,8 @@ static int msx_probe_type (UINT8* pmem, int size)
return (asc8 > asc16) ? 4 : 5;
}
-DEVICE_IMAGE_LOAD (msx_cart)
+DEVICE_IMAGE_LOAD_MEMBER(msx_state,msx_cart)
{
- msx_state *state = image.device().machine().driver_data<msx_state>();
int size;
int size_aligned;
UINT8 *mem;
@@ -333,15 +332,14 @@ DEVICE_IMAGE_LOAD (msx_cart)
if (msx_slot_list[type].loadsram)
msx_slot_list[type].loadsram (image.device().machine(), st);
- state->m_cart_state[id] = st;
+ m_cart_state[id] = st;
msx_memory_set_carts (image.device().machine());
return IMAGE_INIT_PASS;
}
-DEVICE_IMAGE_UNLOAD (msx_cart)
+DEVICE_IMAGE_UNLOAD_MEMBER(msx_state, msx_cart)
{
- msx_state *state = image.device().machine().driver_data<msx_state>();
int id = -1;
if (strcmp(image.device().tag(),":cart1")==0)
@@ -356,8 +354,8 @@ DEVICE_IMAGE_UNLOAD (msx_cart)
return;
}
- if (msx_slot_list[state->m_cart_state[id]->m_type].savesram)
- msx_slot_list[state->m_cart_state[id]->m_type].savesram (image.device().machine(), state->m_cart_state[id]);
+ if (msx_slot_list[m_cart_state[id]->m_type].savesram)
+ msx_slot_list[m_cart_state[id]->m_type].savesram (machine(), m_cart_state[id]);
}
void msx_vdp_interrupt(device_t *, v99x8_device &device, int i)
diff --git a/src/mess/machine/nascom1.c b/src/mess/machine/nascom1.c
index 538a1be0540..c1ee779c07b 100644
--- a/src/mess/machine/nascom1.c
+++ b/src/mess/machine/nascom1.c
@@ -178,24 +178,22 @@ WRITE8_MEMBER(nascom1_state::nascom1_hd6402_so)
}
-DEVICE_IMAGE_LOAD( nascom1_cassette )
+DEVICE_IMAGE_LOAD_MEMBER( nascom1_state,nascom1_cassette )
{
- nascom1_state *state = image.device().machine().driver_data<nascom1_state>();
- state->m_tape_size = image.length();
- state->m_tape_image = (UINT8*)image.ptr();
- if (!state->m_tape_image)
+ m_tape_size = image.length();
+ m_tape_image = (UINT8*)image.ptr();
+ if (!m_tape_image)
return IMAGE_INIT_FAIL;
- state->m_tape_index = 0;
+ m_tape_index = 0;
return IMAGE_INIT_PASS;
}
-DEVICE_IMAGE_UNLOAD( nascom1_cassette )
+DEVICE_IMAGE_UNLOAD_MEMBER( nascom1_state,nascom1_cassette )
{
- nascom1_state *state = image.device().machine().driver_data<nascom1_state>();
- state->m_tape_image = NULL;
- state->m_tape_size = state->m_tape_index = 0;
+ m_tape_image = NULL;
+ m_tape_size = m_tape_index = 0;
}
diff --git a/src/mess/machine/nc.c b/src/mess/machine/nc.c
index 0f1a6f527db..2732be9bf10 100644
--- a/src/mess/machine/nc.c
+++ b/src/mess/machine/nc.c
@@ -89,31 +89,31 @@ static int nc_card_load(device_image_interface &image, unsigned char **ptr)
return 0;
}
-DEVICE_START( nc_pcmcia_card )
+
+DEVICE_IMAGE_START_MEMBER( nc_state, nc_pcmcia_card )
{
- nc_state *state = device->machine().driver_data<nc_state>();
/* card not present */
- nc_set_card_present_state(device->machine(), 0);
+ nc_set_card_present_state(machine(), 0);
/* card ram NULL */
- state->m_card_ram = NULL;
- state->m_card_size = 0;
+ m_card_ram = NULL;
+ m_card_size = 0;
}
+
/* load pcmcia card */
-DEVICE_IMAGE_LOAD( nc_pcmcia_card )
+DEVICE_IMAGE_LOAD_MEMBER( nc_state, nc_pcmcia_card )
{
- nc_state *state = image.device().machine().driver_data<nc_state>();
/* filename specified */
/* attempt to load file */
- if (nc_card_load(image, &state->m_card_ram))
+ if (nc_card_load(image, &m_card_ram))
{
- if (state->m_card_ram!=NULL)
+ if (m_card_ram!=NULL)
{
/* card present! */
- if (state->m_membank_card_ram_mask!=0)
+ if (m_membank_card_ram_mask!=0)
{
- nc_set_card_present_state(image.device().machine(), 1);
+ nc_set_card_present_state(machine(), 1);
}
return IMAGE_INIT_PASS;
}
@@ -123,20 +123,20 @@ DEVICE_IMAGE_LOAD( nc_pcmcia_card )
return IMAGE_INIT_FAIL;
}
-DEVICE_IMAGE_UNLOAD( nc_pcmcia_card )
+
+DEVICE_IMAGE_UNLOAD_MEMBER( nc_state, nc_pcmcia_card )
{
- nc_state *state = image.device().machine().driver_data<nc_state>();
/* save card data if there is any */
nc_card_save(image);
/* free ram allocated to card */
- if (state->m_card_ram!=NULL)
+ if (m_card_ram!=NULL)
{
- free(state->m_card_ram);
- state->m_card_ram = NULL;
+ free(m_card_ram);
+ m_card_ram = NULL;
}
- state->m_card_size = 0;
+ m_card_size = 0;
/* set card not present state */
- nc_set_card_present_state(image.device().machine(), 0);
+ nc_set_card_present_state(machine(), 0);
}
diff --git a/src/mess/machine/nes.c b/src/mess/machine/nes.c
index c65ad18ad98..605784c6b7f 100644
--- a/src/mess/machine/nes.c
+++ b/src/mess/machine/nes.c
@@ -716,7 +716,7 @@ static int nes_cart_get_line( const char *feature )
return nes_line->line;
}
-DEVICE_IMAGE_LOAD( nes_cart )
+DEVICE_IMAGE_LOAD_MEMBER( nes_state, nes_cart )
{
nes_state *state = image.device().machine().driver_data<nes_state>();
state->m_pcb_id = NO_BOARD; // initialization
diff --git a/src/mess/machine/pc.c b/src/mess/machine/pc.c
index bbebbcd848b..f18ea9dd278 100644
--- a/src/mess/machine/pc.c
+++ b/src/mess/machine/pc.c
@@ -1578,7 +1578,7 @@ MACHINE_RESET_MEMBER(pc_state,pcjr)
}
-DEVICE_IMAGE_LOAD( pcjr_cartridge )
+DEVICE_IMAGE_LOAD_MEMBER( pc_state, pcjr_cartridge )
{
UINT32 address;
UINT32 size;
diff --git a/src/mess/machine/pce.c b/src/mess/machine/pce.c
index 8f506e195d0..eb8f9e67862 100644
--- a/src/mess/machine/pce.c
+++ b/src/mess/machine/pce.c
@@ -134,7 +134,7 @@ WRITE8_MEMBER(pce_state::pce_cartridge_ram_w)
m_cartridge_ram[offset] = data;
}
-DEVICE_IMAGE_LOAD(pce_cart)
+DEVICE_IMAGE_LOAD_MEMBER(pce_state,pce_cart)
{
pce_state *state = image.device().machine().driver_data<pce_state>();
UINT32 size;
diff --git a/src/mess/machine/pokemini.c b/src/mess/machine/pokemini.c
index 0a0c6f60cac..6089e983732 100644
--- a/src/mess/machine/pokemini.c
+++ b/src/mess/machine/pokemini.c
@@ -1359,7 +1359,7 @@ READ8_MEMBER(pokemini_state::pokemini_hwreg_r)
return data;
}
-DEVICE_IMAGE_LOAD( pokemini_cart )
+DEVICE_IMAGE_LOAD_MEMBER( pokemini_state, pokemini_cart )
{
if (image.software_entry() == NULL)
{
diff --git a/src/mess/machine/sms.c b/src/mess/machine/sms.c
index 736589bd2e5..855f70da7e2 100644
--- a/src/mess/machine/sms.c
+++ b/src/mess/machine/sms.c
@@ -1554,34 +1554,33 @@ static int detect_lphaser_xoffset( running_machine &machine, UINT8 *rom )
}
-DEVICE_START( sms_cart )
+DEVICE_IMAGE_START_MEMBER( sms_state, sms_cart )
{
- sms_state *state = device->machine().driver_data<sms_state>();
int i;
for (i = 0; i < MAX_CARTRIDGES; i++)
{
- state->m_cartridge[i].ROM = NULL;
- state->m_cartridge[i].size = 0;
- state->m_cartridge[i].features = 0;
- state->m_cartridge[i].cartSRAM = NULL;
- state->m_cartridge[i].sram_save = 0;
- state->m_cartridge[i].cartRAM = NULL;
- state->m_cartridge[i].ram_size = 0;
- state->m_cartridge[i].ram_page = 0;
+ m_cartridge[i].ROM = NULL;
+ m_cartridge[i].size = 0;
+ m_cartridge[i].features = 0;
+ m_cartridge[i].cartSRAM = NULL;
+ m_cartridge[i].sram_save = 0;
+ m_cartridge[i].cartRAM = NULL;
+ m_cartridge[i].ram_size = 0;
+ m_cartridge[i].ram_page = 0;
}
- state->m_current_cartridge = 0;
+ m_current_cartridge = 0;
- state->m_bios_port = (IO_EXPANSION | IO_CARTRIDGE | IO_CARD);
- if (!state->m_is_gamegear && !state->m_has_bios)
+ m_bios_port = (IO_EXPANSION | IO_CARTRIDGE | IO_CARD);
+ if (!m_is_gamegear && !m_has_bios)
{
- state->m_bios_port &= ~(IO_CARTRIDGE);
- state->m_bios_port |= IO_BIOS_ROM;
+ m_bios_port &= ~(IO_CARTRIDGE);
+ m_bios_port |= IO_BIOS_ROM;
}
}
-DEVICE_IMAGE_LOAD( sms_cart )
+DEVICE_IMAGE_LOAD_MEMBER( sms_state, sms_cart )
{
running_machine &machine = image.device().machine();
sms_state *state = machine.driver_data<sms_state>();
diff --git a/src/mess/machine/snescart.c b/src/mess/machine/snescart.c
index b60bbe7edaf..f64a36fd82d 100644
--- a/src/mess/machine/snescart.c
+++ b/src/mess/machine/snescart.c
@@ -758,7 +758,7 @@ static void snes_cart_log_info( running_machine &machine, int total_blocks, int
logerror("WARNING: This cart type \"%s\" is not supported yet!\n", types[state->m_has_addon_chip]);
}
-static DEVICE_IMAGE_LOAD( snes_cart )
+DEVICE_IMAGE_LOAD_MEMBER( snes_state,snes_cart )
{
int supported_type = 1;
running_machine &machine = image.device().machine();
@@ -1144,7 +1144,7 @@ static DEVICE_IMAGE_LOAD( snes_cart )
return IMAGE_INIT_PASS;
}
-static DEVICE_IMAGE_LOAD( sufami_cart )
+DEVICE_IMAGE_LOAD_MEMBER( snes_state,sufami_cart )
{
running_machine &machine = image.device().machine();
snes_state *state = machine.driver_data<snes_state>();
@@ -1249,7 +1249,7 @@ static DEVICE_IMAGE_LOAD( sufami_cart )
return IMAGE_INIT_PASS;
}
-static DEVICE_IMAGE_LOAD( bsx_cart )
+DEVICE_IMAGE_LOAD_MEMBER( snes_state,bsx_cart )
{
running_machine &machine = image.device().machine();
snes_state *state = machine.driver_data<snes_state>();
@@ -1351,7 +1351,7 @@ static DEVICE_IMAGE_LOAD( bsx_cart )
return IMAGE_INIT_PASS;
}
-static DEVICE_IMAGE_LOAD( bsx2slot_cart )
+DEVICE_IMAGE_LOAD_MEMBER( snes_state,bsx2slot_cart )
{
running_machine &machine = image.device().machine();
snes_state *state = machine.driver_data<snes_state>();
@@ -1410,7 +1410,7 @@ MACHINE_CONFIG_FRAGMENT( snes_cartslot )
MCFG_CARTSLOT_EXTENSION_LIST("sfc,smc,fig,swc,bin")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("snes_cart")
- MCFG_CARTSLOT_LOAD(snes_cart)
+ MCFG_CARTSLOT_LOAD(snes_state,snes_cart)
MCFG_SOFTWARE_LIST_ADD("cart_list","snes")
MCFG_SOFTWARE_LIST_FILTER("cart_list","NTSC")
@@ -1421,7 +1421,7 @@ MACHINE_CONFIG_FRAGMENT( snesp_cartslot )
MCFG_CARTSLOT_EXTENSION_LIST("sfc,smc,fig,swc,bin")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("snes_cart")
- MCFG_CARTSLOT_LOAD(snes_cart)
+ MCFG_CARTSLOT_LOAD(snes_state,snes_cart)
MCFG_SOFTWARE_LIST_ADD("cart_list","snes")
MCFG_SOFTWARE_LIST_FILTER("cart_list","PAL")
@@ -1434,13 +1434,13 @@ MACHINE_CONFIG_FRAGMENT( sufami_cartslot )
MCFG_CARTSLOT_EXTENSION_LIST("st,sfc")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("sufami_cart")
- MCFG_CARTSLOT_LOAD(sufami_cart)
+ MCFG_CARTSLOT_LOAD(snes_state,sufami_cart)
MCFG_CARTSLOT_ADD("slot_b")
MCFG_CARTSLOT_EXTENSION_LIST("st,sfc")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("sufami_cart")
- MCFG_CARTSLOT_LOAD(sufami_cart)
+ MCFG_CARTSLOT_LOAD(snes_state,sufami_cart)
// MCFG_SOFTWARE_LIST_ADD("cart_list","snes")
MACHINE_CONFIG_END
@@ -1454,13 +1454,13 @@ MACHINE_CONFIG_FRAGMENT( bsx_cartslot )
MCFG_CARTSLOT_EXTENSION_LIST("sfc,smc,fig,swc,bin")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("snes_cart")
- MCFG_CARTSLOT_LOAD(bsx_cart)
+ MCFG_CARTSLOT_LOAD(snes_state,bsx_cart)
MCFG_CARTSLOT_ADD("slot2")
MCFG_CARTSLOT_EXTENSION_LIST("bs,sfc")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("bsx_cart")
- MCFG_CARTSLOT_LOAD(bsx2slot_cart)
+ MCFG_CARTSLOT_LOAD(snes_state,bsx2slot_cart)
// MCFG_SOFTWARE_LIST_ADD("cart_list","snes")
MACHINE_CONFIG_END
diff --git a/src/mess/machine/svi318.c b/src/mess/machine/svi318.c
index 9297efd9a1c..e68e7b4fc47 100644
--- a/src/mess/machine/svi318.c
+++ b/src/mess/machine/svi318.c
@@ -71,14 +71,13 @@ static int svi318_verify_cart (UINT8 magic[2])
return IMAGE_VERIFY_FAIL;
}
-DEVICE_START( svi318_cart )
+DEVICE_IMAGE_START_MEMBER( svi318_state, svi318_cart )
{
- svi318_state *state = device->machine().driver_data<svi318_state>();
- state->m_pcart = NULL;
- state->m_pcart_rom_size = 0;
+ m_pcart = NULL;
+ m_pcart_rom_size = 0;
}
-DEVICE_IMAGE_LOAD( svi318_cart )
+DEVICE_IMAGE_LOAD_MEMBER( svi318_state, svi318_cart )
{
svi318_state *state = image.device().machine().driver_data<svi318_state>();
UINT8 *p = state->memregion("user1")->base();
@@ -112,7 +111,7 @@ DEVICE_IMAGE_LOAD( svi318_cart )
return IMAGE_INIT_PASS;
}
-DEVICE_IMAGE_UNLOAD( svi318_cart )
+DEVICE_IMAGE_UNLOAD_MEMBER( svi318_state, svi318_cart )
{
svi318_state *state = image.device().machine().driver_data<svi318_state>();
state->m_pcart = NULL;
diff --git a/src/mess/machine/thomson.c b/src/mess/machine/thomson.c
index 91f7ba6ec74..dec45337348 100644
--- a/src/mess/machine/thomson.c
+++ b/src/mess/machine/thomson.c
@@ -399,7 +399,7 @@ static UINT8 thom_cart_nb_banks; /* number of 16 KB banks (up to 4) */
static UINT8 thom_cart_bank; /* current bank */
-DEVICE_IMAGE_LOAD( to7_cartridge )
+DEVICE_IMAGE_LOAD_MEMBER( thomson_state, to7_cartridge )
{
int i,j;
UINT8* pos = image.device().machine().root_device().memregion("maincpu" )->base() + 0x10000;
@@ -1942,7 +1942,7 @@ static UINT8 mo5_reg_cart; /* 0xa7cb bank switch */
-DEVICE_IMAGE_LOAD( mo5_cartridge )
+DEVICE_IMAGE_LOAD_MEMBER( thomson_state, mo5_cartridge )
{
UINT8* pos = image.device().machine().root_device().memregion("maincpu")->base() + 0x10000;
UINT64 size = image.length();
diff --git a/src/mess/machine/vtech2.c b/src/mess/machine/vtech2.c
index ecc8aa5b50b..d8fbb9caa43 100644
--- a/src/mess/machine/vtech2.c
+++ b/src/mess/machine/vtech2.c
@@ -313,7 +313,7 @@ void vtech2_state::mwa_bank(int bank, int offs, int data)
}
}
-DEVICE_IMAGE_LOAD( laser_cart )
+DEVICE_IMAGE_LOAD_MEMBER( vtech2_state, laser_cart )
{
vtech2_state *state = image.device().machine().driver_data<vtech2_state>();
int size = 0;
@@ -332,7 +332,7 @@ DEVICE_IMAGE_LOAD( laser_cart )
return size > 0 ? IMAGE_INIT_PASS : IMAGE_INIT_FAIL;
}
-DEVICE_IMAGE_UNLOAD( laser_cart )
+DEVICE_IMAGE_UNLOAD_MEMBER( vtech2_state, laser_cart )
{
vtech2_state *state = image.device().machine().driver_data<vtech2_state>();
state->m_laser_bank_mask &= ~0xf000;
diff --git a/src/mess/machine/wswan.c b/src/mess/machine/wswan.c
index 4cdf25b4a00..df7159f8a08 100644
--- a/src/mess/machine/wswan.c
+++ b/src/mess/machine/wswan.c
@@ -1329,30 +1329,28 @@ static const char* wswan_determine_romsize( UINT8 data )
return wswan_romsize_str[ ROM_UNKNOWN ];
}
-DEVICE_START(wswan_cart)
+DEVICE_IMAGE_START_MEMBER(wswan_state,wswan_cart)
{
- wswan_state *state = device->machine().driver_data<wswan_state>();
/* Initialize EEPROM structure */
- memset( &state->m_eeprom, 0, sizeof( state->m_eeprom ) );
- state->m_eeprom.data = NULL;
- state->m_eeprom.page = NULL;
+ memset( &m_eeprom, 0, sizeof( m_eeprom ) );
+ m_eeprom.data = NULL;
+ m_eeprom.page = NULL;
/* Initialize RTC structure */
- state->m_rtc.present = 0;
- state->m_rtc.index = 0;
- state->m_rtc.year = 0;
- state->m_rtc.month = 0;
- state->m_rtc.day = 0;
- state->m_rtc.day_of_week = 0;
- state->m_rtc.hour = 0;
- state->m_rtc.minute = 0;
- state->m_rtc.second = 0;
- state->m_rtc.setting = 0xFF;
+ m_rtc.present = 0;
+ m_rtc.index = 0;
+ m_rtc.year = 0;
+ m_rtc.month = 0;
+ m_rtc.day = 0;
+ m_rtc.day_of_week = 0;
+ m_rtc.hour = 0;
+ m_rtc.minute = 0;
+ m_rtc.second = 0;
+ m_rtc.setting = 0xFF;
}
-DEVICE_IMAGE_LOAD(wswan_cart)
+DEVICE_IMAGE_LOAD_MEMBER(wswan_state,wswan_cart)
{
- wswan_state *state = image.device().machine().driver_data<wswan_state>();
UINT32 ii, size;
const char *sram_str;
@@ -1361,17 +1359,17 @@ DEVICE_IMAGE_LOAD(wswan_cart)
else
size = image.get_software_region_length("rom");
- state->m_ws_ram = (UINT8*) state->m_maincpu->space(AS_PROGRAM).get_read_ptr(0);
- memset(state->m_ws_ram, 0, 0xffff);
- state->m_ROMBanks = size / 65536;
+ m_ws_ram = (UINT8*) m_maincpu->space(AS_PROGRAM).get_read_ptr(0);
+ memset(m_ws_ram, 0, 0xffff);
+ m_ROMBanks = size / 65536;
- for (ii = 0; ii < state->m_ROMBanks; ii++)
+ for (ii = 0; ii < m_ROMBanks; ii++)
{
- if ((state->m_ROMMap[ii] = auto_alloc_array(image.device().machine(), UINT8, 0x10000)))
+ if ((m_ROMMap[ii] = auto_alloc_array(image.device().machine(), UINT8, 0x10000)))
{
if (image.software_entry() == NULL)
{
- if (image.fread( state->m_ROMMap[ii], 0x10000) != 0x10000)
+ if (image.fread( m_ROMMap[ii], 0x10000) != 0x10000)
{
image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Wrongly sized ROM");
image.message(" Wrongly sized ROM");
@@ -1380,7 +1378,7 @@ DEVICE_IMAGE_LOAD(wswan_cart)
}
}
else
- memcpy(state->m_ROMMap[ii], image.get_software_region("rom") + ii * 0x10000, 0x10000);
+ memcpy(m_ROMMap[ii], image.get_software_region("rom") + ii * 0x10000, 0x10000);
}
else
{
@@ -1391,41 +1389,41 @@ DEVICE_IMAGE_LOAD(wswan_cart)
}
}
- sram_str = wswan_determine_sram(state, state->m_ROMMap[state->m_ROMBanks - 1][0xfffb]);
+ sram_str = wswan_determine_sram(this, m_ROMMap[m_ROMBanks - 1][0xfffb]);
- state->m_rtc.present = state->m_ROMMap[state->m_ROMBanks - 1][0xfffd] ? 1 : 0;
- state->m_rotate = state->m_ROMMap[state->m_ROMBanks-1][0xfffc] & 0x01;
+ m_rtc.present = m_ROMMap[m_ROMBanks - 1][0xfffd] ? 1 : 0;
+ m_rotate = m_ROMMap[m_ROMBanks-1][0xfffc] & 0x01;
{
int sum = 0;
/* Spit out some info */
logerror("ROM DETAILS\n" );
- logerror("\tDeveloper ID: %X\n", state->m_ROMMap[state->m_ROMBanks - 1][0xfff6]);
- logerror("\tMinimum system: %s\n", state->m_ROMMap[state->m_ROMBanks - 1][0xfff7] ? "WonderSwan Color" : "WonderSwan");
- logerror("\tCart ID: %X\n", state->m_ROMMap[state->m_ROMBanks - 1][0xfff8]);
- logerror("\tROM size: %s\n", wswan_determine_romsize(state->m_ROMMap[state->m_ROMBanks - 1][0xfffa]));
+ logerror("\tDeveloper ID: %X\n", m_ROMMap[m_ROMBanks - 1][0xfff6]);
+ logerror("\tMinimum system: %s\n", m_ROMMap[m_ROMBanks - 1][0xfff7] ? "WonderSwan Color" : "WonderSwan");
+ logerror("\tCart ID: %X\n", m_ROMMap[m_ROMBanks - 1][0xfff8]);
+ logerror("\tROM size: %s\n", wswan_determine_romsize(m_ROMMap[m_ROMBanks - 1][0xfffa]));
logerror("\tSRAM size: %s\n", sram_str);
- logerror("\tFeatures: %X\n", state->m_ROMMap[state->m_ROMBanks - 1][0xfffc]);
- logerror("\tRTC: %s\n", state->m_ROMMap[state->m_ROMBanks - 1][0xfffd] ? "yes" : "no");
- for (ii = 0; ii < state->m_ROMBanks; ii++)
+ logerror("\tFeatures: %X\n", m_ROMMap[m_ROMBanks - 1][0xfffc]);
+ logerror("\tRTC: %s\n", m_ROMMap[m_ROMBanks - 1][0xfffd] ? "yes" : "no");
+ for (ii = 0; ii < m_ROMBanks; ii++)
{
int count;
for (count = 0; count < 0x10000; count++)
{
- sum += state->m_ROMMap[ii][count];
+ sum += m_ROMMap[ii][count];
}
}
- sum -= state->m_ROMMap[state->m_ROMBanks - 1][0xffff];
- sum -= state->m_ROMMap[state->m_ROMBanks - 1][0xfffe];
+ sum -= m_ROMMap[m_ROMBanks - 1][0xffff];
+ sum -= m_ROMMap[m_ROMBanks - 1][0xfffe];
sum &= 0xffff;
- logerror("\tChecksum: %X%X (calculated: %04X)\n", state->m_ROMMap[state->m_ROMBanks - 1][0xffff], state->m_ROMMap[state->m_ROMBanks - 1][0xfffe], sum);
+ logerror("\tChecksum: %X%X (calculated: %04X)\n", m_ROMMap[m_ROMBanks - 1][0xffff], m_ROMMap[m_ROMBanks - 1][0xfffe], sum);
}
- if (state->m_eeprom.size != 0)
+ if (m_eeprom.size != 0)
{
- state->m_eeprom.data = auto_alloc_array(image.device().machine(), UINT8, state->m_eeprom.size);
- image.battery_load(state->m_eeprom.data, state->m_eeprom.size, 0x00);
- state->m_eeprom.page = state->m_eeprom.data;
+ m_eeprom.data = auto_alloc_array(image.device().machine(), UINT8, m_eeprom.size);
+ image.battery_load(m_eeprom.data, m_eeprom.size, 0x00);
+ m_eeprom.page = m_eeprom.data;
}
if (image.software_entry() == NULL)