(MESS) unified some functions for generic socket / cart and

converted a few more drivers to use the new code instead of
old cartslot. nw.
This commit is contained in:
Fabio Priuli 2014-09-18 20:36:02 +00:00
parent 739cfa61b0
commit f7e216c3b9
10 changed files with 97 additions and 237 deletions

View File

@ -135,17 +135,10 @@ bool generic_slot_device::call_load()
}
else
{
UINT32 len = (software_entry() == NULL) ? length() : get_software_region_length("rom");
UINT8 *ROM;
rom_alloc(len, m_width);
ROM = get_rom_base();
if (software_entry() == NULL)
fread(ROM, len);
else
memcpy(ROM, get_software_region("rom"), len);
UINT32 len = common_get_size("rom");
rom_alloc(len, m_width);
common_load_rom(get_rom_base(), len, "rom");
m_empty = FALSE;
return IMAGE_INIT_PASS;
@ -188,6 +181,46 @@ void generic_slot_device::get_default_card_software(astring &result)
software_get_default_slot(result, m_default_card);
}
/**************************************************
Implementation
**************************************************/
/*-------------------------------------------------
common_get_size - it gets image file size both
for fullpath and for softlist
-------------------------------------------------*/
UINT32 generic_slot_device::common_get_size(const char *region)
{
// if we are loading from softlist, you have to specify a region
assert((software_entry() != NULL) && !region);
return (software_entry() == NULL) ? length() : get_software_region_length(region);
}
/*-------------------------------------------------
common_load_rom - it loads from image file both
for fullpath and for softlist
-------------------------------------------------*/
void generic_slot_device::common_load_rom(UINT8 *ROM, UINT32 len, const char *region)
{
// basic sanity check
assert((ROM != NULL) && (len > 0));
// if we are loading from softlist, you have to specify a region
assert((software_entry() == NULL) || (region != NULL));
if (software_entry() == NULL)
fread(ROM, len);
else
memcpy(ROM, get_software_region(region), len);
}
/*-------------------------------------------------
read_rom
-------------------------------------------------*/
@ -225,7 +258,7 @@ READ8_MEMBER(generic_slot_device::read_ram)
}
/*-------------------------------------------------
write
write_ram
-------------------------------------------------*/
WRITE8_MEMBER(generic_slot_device::write_ram)

View File

@ -101,6 +101,8 @@ public:
virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry);
bool cart_mounted() { return !m_empty; }
UINT32 common_get_size(const char *region);
void common_load_rom(UINT8 *ROM, UINT32 len, const char *region);
virtual iodevice_t image_type() const { return IO_CARTSLOT; }
virtual bool is_readable() const { return 1; }

View File

@ -171,8 +171,11 @@ WRITE8_MEMBER(aquarius_state::scrambler_w)
READ8_MEMBER(aquarius_state::cartridge_r)
{
UINT8 *rom = m_rom->base() + 0xc000;
return rom[offset] ^ m_scrambler;
UINT8 data = 0;
if (m_cart->cart_mounted())
data = m_cart->read_rom(space, offset);
return data ^ m_scrambler;
}
@ -373,10 +376,7 @@ static MACHINE_CONFIG_START( aquarius, aquarius_state )
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
/* cartridge */
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_EXTENSION_LIST("bin")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("aquarius_cart")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_linear_slot, "aquarius_cart")
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
@ -402,9 +402,6 @@ ROM_START( aquarius )
ROM_SYSTEM_BIOS(1, "rev2", "Revision 2")
ROMX_LOAD("aq2.u2", 0x0000, 0x2000, CRC(a2d15bcf) SHA1(ca6ef55e9ead41453efbf5062d6a60285e9661a6), ROM_BIOS(2))
/* cartridge */
ROM_CART_LOAD("cart", 0xc000, 0x4000, ROM_MIRROR)
/* charrom */
ROM_REGION(0x800, "gfx1", 0)
ROM_LOAD("aq2.u5", 0x000, 0x800, CRC(e117f57c) SHA1(3588c0267c67dfbbda615bcf8dc3d3a5c5bd815a))

View File

@ -1228,7 +1228,7 @@ static ADDRESS_MAP_START( st_map, AS_PROGRAM, 16, st_state )
AM_RANGE(0x000008, 0x1fffff) AM_RAM
AM_RANGE(0x200000, 0x3fffff) AM_RAM
AM_RANGE(0x400000, 0xf9ffff) AM_READWRITE(berr_r, berr_w)
AM_RANGE(0xfa0000, 0xfbffff) AM_ROM AM_REGION("cart", 0)
//AM_RANGE(0xfa0000, 0xfbffff) // mapped by the cartslot
AM_RANGE(0xfc0000, 0xfeffff) AM_ROM AM_REGION(M68000_TAG, 0) AM_WRITE(berr_w)
AM_RANGE(0xff8000, 0xff8001) AM_READWRITE8(mmu_r, mmu_w, 0x00ff)
AM_RANGE(0xff8200, 0xff8203) AM_READWRITE8(shifter_base_r, shifter_base_w, 0x00ff)
@ -1272,7 +1272,7 @@ static ADDRESS_MAP_START( megast_map, AS_PROGRAM, 16, megast_state )
AM_RANGE(0x000000, 0x000007) AM_ROM AM_REGION(M68000_TAG, 0)
AM_RANGE(0x000008, 0x1fffff) AM_RAM
AM_RANGE(0x200000, 0x3fffff) AM_RAM
AM_RANGE(0xfa0000, 0xfbffff) AM_ROM AM_REGION("cart", 0)
//AM_RANGE(0xfa0000, 0xfbffff) // mapped by the cartslot
AM_RANGE(0xfc0000, 0xfeffff) AM_ROM AM_REGION(M68000_TAG, 0)
// AM_RANGE(0xff7f30, 0xff7f31) AM_READWRITE(blitter_dst_inc_y_r, blitter_dst_inc_y_w) // for TOS 1.02
AM_RANGE(0xff8000, 0xff8001) AM_READWRITE8(mmu_r, mmu_w, 0x00ff)
@ -1937,6 +1937,9 @@ void st_state::machine_start()
// configure RAM banking
configure_memory();
if (m_cart->cart_mounted())
m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
// allocate timers
if(m_mousex) {
m_mouse_timer = timer_alloc(TIMER_MOUSE_TICK);
@ -1995,6 +1998,9 @@ void ste_state::machine_start()
/* configure RAM banking */
configure_memory();
if (m_cart->cart_mounted())
m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
/* allocate timers */
m_dmasound_timer = timer_alloc(TIMER_DMASOUND_TICK);
m_microwire_timer = timer_alloc(TIMER_MICROWIRE_TICK);
@ -2037,6 +2043,9 @@ void stbook_state::machine_start()
break;
}
if (m_cart->cart_mounted())
m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart));
/* register for state saving */
ste_state::state_save();
@ -2133,10 +2142,8 @@ static MACHINE_CONFIG_START( st, st_state )
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(st_state, write_acia_clock))
// cartridge
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_EXTENSION_LIST("bin,rom")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("st_cart")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM16_WIDTH, generic_linear_slot, "st_cart")
MCFG_GENERIC_EXTENSIONS("bin,rom")
MCFG_SOFTWARE_LIST_ADD("cart_list", "st_cart")
// internal ram
@ -2224,10 +2231,8 @@ static MACHINE_CONFIG_START( megast, megast_state )
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(st_state, write_acia_clock))
// cartridge
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_EXTENSION_LIST("bin,rom")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("st_cart")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM16_WIDTH, generic_linear_slot, "st_cart")
MCFG_GENERIC_EXTENSIONS("bin,rom")
MCFG_SOFTWARE_LIST_ADD("cart_list", "st_cart")
// internal ram
@ -2322,10 +2327,8 @@ static MACHINE_CONFIG_START( ste, ste_state )
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(st_state, write_acia_clock))
// cartridge
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_EXTENSION_LIST("bin,rom")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("st_cart")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM16_WIDTH, generic_linear_slot, "st_cart")
MCFG_GENERIC_EXTENSIONS("bin,rom")
// MCFG_SOFTWARE_LIST_ADD("cart_list", "ste_cart")
// internal ram
@ -2428,10 +2431,8 @@ static MACHINE_CONFIG_START( stbook, stbook_state )
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(st_state, write_acia_clock))
// cartridge
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_EXTENSION_LIST("bin,rom")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("st_cart")
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM16_WIDTH, generic_linear_slot, "st_cart")
MCFG_GENERIC_EXTENSIONS("bin,rom")
MCFG_SOFTWARE_LIST_ADD("cart_list", "st_cart")
/* internal ram */
@ -2486,9 +2487,6 @@ ROM_START( st )
ROM_SYSTEM_BIOS( 3, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104.bin", 0x00000, 0x30000, BAD_DUMP CRC(90f4fbff) SHA1(2487f330b0895e5d88d580d4ecb24061125e88ad), ROM_BIOS(4) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2508,9 +2506,6 @@ ROM_START( st_uk )
ROM_SYSTEM_BIOS( 2, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104uk.bin", 0x00000, 0x30000, BAD_DUMP CRC(a50d1d43) SHA1(9526ef63b9cb1d2a7109e278547ae78a5c1db6c6), ROM_BIOS(3) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2537,9 +2532,6 @@ ROM_START( st_de )
ROMX_LOAD( "st 7c1 a2.u2", 0x20000, 0x08000, CRC(d0513329) SHA1(49855a3585e2f75b2af932dd4414ed64e6d9501f), ROM_SKIP(1) | ROM_BIOS(4) )
ROMX_LOAD( "st 7c1 b1.u5", 0x20001, 0x08000, CRC(c115cbc8) SHA1(2b52b81a1a4e0818d63f98ee4b25c30e2eba61cb), ROM_SKIP(1) | ROM_BIOS(4) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2566,9 +2558,6 @@ ROM_START( st_fr )
ROMX_LOAD( "c101656-001.u48", 0x20000, 0x08000, CRC(dbd93fb8) SHA1(cf9ec11e4bc2465490e7e6c981d9f61eae6cb359), ROM_SKIP(1) | ROM_BIOS(4) )
ROMX_LOAD( "c101659-001.u53", 0x20001, 0x08000, CRC(67c9785a) SHA1(917a17e9f83bee015c25b327780eebb11cb2c5a5), ROM_SKIP(1) | ROM_BIOS(4) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2584,9 +2573,6 @@ ROM_START( st_es )
ROM_SYSTEM_BIOS( 0, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104es.bin", 0x00000, 0x30000, BAD_DUMP CRC(f4e8ecd2) SHA1(df63f8ac09125d0877b55d5ba1282779b7f99c16), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2602,9 +2588,6 @@ ROM_START( st_nl )
ROM_SYSTEM_BIOS( 0, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104nl.bin", 0x00000, 0x30000, BAD_DUMP CRC(bb4370d4) SHA1(6de7c96b2d2e5c68778f4bce3eaf85a4e121f166), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2622,9 +2605,6 @@ ROM_START( st_se )
ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104se.bin", 0x00000, 0x30000, BAD_DUMP CRC(80ecfdce) SHA1(b7ad34d5cdfbe86ea74ae79eca11dce421a7bbfd), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2642,9 +2622,6 @@ ROM_START( st_sg )
ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104sg.bin", 0x00000, 0x30000, BAD_DUMP CRC(e58f0bdf) SHA1(aa40bf7203f02b2251b9e4850a1a73ff1c7da106), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2662,9 +2639,6 @@ ROM_START( megast )
ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104.bin", 0x00000, 0x30000, BAD_DUMP CRC(90f4fbff) SHA1(2487f330b0895e5d88d580d4ecb24061125e88ad), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2682,9 +2656,6 @@ ROM_START( megast_uk )
ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104uk.bin", 0x00000, 0x30000, BAD_DUMP CRC(a50d1d43) SHA1(9526ef63b9cb1d2a7109e278547ae78a5c1db6c6), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2702,9 +2673,6 @@ ROM_START( megast_de )
ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104de.bin", 0x00000, 0x30000, BAD_DUMP CRC(62b82b42) SHA1(5313733f91b083c6265d93674cb9d0b7efd02da8), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2722,9 +2690,6 @@ ROM_START( megast_fr )
ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104fr.bin", 0x00000, 0x30000, BAD_DUMP CRC(a305a404) SHA1(20dba880344b810cf63cec5066797c5a971db870), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2742,9 +2707,6 @@ ROM_START( megast_se )
ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104se.bin", 0x00000, 0x30000, BAD_DUMP CRC(80ecfdce) SHA1(b7ad34d5cdfbe86ea74ae79eca11dce421a7bbfd), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2762,9 +2724,6 @@ ROM_START( megast_sg )
ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104sg.bin", 0x00000, 0x30000, BAD_DUMP CRC(e58f0bdf) SHA1(aa40bf7203f02b2251b9e4850a1a73ff1c7da106), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2780,9 +2739,6 @@ ROM_START( stacy )
ROM_SYSTEM_BIOS( 0, "tos104", "TOS 1.04 (Rainbow TOS)" )
ROMX_LOAD( "tos104.bin", 0x00000, 0x30000, BAD_DUMP CRC(a50d1d43) SHA1(9526ef63b9cb1d2a7109e278547ae78a5c1db6c6), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2803,9 +2759,6 @@ ROM_START( ste )
ROM_SYSTEM_BIOS( 2, "tos206", "TOS 2.06 (ST/STE TOS)" )
ROMX_LOAD( "tos206.bin", 0x00000, 0x40000, BAD_DUMP CRC(3f2f840f) SHA1(ee58768bdfc602c9b14942ce5481e97dd24e7c83), ROM_BIOS(3) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2825,9 +2778,6 @@ ROM_START( ste_uk )
ROM_SYSTEM_BIOS( 2, "tos206", "TOS 2.06 (ST/STE TOS)" )
ROMX_LOAD( "tos206uk.bin", 0x00000, 0x40000, BAD_DUMP CRC(08538e39) SHA1(2400ea95f547d6ea754a99d05d8530c03f8b28e3), ROM_BIOS(3) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2847,9 +2797,6 @@ ROM_START( ste_de )
ROM_SYSTEM_BIOS( 2, "tos206", "TOS 2.06 (ST/STE TOS)" )
ROMX_LOAD( "tos206de.bin", 0x00000, 0x40000, BAD_DUMP CRC(143cd2ab) SHA1(d1da866560734289c4305f1028c36291d331d417), ROM_BIOS(3) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2865,9 +2812,6 @@ ROM_START( ste_es )
ROM_SYSTEM_BIOS( 0, "tos106", "TOS 1.06 (STE TOS, Revision 1)" )
ROMX_LOAD( "tos106es.bin", 0x00000, 0x40000, BAD_DUMP CRC(5cd2a540) SHA1(3a18f342c8288c0bc1879b7a209c73d5d57f7e81), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2887,9 +2831,6 @@ ROM_START( ste_fr )
ROM_SYSTEM_BIOS( 2, "tos206", "TOS 2.06 (ST/STE TOS)" )
ROMX_LOAD( "tos206fr.bin", 0x00000, 0x40000, BAD_DUMP CRC(e3a99ca7) SHA1(387da431e6e3dd2e0c4643207e67d06cf33618c3), ROM_BIOS(3) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2905,9 +2846,6 @@ ROM_START( ste_it )
ROM_SYSTEM_BIOS( 0, "tos106", "TOS 1.06 (STE TOS, Revision 1)" )
ROMX_LOAD( "tos106it.bin", 0x00000, 0x40000, BAD_DUMP CRC(d3a55216) SHA1(28dc74e5e0fa56b685bbe15f9837f52684fee9fd), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2925,9 +2863,6 @@ ROM_START( ste_se )
ROM_SYSTEM_BIOS( 1, "tos206", "TOS 2.06 (ST/STE TOS)" )
ROMX_LOAD( "tos206se.bin", 0x00000, 0x40000, BAD_DUMP CRC(be61906d) SHA1(ebdf5a4cf08471cd315a91683fcb24e0f029d451), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2943,9 +2878,6 @@ ROM_START( ste_sg )
ROM_SYSTEM_BIOS( 0, "tos206", "TOS 2.06 (ST/STE TOS)" )
ROMX_LOAD( "tos206sg.bin", 0x00000, 0x40000, BAD_DUMP CRC(8c4fe57d) SHA1(c7a9ae3162f020dcac0c2a46cf0c033f91b98644), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2963,9 +2895,6 @@ ROM_START( megaste )
ROM_SYSTEM_BIOS( 1, "tos206", "TOS 2.06 (ST/STE TOS)" )
ROMX_LOAD( "tos206.bin", 0x00000, 0x40000, BAD_DUMP CRC(3f2f840f) SHA1(ee58768bdfc602c9b14942ce5481e97dd24e7c83), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -2990,9 +2919,6 @@ ROM_START( megaste_uk )
ROMX_LOAD( "tos206uk.bin", 0x00000, 0x40000, BAD_DUMP CRC(08538e39) SHA1(2400ea95f547d6ea754a99d05d8530c03f8b28e3), ROM_BIOS(1) )
#endif
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3010,9 +2936,6 @@ ROM_START( megaste_fr )
ROM_SYSTEM_BIOS( 1, "tos206", "TOS 2.06 (ST/STE TOS)" )
ROMX_LOAD( "tos206fr.bin", 0x00000, 0x40000, BAD_DUMP CRC(e3a99ca7) SHA1(387da431e6e3dd2e0c4643207e67d06cf33618c3), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3030,9 +2953,6 @@ ROM_START( megaste_de )
ROM_SYSTEM_BIOS( 1, "tos206", "TOS 2.06 (ST/STE TOS)" )
ROMX_LOAD( "tos206de.bin", 0x00000, 0x40000, BAD_DUMP CRC(143cd2ab) SHA1(d1da866560734289c4305f1028c36291d331d417), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3048,9 +2968,6 @@ ROM_START( megaste_es )
ROM_SYSTEM_BIOS( 0, "tos205", "TOS 2.05 (Mega STE TOS)" )
ROMX_LOAD( "tos205es.bin", 0x00000, 0x40000, BAD_DUMP CRC(2a426206) SHA1(317715ad8de718b5acc7e27ecf1eb833c2017c91), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3066,9 +2983,6 @@ ROM_START( megaste_it )
ROM_SYSTEM_BIOS( 0, "tos205", "TOS 2.05 (Mega STE TOS)" )
ROMX_LOAD( "tos205it.bin", 0x00000, 0x40000, BAD_DUMP CRC(b28bf5a1) SHA1(8e0581b442384af69345738849cf440d72f6e6ab), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3086,9 +3000,6 @@ ROM_START( megaste_se )
ROM_SYSTEM_BIOS( 1, "tos206", "TOS 2.06 (ST/STE TOS)" )
ROMX_LOAD( "tos206se.bin", 0x00000, 0x40000, BAD_DUMP CRC(be61906d) SHA1(ebdf5a4cf08471cd315a91683fcb24e0f029d451), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3104,9 +3015,6 @@ ROM_START( stbook )
ROM_SYSTEM_BIOS( 0, "tos208", "TOS 2.08" )
ROMX_LOAD( "tos208.bin", 0x00000, 0x40000, NO_DUMP, ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, COP888_TAG, 0 )
ROM_LOAD( "cop888c0.u703", 0x0000, 0x1000, NO_DUMP )
ROM_END
@ -3122,9 +3030,6 @@ ROM_START( stpad )
ROM_REGION16_BE( 0x40000, M68000_TAG, 0 )
ROM_SYSTEM_BIOS( 0, "tos205", "TOS 2.05" )
ROMX_LOAD( "tos205.bin", 0x00000, 0x40000, NO_DUMP, ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_END
#endif
@ -3139,9 +3044,6 @@ ROM_START( tt030 )
ROM_SYSTEM_BIOS( 0, "tos306", "TOS 3.06 (TT TOS)" )
ROMX_LOAD( "tos306.bin", 0x00000, 0x80000, BAD_DUMP CRC(e65adbd7) SHA1(b15948786278e1f2abc4effbb6d40786620acbe8), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3157,9 +3059,6 @@ ROM_START( tt030_uk )
ROM_SYSTEM_BIOS( 0, "tos306", "TOS 3.06 (TT TOS)" )
ROMX_LOAD( "tos306uk.bin", 0x00000, 0x80000, BAD_DUMP CRC(75dda215) SHA1(6325bdfd83f1b4d3afddb2b470a19428ca79478b), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3175,9 +3074,6 @@ ROM_START( tt030_de )
ROM_SYSTEM_BIOS( 0, "tos306", "TOS 3.06 (TT TOS)" )
ROMX_LOAD( "tos306de.bin", 0x00000, 0x80000, BAD_DUMP CRC(4fcbb59d) SHA1(80af04499d1c3b8551fc4d72142ff02c2182e64a), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3193,9 +3089,6 @@ ROM_START( tt030_fr )
ROM_SYSTEM_BIOS( 0, "tos306", "TOS 3.06 (TT TOS)" )
ROMX_LOAD( "tos306fr.bin", 0x00000, 0x80000, BAD_DUMP CRC(1945511c) SHA1(6bb19874e1e97dba17215d4f84b992c224a81b95), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3211,9 +3104,6 @@ ROM_START( tt030_pl )
ROM_SYSTEM_BIOS( 0, "tos306", "TOS 3.06 (TT TOS)" )
ROMX_LOAD( "tos306pl.bin", 0x00000, 0x80000, BAD_DUMP CRC(4f2404bc) SHA1(d122b8ceb202b52754ff0d442b1c81f8b4de3436), ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3229,9 +3119,6 @@ ROM_START( fx1 )
ROM_SYSTEM_BIOS( 0, "tos207", "TOS 2.07" )
ROMX_LOAD( "tos207.bin", 0x00000, 0x40000, NO_DUMP, ROM_BIOS(1) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3263,9 +3150,6 @@ ROM_START( falcon30 )
ROMX_LOAD( "tos404.bin", 0x00000, 0x80000, BAD_DUMP CRC(028b561d) SHA1(27dcdb31b0951af99023b2fb8c370d8447ba6ebc), ROM_BIOS(3) )
#endif
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END
@ -3280,9 +3164,6 @@ ROM_START( falcon40 )
ROM_SYSTEM_BIOS( 0, "tos492", "TOS 4.92" )
ROMX_LOAD( "tos492.bin", 0x00000, 0x7d314, BAD_DUMP CRC(bc8e497f) SHA1(747a38042844a6b632dcd9a76d8525fccb5eb892), ROM_BIOS(2) )
ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 )
ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL )
ROM_REGION( 0x1000, HD6301V1_TAG, 0 )
ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) )
ROM_END

View File

@ -16,7 +16,8 @@
#include "video/tms9928a.h"
#include "machine/z80pio.h"
#include "cpu/z80/z80daisy.h"
#include "imagedev/cartslot.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
class bbcbc_state : public driver_device
@ -24,15 +25,15 @@ class bbcbc_state : public driver_device
public:
bbcbc_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
m_maincpu(*this, "maincpu"),
m_cart(*this, "cartslot")
{ }
required_device<cpu_device> m_maincpu;
required_device<generic_slot_device> m_cart;
virtual void machine_start();
virtual void machine_reset();
DECLARE_WRITE_LINE_MEMBER(tms_interrupt);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( bbcbc_cart );
};
@ -41,7 +42,7 @@ public:
static ADDRESS_MAP_START( bbcbc_prg, AS_PROGRAM, 8, bbcbc_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0xbfff) AM_ROM
//AM_RANGE(0x4000, 0xbfff) // mapped by the cartslot
AM_RANGE(0xe000, 0xe02f) AM_RAM
AM_RANGE(0xe030, 0xe030) AM_READ_PORT("LINE01")
AM_RANGE(0xe031, 0xe031) AM_READ_PORT("LINE02")
@ -115,32 +116,10 @@ static const z80_daisy_config bbcbc_daisy_chain[] =
};
DEVICE_IMAGE_LOAD_MEMBER( bbcbc_state, bbcbc_cart )
{
UINT8 *cart = memregion("maincpu" )->base() + 0x4000;
if ( image.software_entry() == NULL )
{
int size = image.length();
if ( image.fread(cart, size ) != size ) {
image.seterror( IMAGE_ERROR_UNSPECIFIED, "Unable to fully read from file" );
return IMAGE_INIT_FAIL;
}
}
else
{
UINT8 *reg = image.get_software_region( "rom" );
int reg_len = image.get_software_region_length( "rom" );
memcpy( cart, reg, MIN(reg_len, 0x8000) );
}
return IMAGE_INIT_PASS;
}
void bbcbc_state::machine_start()
{
if (m_cart->cart_mounted())
m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0xbfff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
}
void bbcbc_state::machine_reset()
@ -162,10 +141,7 @@ static MACHINE_CONFIG_START( bbcbc, bbcbc_state )
MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" )
MCFG_SCREEN_UPDATE_DEVICE( "tms9129", tms9928a_device, screen_update )
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_NOT_MANDATORY
MCFG_CARTSLOT_INTERFACE("bbcbc_cart")
MCFG_CARTSLOT_LOAD( bbcbc_state, bbcbc_cart )
MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "bbcbc_cart")
/* Software lists */
MCFG_SOFTWARE_LIST_ADD("cart_list","bbcbc")

View File

@ -360,13 +360,7 @@ void pv2000_state::machine_reset()
DEVICE_IMAGE_LOAD_MEMBER( pv2000_state, pv2000_cart )
{
UINT8 *cart;
UINT32 size;
if (image.software_entry() == NULL)
size = image.length();
else
size = image.get_software_region_length("rom");
UINT32 size = m_cart->common_get_size("rom");
if (size != 0x2000 && size != 0x4000)
{
@ -375,12 +369,7 @@ DEVICE_IMAGE_LOAD_MEMBER( pv2000_state, pv2000_cart )
}
m_cart->rom_alloc(size, 1);
cart = m_cart->get_rom_base();
if (image.software_entry() == NULL)
image.fread(cart, size);
else
memcpy(cart, image.get_software_region("rom"), size);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
return IMAGE_INIT_PASS;
}

View File

@ -416,14 +416,8 @@ void rx78_state::machine_reset()
DEVICE_IMAGE_LOAD_MEMBER( rx78_state, rx78_cart )
{
UINT8 *cart;
UINT32 size;
if (image.software_entry() == NULL)
size = image.length();
else
size = image.get_software_region_length("rom");
UINT32 size = m_cart->common_get_size("rom");
if (size != 0x2000 && size != 0x4000)
{
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
@ -431,12 +425,7 @@ DEVICE_IMAGE_LOAD_MEMBER( rx78_state, rx78_cart )
}
m_cart->rom_alloc(size, 1);
cart = m_cart->get_rom_base();
if (image.software_entry() == NULL)
image.fread(cart, size);
else
memcpy(cart, image.get_software_region("rom"), size);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
return IMAGE_INIT_PASS;
}

View File

@ -1753,27 +1753,16 @@ WRITE16_MEMBER( supracan_state::video_w )
DEVICE_IMAGE_LOAD_MEMBER( supracan_state, supracan_cart )
{
UINT8 *cart;
UINT32 size;
if (image.software_entry() == NULL)
size = image.length();
else
size = image.get_software_region_length("rom");
UINT32 size = m_cart->common_get_size("rom");
if (size > 0x400000)
{
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
return IMAGE_INIT_FAIL;
}
m_cart->rom_alloc(size, 1);
cart = m_cart->get_rom_base();
if (image.software_entry() == NULL)
image.fread(cart, size);
else
memcpy(cart, image.get_software_region("rom"), size);
m_cart->rom_alloc(size, 2);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
return IMAGE_INIT_PASS;
}

View File

@ -9,11 +9,12 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "imagedev/cartslot.h"
#include "imagedev/cassette.h"
#include "machine/ram.h"
#include "sound/ay8910.h"
#include "sound/speaker.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
class aquarius_state : public driver_device
{
@ -23,8 +24,8 @@ public:
m_maincpu(*this, "maincpu"),
m_cassette(*this, "cassette"),
m_speaker(*this, "speaker"),
m_cart(*this, "cartslot"),
m_ram(*this, RAM_TAG),
m_rom(*this, "maincpu"),
m_videoram(*this, "videoram"),
m_colorram(*this, "colorram"),
m_y0(*this, "Y0"),
@ -43,8 +44,8 @@ public:
required_device<cpu_device> m_maincpu;
required_device<cassette_image_device> m_cassette;
required_device<speaker_sound_device> m_speaker;
required_device<generic_slot_device> m_cart;
required_device<ram_device> m_ram;
required_memory_region m_rom;
required_shared_ptr<UINT8> m_videoram;
required_shared_ptr<UINT8> m_colorram;
required_ioport m_y0;

View File

@ -8,10 +8,11 @@
#include "bus/rs232/rs232.h"
#include "cpu/m68000/m68000.h"
#include "cpu/m6800/m6800.h"
#include "imagedev/cartslot.h"
#include "machine/6850acia.h"
#include "machine/8530scc.h"
#include "bus/centronics/ctronics.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include "machine/mc68901.h"
#include "machine/ram.h"
#include "machine/rescap.h"
@ -87,6 +88,7 @@ public:
m_acia0(*this, MC6850_0_TAG),
m_acia1(*this, MC6850_1_TAG),
m_centronics(*this, CENTRONICS_TAG),
m_cart(*this, "cartslot"),
m_ram(*this, RAM_TAG),
m_rs232(*this, RS232_TAG),
m_p31(*this, "P31"),
@ -127,6 +129,7 @@ public:
required_device<acia6850_device> m_acia0;
required_device<acia6850_device> m_acia1;
required_device<centronics_device> m_centronics;
required_device<generic_slot_device> m_cart;
required_device<ram_device> m_ram;
required_device<rs232_port_device> m_rs232;
required_ioport m_p31;