From dcedf21a43c956451649d6f1e4c7b55588d4a8fa Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Sat, 11 Sep 2010 18:58:29 +0000 Subject: [PATCH] Converted intelfsh to a device, updated all users. Note CPS3 and G-NET testing is very limited due to lack of CHDs. The other drivers have been verified to varying extents. --- src/emu/machine/intelfsh.c | 567 ++++++++++++++++++--------------- src/emu/machine/intelfsh.h | 246 ++++++++++++++- src/mame/drivers/cps3.c | 150 +++++---- src/mame/drivers/firebeat.c | 79 ++--- src/mame/drivers/konamigv.c | 54 ++-- src/mame/drivers/ksys573.c | 603 +++++++++--------------------------- src/mame/drivers/naomi.c | 57 ++-- src/mame/drivers/seibuspi.c | 52 ++-- src/mame/drivers/taitogn.c | 74 ++--- 9 files changed, 943 insertions(+), 939 deletions(-) diff --git a/src/emu/machine/intelfsh.c b/src/emu/machine/intelfsh.c index a2c81c03f36..cb76a100899 100644 --- a/src/emu/machine/intelfsh.c +++ b/src/emu/machine/intelfsh.c @@ -14,6 +14,11 @@ #include "emu.h" #include "intelfsh.h" + +//************************************************************************** +// CONSTANTS +//************************************************************************** + enum { FM_NORMAL, // normal read/write @@ -32,185 +37,280 @@ enum FM_BYTEPROGRAM, }; -struct flash_chip + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +// 8-bit variants +DEFINE_TRIVIAL_DERIVED_DEVICE(intel_28f016s5_device_config, intelfsh8_device_config, intel_28f016s5_device, intelfsh8_device, "Sharp LH28F400 Flash", intelfsh_device_config::FLASH_SHARP_LH28F400) +DEFINE_TRIVIAL_DERIVED_DEVICE(fujitsu_29f016a_device_config, intelfsh8_device_config, fujitsu_29f016a_device, intelfsh8_device, "Fujitsu 29F016A Flash", intelfsh_device_config::FLASH_FUJITSU_29F016A) +DEFINE_TRIVIAL_DERIVED_DEVICE(sharp_lh28f016s_device_config, intelfsh8_device_config, sharp_lh28f016s_device, intelfsh8_device, "Sharp LH28F016S Flash", intelfsh_device_config::FLASH_SHARP_LH28F016S) +DEFINE_TRIVIAL_DERIVED_DEVICE(intel_e28f008sa_device_config, intelfsh8_device_config, intel_e28f008sa_device, intelfsh8_device, "Intel E28F008SA Flash", intelfsh_device_config::FLASH_INTEL_E28F008SA) +DEFINE_TRIVIAL_DERIVED_DEVICE(macronix_29l001mc_device_config, intelfsh8_device_config, macronix_29l001mc_device, intelfsh8_device, "Macronix 29L001MC Flash", intelfsh_device_config::FLASH_MACRONIX_29L001MC) +DEFINE_TRIVIAL_DERIVED_DEVICE(panasonic_mn63f805mnp_device_config, intelfsh8_device_config, panasonic_mn63f805mnp_device, intelfsh8_device, "Panasonic MN63F805MNP Flash", intelfsh_device_config::FLASH_PANASONIC_MN63F805MNP) +DEFINE_TRIVIAL_DERIVED_DEVICE(sanyo_le26fv10n1ts_device_config, intelfsh8_device_config, sanyo_le26fv10n1ts_device, intelfsh8_device, "Sanyo LE26FV10N1TS Flash", intelfsh_device_config::FLASH_SANYO_LE26FV10N1TS) + +const device_type INTEL_28F016S5 = intel_28f016s5_device_config::static_alloc_device_config; +const device_type SHARP_LH28F016S = sharp_lh28f016s_device_config::static_alloc_device_config; +const device_type FUJITSU_29F016A = fujitsu_29f016a_device_config::static_alloc_device_config; +const device_type INTEL_E28F008SA = intel_e28f008sa_device_config::static_alloc_device_config; +const device_type MACRONIX_29L001MC = macronix_29l001mc_device_config::static_alloc_device_config; +const device_type PANASONIC_MN63F805MNP = panasonic_mn63f805mnp_device_config::static_alloc_device_config; +const device_type SANYO_LE26FV10N1TS = sanyo_le26fv10n1ts_device_config::static_alloc_device_config; + + +// 16-bit variants +DEFINE_TRIVIAL_DERIVED_DEVICE(sharp_lh28f400_device_config, intelfsh16_device_config, sharp_lh28f400_device, intelfsh16_device, "Sharp LH28F400 Flash", intelfsh_device_config::FLASH_SHARP_LH28F400) +DEFINE_TRIVIAL_DERIVED_DEVICE(intel_te28f160_device_config, intelfsh16_device_config, intel_te28f160_device, intelfsh16_device, "Intel TE28F160 Flash", intelfsh_device_config::FLASH_INTEL_TE28F160) +DEFINE_TRIVIAL_DERIVED_DEVICE(intel_e28f400_device_config, intelfsh16_device_config, intel_e28f400_device, intelfsh16_device, "Intel E28F400 Flash", intelfsh_device_config::FLASH_INTEL_E28F400) +DEFINE_TRIVIAL_DERIVED_DEVICE(sharp_unk128mbit_device_config, intelfsh16_device_config, sharp_unk128mbit_device, intelfsh16_device, "Sharp Unknown 128Mb Flash", intelfsh_device_config::FLASH_SHARP_UNK128MBIT) + +const device_type SHARP_LH28F400 = sharp_lh28f400_device_config::static_alloc_device_config; +const device_type INTEL_TE28F160 = intel_te28f160_device_config::static_alloc_device_config; +const device_type INTEL_E28F400 = intel_e28f400_device_config::static_alloc_device_config; +const device_type SHARP_UNK128MBIT = sharp_unk128mbit_device_config::static_alloc_device_config; + + + +//************************************************************************** +// DEVICE CONFIGURATION +//************************************************************************** + +//------------------------------------------------- +// intelfsh_device_config - constructor +//------------------------------------------------- + +intelfsh_device_config::intelfsh_device_config(const machine_config &mconfig, device_type type, const char *name, const char *tag, const device_config *owner, UINT32 clock, UINT32 variant) + : device_config(mconfig, type, name, tag, owner, clock), + device_config_nvram_interface(mconfig, *this), + m_type(variant) { - int type; - int size; - int bits; - int status; - int erase_sector; - int sector_is_4k; - INT32 flash_mode; - INT32 flash_master_lock; - int device_id; - int maker_id; - emu_timer *timer; - void *flash_memory; -}; +} -static struct flash_chip chips[FLASH_CHIPS_MAX]; - -static TIMER_CALLBACK( erase_finished ) +intelfsh8_device_config::intelfsh8_device_config(const machine_config &mconfig, device_type type, const char *name, const char *tag, const device_config *owner, UINT32 clock, UINT32 variant) + : intelfsh_device_config(mconfig, type, name, tag, owner, clock, variant) { - struct flash_chip *c = (struct flash_chip *)ptr; +} - switch( c->flash_mode ) +intelfsh16_device_config::intelfsh16_device_config(const machine_config &mconfig, device_type type, const char *name, const char *tag, const device_config *owner, UINT32 clock, UINT32 variant) + : intelfsh_device_config(mconfig, type, name, tag, owner, clock, variant) +{ +} + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// intelfsh_device - constructor +//------------------------------------------------- + +intelfsh_device::intelfsh_device(running_machine &_machine, const intelfsh_device_config &config) + : device_t(_machine, config), + device_nvram_interface(_machine, config, *this), + m_config(config), + m_size(0), + m_bits(config.m_type >> 8), + m_status(0x80), + m_erase_sector(0), + m_sector_is_4k(false), + m_flash_mode(FM_NORMAL), + m_flash_master_lock(false), + m_device_id(0), + m_maker_id(0), + m_timer(NULL), + m_flash_memory(NULL) +{ + switch( config.m_type ) + { + case intelfsh_device_config::FLASH_INTEL_28F016S5: + case intelfsh_device_config::FLASH_SHARP_LH28F016S: + m_bits = 8; + m_size = 0x200000; + m_maker_id = 0x89; + m_device_id = 0xaa; + break; + case intelfsh_device_config::FLASH_SHARP_LH28F400: + case intelfsh_device_config::FLASH_INTEL_E28F400: + m_bits = 16; + m_size = 0x80000; + m_maker_id = 0xb0; + m_device_id = 0xed; + break; + case intelfsh_device_config::FLASH_FUJITSU_29F016A: + m_bits = 8; + m_size = 0x200000; + m_maker_id = 0x04; + m_device_id = 0xad; + break; + case intelfsh_device_config::FLASH_INTEL_E28F008SA: + m_bits = 8; + m_size = 0x100000; + m_maker_id = 0x89; + m_device_id = 0xa2; + break; + case intelfsh_device_config::FLASH_INTEL_TE28F160: + m_bits = 16; + m_size = 0x200000; + m_maker_id = 0xb0; + m_device_id = 0xd0; + break; + case intelfsh_device_config::FLASH_SHARP_UNK128MBIT: + m_bits = 16; + m_size = 0x800000; + m_maker_id = 0xb0; + m_device_id = 0xb0; + break; + case intelfsh_device_config::FLASH_MACRONIX_29L001MC: + m_bits = 8; + m_size = 0x20000; + m_maker_id = 0xc2; + m_device_id = 0x51; + break; + + case intelfsh_device_config::FLASH_PANASONIC_MN63F805MNP: + m_bits = 8; + m_size = 0x10000; + m_maker_id = 0x32; + m_device_id = 0x1b; + m_sector_is_4k = true; + break; + + case intelfsh_device_config::FLASH_SANYO_LE26FV10N1TS: + m_bits = 8; + m_size = 0x20000; + m_maker_id = 0x62; + m_device_id = 0x13; + m_sector_is_4k = true; + break; + } + m_flash_memory = auto_alloc_array( &m_machine, UINT8, m_size ); +} + +intelfsh8_device::intelfsh8_device(running_machine &_machine, const intelfsh_device_config &config) + : intelfsh_device(_machine, config) { } + +intelfsh16_device::intelfsh16_device(running_machine &_machine, const intelfsh_device_config &config) + : intelfsh_device(_machine, config) { } + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void intelfsh_device::device_start() +{ + m_timer = device_timer_alloc(*this); + + state_save_register_device_item( this, 0, m_status ); + state_save_register_device_item( this, 0, m_flash_mode ); + state_save_register_device_item( this, 0, m_flash_master_lock ); + state_save_register_memory( machine, name(), tag(), 0, "m_flash_memory", m_flash_memory, m_bits/8, m_size / (m_bits/8), __FILE__, __LINE__ ); +} + + +//------------------------------------------------- +// device_timer - handler timer events +//------------------------------------------------- + +void intelfsh_device::device_timer(emu_timer &timer, int param, void *ptr) +{ + switch( m_flash_mode ) { case FM_READSTATUS: - c->status = 0x80; + m_status = 0x80; break; case FM_ERASEAMD4: - c->flash_mode = FM_NORMAL; + m_flash_mode = FM_NORMAL; break; } } -void* intelflash_getmemptr(int chip) -{ - struct flash_chip *c; - if( chip >= FLASH_CHIPS_MAX ) - { - logerror( "intelflash_init: invalid chip %d\n", chip ); - return 0; - } - c = &chips[ chip ]; - return c->flash_memory; -} +//------------------------------------------------- +// nvram_default - called to initialize NVRAM to +// its default state +//------------------------------------------------- -void intelflash_init(running_machine *machine, int chip, int type, void *data) +void intelfsh_device::nvram_default() { - struct flash_chip *c; - if( chip >= FLASH_CHIPS_MAX ) + // region always wins + if (m_region != NULL) { - logerror( "intelflash_init: invalid chip %d\n", chip ); + UINT32 bytes = m_region->bytes(); + if (bytes > m_size) + bytes = m_size; + memcpy(m_flash_memory, *m_region, bytes); return; } - c = &chips[ chip ]; - c->type = type; - c->sector_is_4k = 0; - switch( c->type ) - { - case FLASH_INTEL_28F016S5: - case FLASH_SHARP_LH28F016S: - c->bits = 8; - c->size = 0x200000; - c->maker_id = 0x89; - c->device_id = 0xaa; - break; - case FLASH_SHARP_LH28F400: - case FLASH_INTEL_E28F400: - c->bits = 16; - c->size = 0x80000; - c->maker_id = 0xb0; - c->device_id = 0xed; - break; - case FLASH_FUJITSU_29F016A: - c->bits = 8; - c->size = 0x200000; - c->maker_id = 0x04; - c->device_id = 0xad; - break; - case FLASH_INTEL_E28F008SA: - c->bits = 8; - c->size = 0x100000; - c->maker_id = 0x89; - c->device_id = 0xa2; - break; - case FLASH_INTEL_TE28F160: - c->bits = 16; - c->size = 0x200000; - c->maker_id = 0xb0; - c->device_id = 0xd0; - break; - case FLASH_SHARP_UNK128MBIT: - c->bits = 16; - c->size = 0x800000; - c->maker_id = 0xb0; - c->device_id = 0xb0; - break; - case FLASH_MACRONIX_29L001MC: - c->bits = 8; - c->size = 0x20000; - c->maker_id = 0xc2; - c->device_id = 0x51; - break; - - case FLASH_PANASONIC_MN63F805MNP: - c->bits = 8; - c->size = 0x10000; - c->maker_id = 0x32; - c->device_id = 0x1b; - c->sector_is_4k = 1; - break; - - case FLASH_SANYO_LE26FV10N1TS: - c->bits = 8; - c->size = 0x20000; - c->maker_id = 0x62; - c->device_id = 0x13; - c->sector_is_4k = 1; - break; - } - if( data == NULL ) - { - data = auto_alloc_array( machine, UINT8, c->size ); - memset( data, 0xff, c->size ); - } - - c->status = 0x80; - c->flash_mode = FM_NORMAL; - c->flash_master_lock = 0; - c->timer = timer_alloc(machine, erase_finished, c); - c->flash_memory = data; - - state_save_register_item( machine, "intelfsh", NULL, chip, c->status ); - state_save_register_item( machine, "intelfsh", NULL, chip, c->flash_mode ); - state_save_register_item( machine, "intelfsh", NULL, chip, c->flash_master_lock ); - state_save_register_memory( machine, "intelfsh", NULL, chip, "flash_memory", c->flash_memory, c->bits/8, c->size / (c->bits/8), __FILE__, __LINE__ ); + memset( m_flash_memory, 0xff, m_size ); } -UINT32 intelflash_read(int chip, UINT32 address) + +//------------------------------------------------- +// nvram_read - called to read NVRAM from the +// .nv file +//------------------------------------------------- + +void intelfsh_device::nvram_read(mame_file &file) +{ + mame_fread(&file, m_flash_memory, m_size); +} + + +//------------------------------------------------- +// nvram_write - called to write NVRAM to the +// .nv file +//------------------------------------------------- + +void intelfsh_device::nvram_write(mame_file &file) +{ + mame_fwrite(&file, m_flash_memory, m_size); +} + + +//------------------------------------------------- +// read_full - generic read, called by the +// bit-width-specific readers +//------------------------------------------------- + +UINT32 intelfsh_device::read_full(UINT32 address) { UINT32 data = 0; - struct flash_chip *c; - if( chip >= FLASH_CHIPS_MAX ) - { - logerror( "intelflash_read: invalid chip %d\n", chip ); - return 0; - } - c = &chips[ chip ]; - - switch( c->flash_mode ) + switch( m_flash_mode ) { default: case FM_NORMAL: - switch( c->bits ) + switch( m_bits ) { case 8: { - UINT8 *flash_memory = (UINT8 *)c->flash_memory; + UINT8 *flash_memory = (UINT8 *)m_flash_memory; data = flash_memory[ address ]; } break; case 16: { - UINT16 *flash_memory = (UINT16 *)c->flash_memory; + UINT16 *flash_memory = (UINT16 *)m_flash_memory; data = flash_memory[ address ]; } break; } break; case FM_READSTATUS: - data = c->status; + data = m_status; break; case FM_READAMDID3: switch (address) { - case 0: data = c->maker_id; break; - case 1: data = c->device_id; break; + case 0: data = m_maker_id; break; + case 1: data = m_device_id; break; case 2: data = 0; break; } break; @@ -218,16 +318,16 @@ UINT32 intelflash_read(int chip, UINT32 address) switch (address) { case 0: // maker ID - data = c->maker_id; + data = m_maker_id; break; case 1: // chip ID - data = c->device_id; + data = m_device_id; break; case 2: // block lock config data = 0; // we don't support this yet break; case 3: // master lock config - if (c->flash_master_lock) + if (m_flash_master_lock) { data = 1; } @@ -240,19 +340,19 @@ UINT32 intelflash_read(int chip, UINT32 address) break; case FM_ERASEAMD4: // reads outside of the erasing sector return normal data - if ((address < c->erase_sector) || (address >= c->erase_sector+(64*1024))) + if ((address < m_erase_sector) || (address >= m_erase_sector+(64*1024))) { - switch( c->bits ) + switch( m_bits ) { case 8: { - UINT8 *flash_memory = (UINT8 *)c->flash_memory; + UINT8 *flash_memory = (UINT8 *)m_flash_memory; data = flash_memory[ address ]; } break; case 16: { - UINT16 *flash_memory = (UINT16 *)c->flash_memory; + UINT16 *flash_memory = (UINT16 *)m_flash_memory; data = flash_memory[ address ]; } break; @@ -260,8 +360,8 @@ UINT32 intelflash_read(int chip, UINT32 address) } else { - c->status ^= ( 1 << 6 ) | ( 1 << 2 ); - data = c->status; + m_status ^= ( 1 << 6 ) | ( 1 << 2 ); + data = m_status; } break; } @@ -271,19 +371,17 @@ UINT32 intelflash_read(int chip, UINT32 address) return data; } -void intelflash_write(int chip, UINT32 address, UINT32 data) -{ - struct flash_chip *c; - if( chip >= FLASH_CHIPS_MAX ) - { - logerror( "intelflash_write: invalid chip %d\n", chip ); - return; - } - c = &chips[ chip ]; +//------------------------------------------------- +// write_full - generic write, called by the +// bit-width-specific writers +//------------------------------------------------- + +void intelfsh_device::write_full(UINT32 address, UINT32 data) +{ // logerror( "intelflash_write( %d, %08x, %08x )\n", chip, address, data ); - switch( c->flash_mode ) + switch( m_flash_mode ) { case FM_NORMAL: case FM_READSTATUS: @@ -293,32 +391,32 @@ void intelflash_write(int chip, UINT32 address, UINT32 data) { case 0xf0: case 0xff: // reset chip mode - c->flash_mode = FM_NORMAL; + m_flash_mode = FM_NORMAL; break; case 0x90: // read ID - c->flash_mode = FM_READID; + m_flash_mode = FM_READID; break; case 0x40: case 0x10: // program - c->flash_mode = FM_WRITEPART1; + m_flash_mode = FM_WRITEPART1; break; case 0x50: // clear status reg - c->status = 0x80; - c->flash_mode = FM_READSTATUS; + m_status = 0x80; + m_flash_mode = FM_READSTATUS; break; case 0x20: // block erase - c->flash_mode = FM_CLEARPART1; + m_flash_mode = FM_CLEARPART1; break; case 0x60: // set master lock - c->flash_mode = FM_SETMASTER; + m_flash_mode = FM_SETMASTER; break; case 0x70: // read status - c->flash_mode = FM_READSTATUS; + m_flash_mode = FM_READSTATUS; break; case 0xaa: // AMD ID select part 1 if( ( address & 0xfff ) == 0x555 ) { - c->flash_mode = FM_READAMDID1; + m_flash_mode = FM_READAMDID1; } break; default: @@ -329,61 +427,61 @@ void intelflash_write(int chip, UINT32 address, UINT32 data) case FM_READAMDID1: if( ( address & 0xffff ) == 0x2aa && ( data & 0xff ) == 0x55 ) { - c->flash_mode = FM_READAMDID2; + m_flash_mode = FM_READAMDID2; } else if( ( address & 0xffff ) == 0x2aaa && ( data & 0xff ) == 0x55 ) { - c->flash_mode = FM_READAMDID2; + m_flash_mode = FM_READAMDID2; } else { logerror( "unexpected %08x=%02x in FM_READAMDID1\n", address, data & 0xff ); - c->flash_mode = FM_NORMAL; + m_flash_mode = FM_NORMAL; } break; case FM_READAMDID2: if( ( address & 0xffff ) == 0x555 && ( data & 0xff ) == 0x90 ) { - c->flash_mode = FM_READAMDID3; + m_flash_mode = FM_READAMDID3; } else if( ( address & 0xffff ) == 0x5555 && ( data & 0xff ) == 0x90 ) { - c->flash_mode = FM_READAMDID3; + m_flash_mode = FM_READAMDID3; } else if( ( address & 0xffff ) == 0x555 && ( data & 0xff ) == 0x80 ) { - c->flash_mode = FM_ERASEAMD1; + m_flash_mode = FM_ERASEAMD1; } else if( ( address & 0xffff ) == 0x5555 && ( data & 0xff ) == 0x80 ) { - c->flash_mode = FM_ERASEAMD1; + m_flash_mode = FM_ERASEAMD1; } else if( ( address & 0xffff ) == 0x555 && ( data & 0xff ) == 0xa0 ) { - c->flash_mode = FM_BYTEPROGRAM; + m_flash_mode = FM_BYTEPROGRAM; } else if( ( address & 0xffff ) == 0x5555 && ( data & 0xff ) == 0xa0 ) { - c->flash_mode = FM_BYTEPROGRAM; + m_flash_mode = FM_BYTEPROGRAM; } else if( ( address & 0xffff ) == 0x555 && ( data & 0xff ) == 0xf0 ) { - c->flash_mode = FM_NORMAL; + m_flash_mode = FM_NORMAL; } else if( ( address & 0xffff ) == 0x5555 && ( data & 0xff ) == 0xf0 ) { - c->flash_mode = FM_NORMAL; + m_flash_mode = FM_NORMAL; } else { logerror( "unexpected %08x=%02x in FM_READAMDID2\n", address, data & 0xff ); - c->flash_mode = FM_NORMAL; + m_flash_mode = FM_NORMAL; } break; case FM_ERASEAMD1: if( ( address & 0xfff ) == 0x555 && ( data & 0xff ) == 0xaa ) { - c->flash_mode = FM_ERASEAMD2; + m_flash_mode = FM_ERASEAMD2; } else { @@ -393,11 +491,11 @@ void intelflash_write(int chip, UINT32 address, UINT32 data) case FM_ERASEAMD2: if( ( address & 0xffff ) == 0x2aa && ( data & 0xff ) == 0x55 ) { - c->flash_mode = FM_ERASEAMD3; + m_flash_mode = FM_ERASEAMD3; } else if( ( address & 0xffff ) == 0x2aaa && ( data & 0xff ) == 0x55 ) { - c->flash_mode = FM_ERASEAMD3; + m_flash_mode = FM_ERASEAMD3; } else { @@ -408,57 +506,57 @@ void intelflash_write(int chip, UINT32 address, UINT32 data) if( ( address & 0xfff ) == 0x555 && ( data & 0xff ) == 0x10 ) { // chip erase - memset( c->flash_memory, 0xff, c->size); + memset( m_flash_memory, 0xff, m_size); - c->status = 1 << 3; - c->flash_mode = FM_ERASEAMD4; + m_status = 1 << 3; + m_flash_mode = FM_ERASEAMD4; - timer_adjust_oneshot( c->timer, ATTOTIME_IN_SEC( 17 ), 0 ); + timer_adjust_oneshot( m_timer, ATTOTIME_IN_SEC( 17 ), 0 ); } else if( ( data & 0xff ) == 0x30 ) { // sector erase // clear the 4k/64k block containing the current address to all 0xffs - switch( c->bits ) + switch( m_bits ) { case 8: { - UINT8 *flash_memory = (UINT8 *)c->flash_memory; - if (c->sector_is_4k) + UINT8 *flash_memory = (UINT8 *)m_flash_memory; + if (m_sector_is_4k) { memset( &flash_memory[ address & ~0xfff ], 0xff, 4 * 1024 ); - c->erase_sector = address & ~0xfff; - timer_adjust_oneshot( c->timer, ATTOTIME_IN_MSEC( 125 ), 0 ); + m_erase_sector = address & ~0xfff; + timer_adjust_oneshot( m_timer, ATTOTIME_IN_MSEC( 125 ), 0 ); } else { memset( &flash_memory[ address & ~0xffff ], 0xff, 64 * 1024 ); - c->erase_sector = address & ~0xffff; - timer_adjust_oneshot( c->timer, ATTOTIME_IN_SEC( 1 ), 0 ); + m_erase_sector = address & ~0xffff; + timer_adjust_oneshot( m_timer, ATTOTIME_IN_SEC( 1 ), 0 ); } } break; case 16: { - UINT16 *flash_memory = (UINT16 *)c->flash_memory; - if (c->sector_is_4k) + UINT16 *flash_memory = (UINT16 *)m_flash_memory; + if (m_sector_is_4k) { memset( &flash_memory[ address & ~0x7ff ], 0xff, 4 * 1024 ); - c->erase_sector = address & ~0x7ff; - timer_adjust_oneshot( c->timer, ATTOTIME_IN_MSEC( 125 ), 0 ); + m_erase_sector = address & ~0x7ff; + timer_adjust_oneshot( m_timer, ATTOTIME_IN_MSEC( 125 ), 0 ); } else { memset( &flash_memory[ address & ~0x7fff ], 0xff, 64 * 1024 ); - c->erase_sector = address & ~0x7fff; - timer_adjust_oneshot( c->timer, ATTOTIME_IN_SEC( 1 ), 0 ); + m_erase_sector = address & ~0x7fff; + timer_adjust_oneshot( m_timer, ATTOTIME_IN_SEC( 1 ), 0 ); } } break; } - c->status = 1 << 3; - c->flash_mode = FM_ERASEAMD4; + m_status = 1 << 3; + m_flash_mode = FM_ERASEAMD4; } else { @@ -466,68 +564,68 @@ void intelflash_write(int chip, UINT32 address, UINT32 data) } break; case FM_BYTEPROGRAM: - switch( c->bits ) + switch( m_bits ) { case 8: { - UINT8 *flash_memory = (UINT8 *)c->flash_memory; + UINT8 *flash_memory = (UINT8 *)m_flash_memory; flash_memory[ address ] = data; } break; default: - logerror( "FM_BYTEPROGRAM not supported when c->bits == %d\n", c->bits ); + logerror( "FM_BYTEPROGRAM not supported when m_bits == %d\n", m_bits ); break; } - c->flash_mode = FM_NORMAL; + m_flash_mode = FM_NORMAL; break; case FM_WRITEPART1: - switch( c->bits ) + switch( m_bits ) { case 8: { - UINT8 *flash_memory = (UINT8 *)c->flash_memory; + UINT8 *flash_memory = (UINT8 *)m_flash_memory; flash_memory[ address ] = data; } break; case 16: { - UINT16 *flash_memory = (UINT16 *)c->flash_memory; + UINT16 *flash_memory = (UINT16 *)m_flash_memory; flash_memory[ address ] = data; } break; default: - logerror( "FM_WRITEPART1 not supported when c->bits == %d\n", c->bits ); + logerror( "FM_WRITEPART1 not supported when m_bits == %d\n", m_bits ); break; } - c->status = 0x80; - c->flash_mode = FM_READSTATUS; + m_status = 0x80; + m_flash_mode = FM_READSTATUS; break; case FM_CLEARPART1: if( ( data & 0xff ) == 0xd0 ) { // clear the 64k block containing the current address to all 0xffs - switch( c->bits ) + switch( m_bits ) { case 8: { - UINT8 *flash_memory = (UINT8 *)c->flash_memory; + UINT8 *flash_memory = (UINT8 *)m_flash_memory; memset( &flash_memory[ address & ~0xffff ], 0xff, 64 * 1024 ); } break; case 16: { - UINT16 *flash_memory = (UINT16 *)c->flash_memory; + UINT16 *flash_memory = (UINT16 *)m_flash_memory; memset( &flash_memory[ address & ~0x7fff ], 0xff, 64 * 1024 ); } break; default: - logerror( "FM_CLEARPART1 not supported when c->bits == %d\n", c->bits ); + logerror( "FM_CLEARPART1 not supported when m_bits == %d\n", m_bits ); break; } - c->status = 0x00; - c->flash_mode = FM_READSTATUS; + m_status = 0x00; + m_flash_mode = FM_READSTATUS; - timer_adjust_oneshot( c->timer, ATTOTIME_IN_SEC( 1 ), 0 ); + timer_adjust_oneshot( m_timer, ATTOTIME_IN_SEC( 1 ), 0 ); break; } else @@ -539,53 +637,16 @@ void intelflash_write(int chip, UINT32 address, UINT32 data) switch( data & 0xff ) { case 0xf1: - c->flash_master_lock = 1; + m_flash_master_lock = true; break; case 0xd0: - c->flash_master_lock = 0; + m_flash_master_lock = false; break; default: logerror( "unexpected %08x=%02x in FM_SETMASTER:\n", address, data & 0xff ); break; } - c->flash_mode = FM_NORMAL; - break; - } -} - -void nvram_handler_intelflash(running_machine *machine, int chip,mame_file *file,int read_or_write) -{ - struct flash_chip *c; - if( chip >= FLASH_CHIPS_MAX ) - { - logerror( "intelflash_nvram: invalid chip %d\n", chip ); - return; - } - c = &chips[ chip ]; - - switch( c->bits ) - { - case 8: - if (read_or_write) - { - mame_fwrite( file, c->flash_memory, c->size ); - } - else if (file) - { - mame_fread( file, c->flash_memory, c->size ); - } - break; - case 16: - if (read_or_write) - { - /// TODO: endian conversion - mame_fwrite( file, c->flash_memory, c->size ); - } - else if (file) - { - mame_fread( file, c->flash_memory, c->size ); - /// TODO: endian conversion - } + m_flash_mode = FM_NORMAL; break; } } diff --git a/src/emu/machine/intelfsh.h b/src/emu/machine/intelfsh.h index ed8fc98d223..eceb3fd8efb 100644 --- a/src/emu/machine/intelfsh.h +++ b/src/emu/machine/intelfsh.h @@ -5,24 +5,236 @@ #ifndef _INTELFLASH_H_ #define _INTELFLASH_H_ -#define FLASH_CHIPS_MAX ( 56 ) -#define FLASH_INTEL_28F016S5 ( 0 ) -#define FLASH_SHARP_LH28F400 ( 1 ) -#define FLASH_FUJITSU_29F016A ( 2 ) -#define FLASH_INTEL_E28F008SA ( 3 ) -#define FLASH_INTEL_TE28F160 ( 4 ) -#define FLASH_SHARP_LH28F016S ( 5 ) -#define FLASH_INTEL_E28F400 ( 6 ) -#define FLASH_SHARP_UNK128MBIT ( 7 ) -#define FLASH_MACRONIX_29L001MC ( 8 ) -#define FLASH_PANASONIC_MN63F805MNP ( 9 ) -#define FLASH_SANYO_LE26FV10N1TS ( 10 ) +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MDRV_INTEL_28F016S5_ADD(_tag) \ + MDRV_DEVICE_ADD(_tag, INTEL_28F016S5, 0) + +#define MDRV_SHARP_LH28F016S_ADD(_tag) \ + MDRV_DEVICE_ADD(_tag, SHARP_LH28F016S, 0) + +#define MDRV_FUJITSU_29F016A_ADD(_tag) \ + MDRV_DEVICE_ADD(_tag, FUJITSU_29F016A, 0) + +#define MDRV_INTEL_E28F400_ADD(_tag) \ + MDRV_DEVICE_ADD(_tag, INTEL_E28F400, 0) + +#define MDRV_MACRONIX_29L001MC_ADD(_tag) \ + MDRV_DEVICE_ADD(_tag, MACRONIX_29L001MC, 0) + +#define MDRV_PANASONIC_MN63F805MNP_ADD(_tag) \ + MDRV_DEVICE_ADD(_tag, PANASONIC_MN63F805MNP, 0) + +#define MDRV_SANYO_LE26FV10N1TS_ADD(_tag) \ + MDRV_DEVICE_ADD(_tag, SANYO_LE26FV10N1TS, 0) + +#define MDRV_SHARP_LH28F400_ADD(_tag) \ + MDRV_DEVICE_ADD(_tag, SHARP_LH28F400, 0) + +#define MDRV_INTEL_E28F008SA_ADD(_tag) \ + MDRV_DEVICE_ADD(_tag, INTEL_E28F008SA, 0) + +#define MDRV_INTEL_TE28F160_ADD(_tag) \ + MDRV_DEVICE_ADD(_tag, INTEL_TE28F160, 0) + +#define MDRV_SHARP_UNK128MBIT_ADD(_tag) \ + MDRV_DEVICE_ADD(_tag, SHARP_UNK128MBIT, 0) + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class intelfsh_device; + + +// ======================> intelfsh_device_config + +class intelfsh_device_config : public device_config, + public device_config_nvram_interface +{ + friend class intelfsh_device; + +protected: + // constants + enum + { + // 8-bit variants + FLASH_INTEL_28F016S5 = 0x0800, + FLASH_FUJITSU_29F016A, + FLASH_SHARP_LH28F016S, + FLASH_INTEL_E28F400, + FLASH_MACRONIX_29L001MC, + FLASH_PANASONIC_MN63F805MNP, + FLASH_SANYO_LE26FV10N1TS, + + // 16-bit variants + FLASH_SHARP_LH28F400 = 0x1000, + FLASH_INTEL_E28F008SA, + FLASH_INTEL_TE28F160, + FLASH_SHARP_UNK128MBIT + }; + + // construction/destruction + intelfsh_device_config(const machine_config &mconfig, device_type type, const char *name, const char *tag, const device_config *owner, UINT32 clock, UINT32 variant); + + // internal state + UINT32 m_type; +}; + + +// ======================> intelfsh_device + +class intelfsh_device : public device_t, + public device_nvram_interface +{ + friend class intelfsh_device_config; + +protected: + // construction/destruction + intelfsh_device(running_machine &_machine, const intelfsh_device_config &config); + +public: + // helpers + void *memory() const { return m_flash_memory; } + +protected: + // device-level overrides + virtual void device_start(); + virtual void device_timer(emu_timer &timer, int param, void *ptr); + + // device_intelfsh_interface overrides + virtual void nvram_default(); + virtual void nvram_read(mame_file &file); + virtual void nvram_write(mame_file &file); + + // derived helpers + UINT32 read_full(UINT32 offset); + void write_full(UINT32 offset, UINT32 data); + + // internal state + const intelfsh_device_config & m_config; + + INT32 m_size; + UINT8 m_bits; + UINT8 m_status; + INT32 m_erase_sector; + bool m_sector_is_4k; + INT32 m_flash_mode; + bool m_flash_master_lock; + UINT8 m_device_id; + UINT8 m_maker_id; + emu_timer * m_timer; + void * m_flash_memory; +}; + + +// ======================> intelfsh8_device_config + +class intelfsh8_device_config : public intelfsh_device_config +{ + friend class intelfsh8_device; + +protected: + // construction/destruction + intelfsh8_device_config(const machine_config &mconfig, device_type type, const char *name, const char *tag, const device_config *owner, UINT32 clock, UINT32 variant); +}; + + +// ======================> intelfsh8_device + +class intelfsh8_device : public intelfsh_device +{ + friend class intelfsh8_device_config; + friend class intel_28f016s5_device_config; + friend class fujitsu_29f016a_device_config; + friend class sharp_lh28f016s_device_config; + friend class intel_e28f008sa_device_config; + friend class macronix_29l001mc_device_config; + friend class panasonic_mn63f805mnp_device_config; + friend class sanyo_le26fv10n1ts_device_config; + +protected: + // construction/destruction + intelfsh8_device(running_machine &_machine, const intelfsh_device_config &config); + +public: + // public interface + UINT8 read(offs_t offset) { return read_full(offset); } + void write(offs_t offset, UINT8 data) { write_full(offset, data); } +}; + + +// ======================> intelfsh16_device_config + +class intelfsh16_device_config : public intelfsh_device_config +{ + friend class intelfsh16_device; + +protected: + // construction/destruction + intelfsh16_device_config(const machine_config &mconfig, device_type type, const char *name, const char *tag, const device_config *owner, UINT32 clock, UINT32 variant); +}; + + +// ======================> intelfsh16_device + +class intelfsh16_device : public intelfsh_device +{ + friend class intelfsh16_device_config; + friend class sharp_lh28f400_device_config; + friend class intel_te28f160_device_config; + friend class intel_e28f400_device_config; + friend class sharp_unk128mbit_device_config; + +protected: + // construction/destruction + intelfsh16_device(running_machine &_machine, const intelfsh_device_config &config); + +public: + // public interface + UINT16 read(offs_t offset) { return read_full(offset); } + void write(offs_t offset, UINT16 data) { write_full(offset, data); } +}; + + +// ======================> trivial variants + +// 8-bit variants +DECLARE_TRIVIAL_DERIVED_DEVICE(intel_28f016s5_device_config, intelfsh8_device_config, intel_28f016s5_device, intelfsh8_device) +DECLARE_TRIVIAL_DERIVED_DEVICE(fujitsu_29f016a_device_config, intelfsh8_device_config, fujitsu_29f016a_device, intelfsh8_device) +DECLARE_TRIVIAL_DERIVED_DEVICE(sharp_lh28f016s_device_config, intelfsh8_device_config, sharp_lh28f016s_device, intelfsh8_device) +DECLARE_TRIVIAL_DERIVED_DEVICE(intel_e28f008sa_device_config, intelfsh8_device_config, intel_e28f008sa_device, intelfsh8_device) +DECLARE_TRIVIAL_DERIVED_DEVICE(macronix_29l001mc_device_config, intelfsh8_device_config, macronix_29l001mc_device, intelfsh8_device) +DECLARE_TRIVIAL_DERIVED_DEVICE(panasonic_mn63f805mnp_device_config, intelfsh8_device_config, panasonic_mn63f805mnp_device, intelfsh8_device) +DECLARE_TRIVIAL_DERIVED_DEVICE(sanyo_le26fv10n1ts_device_config, intelfsh8_device_config, sanyo_le26fv10n1ts_device, intelfsh8_device) + + +// 16-bit variants +DECLARE_TRIVIAL_DERIVED_DEVICE(sharp_lh28f400_device_config, intelfsh16_device_config, sharp_lh28f400_device, intelfsh16_device) +DECLARE_TRIVIAL_DERIVED_DEVICE(intel_te28f160_device_config, intelfsh16_device_config, intel_te28f160_device, intelfsh16_device) +DECLARE_TRIVIAL_DERIVED_DEVICE(intel_e28f400_device_config, intelfsh16_device_config, intel_e28f400_device, intelfsh16_device) +DECLARE_TRIVIAL_DERIVED_DEVICE(sharp_unk128mbit_device_config, intelfsh16_device_config, sharp_unk128mbit_device, intelfsh16_device) + + + +// device type definition +extern const device_type INTEL_28F016S5; +extern const device_type SHARP_LH28F016S; +extern const device_type FUJITSU_29F016A; +extern const device_type INTEL_E28F400; +extern const device_type MACRONIX_29L001MC; +extern const device_type PANASONIC_MN63F805MNP; +extern const device_type SANYO_LE26FV10N1TS; + +extern const device_type SHARP_LH28F400; +extern const device_type INTEL_E28F008SA; +extern const device_type INTEL_TE28F160; +extern const device_type SHARP_UNK128MBIT; -extern void intelflash_init( running_machine *machine, int chip, int type, void *data ); -extern UINT32 intelflash_read( int chip, UINT32 address ); -extern void intelflash_write( int chip, UINT32 address, UINT32 value ); -extern void nvram_handler_intelflash( running_machine *machine, int chip, mame_file *file, int read_or_write ); -extern void* intelflash_getmemptr(int chip); #endif diff --git a/src/mame/drivers/cps3.c b/src/mame/drivers/cps3.c index 193e07c27bf..cc1df7f0845 100644 --- a/src/mame/drivers/cps3.c +++ b/src/mame/drivers/cps3.c @@ -337,6 +337,8 @@ Notes: #define DMA_XOR(a) ((a) ^ NATIVE_ENDIAN_VALUE_LE_BE(1,2)) +static fujitsu_29f016a_device *flashrom[48]; + static UINT32* decrypted_bios; static UINT32* decrypted_gamerom; @@ -684,8 +686,6 @@ static void cps3_decrypt_bios(running_machine *machine) static DRIVER_INIT( cps3 ) { - int i; - // cache pointers to regions cps3_user4region = memory_region(machine,"user4"); cps3_user5region = memory_region(machine,"user5"); @@ -711,9 +711,9 @@ static DRIVER_INIT( cps3 ) main->set_direct_update_handler(direct_update_delegate_create_static(cps3_direct_handler, *machine)); // flash roms - - for (i=0;i<48;i++) - intelflash_init( machine, i, FLASH_FUJITSU_29F016A, NULL ); + astring tempstr; + for (int index = 0; index < 48; index++) + flashrom[index] = machine->device(tempstr.format("flash%d", index)); cps3_eeprom = auto_alloc_array(machine, UINT32, 0x400/4); } @@ -1363,22 +1363,22 @@ static READ32_HANDLER( cps3_gfxflash_r ) if (ACCESSING_BITS_24_31) // GFX Flash 1 { logerror("read GFX flash chip %d addr %02x\n", flash1-8, (offset<<1)); - result |= intelflash_read(flash1, (offset<<1) ) << 24; + result |= flashrom[flash1]->read( (offset<<1) ) << 24; } if (ACCESSING_BITS_16_23) // GFX Flash 2 { logerror("read GFX flash chip %d addr %02x\n", flash2-8, (offset<<1)); - result |= intelflash_read(flash2, (offset<<1) ) << 16; + result |= flashrom[flash2]->read( (offset<<1) ) << 16; } if (ACCESSING_BITS_8_15) // GFX Flash 1 { logerror("read GFX flash chip %d addr %02x\n", flash1-8, (offset<<1)+1); - result |= intelflash_read(flash1, (offset<<1)+0x1 ) << 8; + result |= flashrom[flash1]->read( (offset<<1)+0x1 ) << 8; } if (ACCESSING_BITS_0_7) // GFX Flash 2 { logerror("read GFX flash chip %d addr %02x\n", flash2-8, (offset<<1)+1); - result |= intelflash_read(flash2, (offset<<1)+0x1 ) << 0; + result |= flashrom[flash2]->read( (offset<<1)+0x1 ) << 0; } //printf("read GFX flash chips addr %02x returning %08x mem_mask %08x crambank %08x gfxbank %08x\n", offset*2, result,mem_mask, cram_bank, cram_gfxflash_bank ); @@ -1404,25 +1404,25 @@ static WRITE32_HANDLER( cps3_gfxflash_w ) { command = (data >> 24) & 0xff; logerror("write to GFX flash chip %d addr %02x cmd %02x\n", flash1-8, (offset<<1), command); - intelflash_write(flash1, (offset<<1), command); + flashrom[flash1]->write( (offset<<1), command); } if (ACCESSING_BITS_16_23) // GFX Flash 2 { command = (data >> 16) & 0xff; logerror("write to GFX flash chip %d addr %02x cmd %02x\n", flash2-8, (offset<<1), command); - intelflash_write(flash2, (offset<<1), command); + flashrom[flash2]->write( (offset<<1), command); } if (ACCESSING_BITS_8_15) // GFX Flash 1 { command = (data >> 8) & 0xff; logerror("write to GFX flash chip %d addr %02x cmd %02x\n", flash1-8, (offset<<1)+1, command); - intelflash_write(flash1, (offset<<1)+0x1, command); + flashrom[flash1]->write( (offset<<1)+0x1, command); } if (ACCESSING_BITS_0_7) // GFX Flash 2 { command = (data >> 0) & 0xff; //if ( ((offset<<1)+1) != 0x555) printf("write to GFX flash chip %d addr %02x cmd %02x\n", flash1-8, (offset<<1)+1, command); - intelflash_write(flash2, (offset<<1)+0x1, command); + flashrom[flash2]->write( (offset<<1)+0x1, command); } /* make a copy in the linear memory region we actually use for drawing etc. having it stored in interleaved flash roms isnt' very useful */ @@ -1430,8 +1430,8 @@ static WRITE32_HANDLER( cps3_gfxflash_w ) UINT32* romdata = (UINT32*)cps3_user5region; int real_offset = 0; UINT32 newdata; - UINT8* ptr1 = (UINT8*)intelflash_getmemptr(flash1); - UINT8* ptr2 = (UINT8*)intelflash_getmemptr(flash2); + UINT8* ptr1 = (UINT8*)flashrom[flash1]->memory(); + UINT8* ptr2 = (UINT8*)flashrom[flash2]->memory(); real_offset = ((cram_gfxflash_bank&0x3e) * 0x200000) + offset*4; @@ -1454,22 +1454,22 @@ static UINT32 cps3_flashmain_r(int base, UINT32 offset, UINT32 mem_mask) if (ACCESSING_BITS_24_31) // Flash 1 { // logerror("read flash chip %d addr %02x\n", base+0, offset*4 ); - result |= (intelflash_read(base+0, offset)<<24); + result |= (flashrom[base+0]->read(offset)<<24); } if (ACCESSING_BITS_16_23) // Flash 1 { // logerror("read flash chip %d addr %02x\n", base+1, offset*4 ); - result |= (intelflash_read(base+1, offset)<<16); + result |= (flashrom[base+1]->read(offset)<<16); } if (ACCESSING_BITS_8_15) // Flash 1 { // logerror("read flash chip %d addr %02x\n", base+2, offset*4 ); - result |= (intelflash_read(base+2, offset)<<8); + result |= (flashrom[base+2]->read(offset)<<8); } if (ACCESSING_BITS_0_7) // Flash 1 { // logerror("read flash chip %d addr %02x\n", base+3, offset*4 ); - result |= (intelflash_read(base+3, offset)<<0); + result |= (flashrom[base+3]->read(offset)<<0); } // if (base==4) logerror("read flash chips addr %02x returning %08x\n", offset*4, result ); @@ -1506,25 +1506,25 @@ static void cps3_flashmain_w(running_machine *machine, int base, UINT32 offset, { command = (data >> 24) & 0xff; logerror("write to flash chip %d addr %02x cmd %02x\n", base+0, offset, command); - intelflash_write(base+0, offset, command); + flashrom[base+0]->write(offset, command); } if (ACCESSING_BITS_16_23) // Flash 2 { command = (data >> 16) & 0xff; logerror("write to flash chip %d addr %02x cmd %02x\n", base+1, offset, command); - intelflash_write(base+1, offset, command); + flashrom[base+1]->write(offset, command); } if (ACCESSING_BITS_8_15) // Flash 2 { command = (data >> 8) & 0xff; logerror("write to flash chip %d addr %02x cmd %02x\n", base+2, offset, command); - intelflash_write(base+2, offset, command); + flashrom[base+2]->write(offset, command); } if (ACCESSING_BITS_0_7) // Flash 2 { command = (data >> 0) & 0xff; logerror("write to flash chip %d addr %02x cmd %02x\n", base+3, offset, command); - intelflash_write(base+3, offset, command); + flashrom[base+3]->write(offset, command); } /* copy data into regions to execute from */ @@ -1533,10 +1533,10 @@ static void cps3_flashmain_w(running_machine *machine, int base, UINT32 offset, UINT32* romdata2 = (UINT32*)decrypted_gamerom; int real_offset = 0; UINT32 newdata; - UINT8* ptr1 = (UINT8*)intelflash_getmemptr(base+0); - UINT8* ptr2 = (UINT8*)intelflash_getmemptr(base+1); - UINT8* ptr3 = (UINT8*)intelflash_getmemptr(base+2); - UINT8* ptr4 = (UINT8*)intelflash_getmemptr(base+3); + UINT8* ptr1 = (UINT8*)flashrom[base+0]->memory(); + UINT8* ptr2 = (UINT8*)flashrom[base+1]->memory(); + UINT8* ptr3 = (UINT8*)flashrom[base+2]->memory(); + UINT8* ptr4 = (UINT8*)flashrom[base+3]->memory(); real_offset = offset * 4; @@ -2298,10 +2298,10 @@ static void precopy_to_flash(running_machine *machine) for (i=0;i<0x800000;i+=4) { UINT32 data; - UINT8* ptr1 = (UINT8*)intelflash_getmemptr(0); - UINT8* ptr2 = (UINT8*)intelflash_getmemptr(1); - UINT8* ptr3 = (UINT8*)intelflash_getmemptr(2); - UINT8* ptr4 = (UINT8*)intelflash_getmemptr(3); + UINT8* ptr1 = (UINT8*)flashrom[0]->memory(); + UINT8* ptr2 = (UINT8*)flashrom[1]->memory(); + UINT8* ptr3 = (UINT8*)flashrom[2]->memory(); + UINT8* ptr4 = (UINT8*)flashrom[3]->memory(); data = romdata[i/4]; @@ -2314,10 +2314,10 @@ static void precopy_to_flash(running_machine *machine) for (i=0;i<0x800000;i+=4) { UINT32 data; - UINT8* ptr1 = (UINT8*)intelflash_getmemptr(4); - UINT8* ptr2 = (UINT8*)intelflash_getmemptr(5); - UINT8* ptr3 = (UINT8*)intelflash_getmemptr(6); - UINT8* ptr4 = (UINT8*)intelflash_getmemptr(7); + UINT8* ptr1 = (UINT8*)flashrom[4]->memory(); + UINT8* ptr2 = (UINT8*)flashrom[5]->memory(); + UINT8* ptr3 = (UINT8*)flashrom[6]->memory(); + UINT8* ptr4 = (UINT8*)flashrom[7]->memory(); data = romdata[(0x800000+i)/4]; @@ -2339,8 +2339,8 @@ static void precopy_to_flash(running_machine *machine) for (i=0;i<0x200000;i+=2) { - UINT8* ptr1 = (UINT8*)intelflash_getmemptr(flashnum); - UINT8* ptr2 = (UINT8*)intelflash_getmemptr(flashnum+1); + UINT8* ptr1 = (UINT8*)flashrom[flashnum]->memory(); + UINT8* ptr2 = (UINT8*)flashrom[flashnum+1]->memory(); UINT32 dat = romdata[(thebase+i)/2]; ptr1[BYTE_XOR_LE(i+1)] = (dat&0xff000000)>>24; @@ -2365,10 +2365,10 @@ static void copy_from_nvram(running_machine *machine) for (i=0;i<0x800000;i+=4) { UINT32 data; - UINT8* ptr1 = (UINT8*)intelflash_getmemptr(0); - UINT8* ptr2 = (UINT8*)intelflash_getmemptr(1); - UINT8* ptr3 = (UINT8*)intelflash_getmemptr(2); - UINT8* ptr4 = (UINT8*)intelflash_getmemptr(3); + UINT8* ptr1 = (UINT8*)flashrom[0]->memory(); + UINT8* ptr2 = (UINT8*)flashrom[1]->memory(); + UINT8* ptr3 = (UINT8*)flashrom[2]->memory(); + UINT8* ptr4 = (UINT8*)flashrom[3]->memory(); data = ((ptr1[i/4]<<24) | (ptr2[i/4]<<16) | (ptr3[i/4]<<8) | (ptr4[i/4]<<0)); @@ -2384,10 +2384,10 @@ static void copy_from_nvram(running_machine *machine) for (i=0;i<0x800000;i+=4) { UINT32 data; - UINT8* ptr1 = (UINT8*)intelflash_getmemptr(4); - UINT8* ptr2 = (UINT8*)intelflash_getmemptr(5); - UINT8* ptr3 = (UINT8*)intelflash_getmemptr(6); - UINT8* ptr4 = (UINT8*)intelflash_getmemptr(7); + UINT8* ptr1 = (UINT8*)flashrom[4]->memory(); + UINT8* ptr2 = (UINT8*)flashrom[5]->memory(); + UINT8* ptr3 = (UINT8*)flashrom[6]->memory(); + UINT8* ptr4 = (UINT8*)flashrom[7]->memory(); data = ((ptr1[i/4]<<24) | (ptr2[i/4]<<16) | (ptr3[i/4]<<8) | (ptr4[i/4]<<0)); @@ -2409,8 +2409,8 @@ static void copy_from_nvram(running_machine *machine) for (i=0;i<0x200000;i+=2) { - UINT8* ptr1 = (UINT8*)intelflash_getmemptr(flashnum); - UINT8* ptr2 = (UINT8*)intelflash_getmemptr(flashnum+1); + UINT8* ptr1 = (UINT8*)flashrom[flashnum]->memory(); + UINT8* ptr2 = (UINT8*)flashrom[flashnum+1]->memory(); UINT32 dat = (ptr1[i+0]<<8) | (ptr1[i+1]<<24) | (ptr2[i+0]<<0) | @@ -2446,21 +2446,15 @@ static void copy_from_nvram(running_machine *machine) static NVRAM_HANDLER( cps3 ) { - int i; - if (read_or_write) { //printf("read_write\n"); mame_fwrite(file, cps3_eeprom, 0x400); - for (i=0;i<48;i++) - nvram_handler_intelflash( machine, i, file, read_or_write ); } else if (file) { //printf("file\n"); mame_fread(file, cps3_eeprom, 0x400); - for (i=0;i<48;i++) - nvram_handler_intelflash( machine, i, file, read_or_write ); copy_from_nvram(machine); // copy data from flashroms back into user regions + decrypt into regions we execute/draw from. } @@ -2562,6 +2556,56 @@ static MACHINE_CONFIG_START( cps3, driver_device ) 42.9545MHz / 15.4445kHz = 2781.217 / 6 = 463.536 -> unlikely */ + // 48 flash chips + MDRV_FUJITSU_29F016A_ADD("flash0") + MDRV_FUJITSU_29F016A_ADD("flash1") + MDRV_FUJITSU_29F016A_ADD("flash2") + MDRV_FUJITSU_29F016A_ADD("flash3") + MDRV_FUJITSU_29F016A_ADD("flash4") + MDRV_FUJITSU_29F016A_ADD("flash5") + MDRV_FUJITSU_29F016A_ADD("flash6") + MDRV_FUJITSU_29F016A_ADD("flash7") + MDRV_FUJITSU_29F016A_ADD("flash8") + MDRV_FUJITSU_29F016A_ADD("flash9") + MDRV_FUJITSU_29F016A_ADD("flash10") + MDRV_FUJITSU_29F016A_ADD("flash11") + MDRV_FUJITSU_29F016A_ADD("flash12") + MDRV_FUJITSU_29F016A_ADD("flash13") + MDRV_FUJITSU_29F016A_ADD("flash14") + MDRV_FUJITSU_29F016A_ADD("flash15") + MDRV_FUJITSU_29F016A_ADD("flash16") + MDRV_FUJITSU_29F016A_ADD("flash17") + MDRV_FUJITSU_29F016A_ADD("flash18") + MDRV_FUJITSU_29F016A_ADD("flash19") + MDRV_FUJITSU_29F016A_ADD("flash20") + MDRV_FUJITSU_29F016A_ADD("flash21") + MDRV_FUJITSU_29F016A_ADD("flash22") + MDRV_FUJITSU_29F016A_ADD("flash23") + MDRV_FUJITSU_29F016A_ADD("flash24") + MDRV_FUJITSU_29F016A_ADD("flash25") + MDRV_FUJITSU_29F016A_ADD("flash26") + MDRV_FUJITSU_29F016A_ADD("flash27") + MDRV_FUJITSU_29F016A_ADD("flash28") + MDRV_FUJITSU_29F016A_ADD("flash29") + MDRV_FUJITSU_29F016A_ADD("flash30") + MDRV_FUJITSU_29F016A_ADD("flash31") + MDRV_FUJITSU_29F016A_ADD("flash32") + MDRV_FUJITSU_29F016A_ADD("flash33") + MDRV_FUJITSU_29F016A_ADD("flash34") + MDRV_FUJITSU_29F016A_ADD("flash35") + MDRV_FUJITSU_29F016A_ADD("flash36") + MDRV_FUJITSU_29F016A_ADD("flash37") + MDRV_FUJITSU_29F016A_ADD("flash38") + MDRV_FUJITSU_29F016A_ADD("flash39") + MDRV_FUJITSU_29F016A_ADD("flash40") + MDRV_FUJITSU_29F016A_ADD("flash41") + MDRV_FUJITSU_29F016A_ADD("flash42") + MDRV_FUJITSU_29F016A_ADD("flash43") + MDRV_FUJITSU_29F016A_ADD("flash44") + MDRV_FUJITSU_29F016A_ADD("flash45") + MDRV_FUJITSU_29F016A_ADD("flash46") + MDRV_FUJITSU_29F016A_ADD("flash47") + MDRV_MACHINE_START(cps3) MDRV_MACHINE_RESET(cps3) MDRV_NVRAM_HANDLER( cps3 ) diff --git a/src/mame/drivers/firebeat.c b/src/mame/drivers/firebeat.c index 12b5b62e3b6..ecf2889bc4b 100644 --- a/src/mame/drivers/firebeat.c +++ b/src/mame/drivers/firebeat.c @@ -135,6 +135,8 @@ static UINT8 extend_board_irq_active; static emu_timer *keyboard_timer; +static fujitsu_29f016a_device *flash[3]; + static GCU_REGS gcu[2]; static VIDEO_START(firebeat) @@ -709,19 +711,19 @@ static READ32_HANDLER(flashram_r) UINT32 r = 0; if (ACCESSING_BITS_24_31) { - r |= (intelflash_read(0, (offset*4)+0) & 0xff) << 24; + r |= (flash[0]->read((offset*4)+0) & 0xff) << 24; } if (ACCESSING_BITS_16_23) { - r |= (intelflash_read(0, (offset*4)+1) & 0xff) << 16; + r |= (flash[0]->read((offset*4)+1) & 0xff) << 16; } if (ACCESSING_BITS_8_15) { - r |= (intelflash_read(0, (offset*4)+2) & 0xff) << 8; + r |= (flash[0]->read((offset*4)+2) & 0xff) << 8; } if (ACCESSING_BITS_0_7) { - r |= (intelflash_read(0, (offset*4)+3) & 0xff) << 0; + r |= (flash[0]->read((offset*4)+3) & 0xff) << 0; } return r; } @@ -730,85 +732,85 @@ static WRITE32_HANDLER(flashram_w) { if (ACCESSING_BITS_24_31) { - intelflash_write(0, (offset*4)+0, (data >> 24) & 0xff); + flash[0]->write((offset*4)+0, (data >> 24) & 0xff); } if (ACCESSING_BITS_16_23) { - intelflash_write(0, (offset*4)+1, (data >> 16) & 0xff); + flash[0]->write((offset*4)+1, (data >> 16) & 0xff); } if (ACCESSING_BITS_8_15) { - intelflash_write(0, (offset*4)+2, (data >> 8) & 0xff); + flash[0]->write((offset*4)+2, (data >> 8) & 0xff); } if (ACCESSING_BITS_0_7) { - intelflash_write(0, (offset*4)+3, (data >> 0) & 0xff); + flash[0]->write((offset*4)+3, (data >> 0) & 0xff); } } static READ32_HANDLER(soundflash_r) { UINT32 r = 0; - int chip; + fujitsu_29f016a_device *chip; if (offset >= 0 && offset < 0x200000/4) { - chip = 1; + chip = flash[1]; } else { - chip = 2; + chip = flash[2]; } offset &= 0x7ffff; if (ACCESSING_BITS_24_31) { - r |= (intelflash_read(chip, (offset*4)+0) & 0xff) << 24; + r |= (chip->read((offset*4)+0) & 0xff) << 24; } if (ACCESSING_BITS_16_23) { - r |= (intelflash_read(chip, (offset*4)+1) & 0xff) << 16; + r |= (chip->read((offset*4)+1) & 0xff) << 16; } if (ACCESSING_BITS_8_15) { - r |= (intelflash_read(chip, (offset*4)+2) & 0xff) << 8; + r |= (chip->read((offset*4)+2) & 0xff) << 8; } if (ACCESSING_BITS_0_7) { - r |= (intelflash_read(chip, (offset*4)+3) & 0xff) << 0; + r |= (chip->read((offset*4)+3) & 0xff) << 0; } return r; } static WRITE32_HANDLER(soundflash_w) { - int chip; + fujitsu_29f016a_device *chip; if (offset >= 0 && offset < 0x200000/4) { - chip = 1; + chip = flash[1]; } else { - chip = 2; + chip = flash[2]; } offset &= 0x7ffff; if (ACCESSING_BITS_24_31) { - intelflash_write(chip, (offset*4)+0, (data >> 24) & 0xff); + chip->write((offset*4)+0, (data >> 24) & 0xff); } if (ACCESSING_BITS_16_23) { - intelflash_write(chip, (offset*4)+1, (data >> 16) & 0xff); + chip->write((offset*4)+1, (data >> 16) & 0xff); } if (ACCESSING_BITS_8_15) { - intelflash_write(chip, (offset*4)+2, (data >> 8) & 0xff); + chip->write((offset*4)+2, (data >> 8) & 0xff); } if (ACCESSING_BITS_0_7) { - intelflash_write(chip, (offset*4)+3, (data >> 0) & 0xff); + chip->write((offset*4)+3, (data >> 0) & 0xff); } } @@ -1687,6 +1689,10 @@ static MACHINE_START( firebeat ) /* configure fast RAM regions for DRC */ ppcdrc_add_fastram(machine->device("maincpu"), 0x00000000, 0x01ffffff, FALSE, work_ram); + + flash[0] = machine->device("flash0"); + flash[1] = machine->device("flash1"); + flash[2] = machine->device("flash2"); } static ADDRESS_MAP_START( firebeat_map, ADDRESS_SPACE_PROGRAM, 32 ) @@ -1724,11 +1730,11 @@ static READ8_DEVICE_HANDLER( soundram_r ) { if (offset >= 0 && offset < 0x200000) { - return intelflash_read(1, offset & 0x1fffff); + return flash[1]->read(offset & 0x1fffff); } else if (offset >= 0x200000 && offset < 0x400000) { - return intelflash_read(2, offset & 0x1fffff); + return flash[2]->read(offset & 0x1fffff); } return 0; } @@ -1743,13 +1749,6 @@ static const ymz280b_interface ymz280b_intf = DEVCB_HANDLER(soundram_r) }; -static NVRAM_HANDLER(firebeat) -{ - nvram_handler_intelflash(machine, 0, file, read_or_write); - nvram_handler_intelflash(machine, 1, file, read_or_write); - nvram_handler_intelflash(machine, 2, file, read_or_write); -} - static INPUT_PORTS_START(ppp) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) // Left @@ -1904,8 +1903,8 @@ static MACHINE_RESET( firebeat ) for (i=0; i < 0x200000; i++) { - sound[i] = intelflash_read(1, i); - sound[i+0x200000] = intelflash_read(2, i); + sound[i] = flash[1]->read(i); + sound[i+0x200000] = flash[2]->read(i); } SCSIGetDevice( atapi_device_data[1], &cd ); @@ -1921,10 +1920,13 @@ static MACHINE_CONFIG_START( firebeat, driver_device ) MDRV_MACHINE_START(firebeat) MDRV_MACHINE_RESET(firebeat) - MDRV_NVRAM_HANDLER(firebeat) MDRV_RTC65271_ADD("rtc", NULL) + MDRV_FUJITSU_29F016A_ADD("flash0") + MDRV_FUJITSU_29F016A_ADD("flash1") + MDRV_FUJITSU_29F016A_ADD("flash2") + /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(60) @@ -1960,11 +1962,15 @@ static MACHINE_CONFIG_START( firebeat2, driver_device ) MDRV_CPU_PROGRAM_MAP(firebeat_map) MDRV_CPU_VBLANK_INT("lscreen", firebeat_interrupt) + MDRV_MACHINE_START(firebeat) MDRV_MACHINE_RESET(firebeat) - MDRV_NVRAM_HANDLER(firebeat) MDRV_RTC65271_ADD("rtc", NULL) + MDRV_FUJITSU_29F016A_ADD("flash0") + MDRV_FUJITSU_29F016A_ADD("flash1") + MDRV_FUJITSU_29F016A_ADD("flash2") + /* video hardware */ MDRV_PALETTE_LENGTH(32768) MDRV_PALETTE_INIT(RRRRR_GGGGG_BBBBB) @@ -2176,9 +2182,6 @@ static void init_firebeat(running_machine *machine) UINT8 *rom = memory_region(machine, "user2"); atapi_init(machine); - intelflash_init(machine, 0, FLASH_FUJITSU_29F016A, NULL); - intelflash_init(machine, 1, FLASH_FUJITSU_29F016A, NULL); - intelflash_init(machine, 2, FLASH_FUJITSU_29F016A, NULL); pc16552d_init(machine, 0, 19660800, comm_uart_irq_callback, 0); // Network UART pc16552d_init(machine, 1, 24000000, midi_uart_irq_callback, 0); // MIDI UART diff --git a/src/mame/drivers/konamigv.c b/src/mame/drivers/konamigv.c index c9aa9a46dc9..16459967219 100644 --- a/src/mame/drivers/konamigv.c +++ b/src/mame/drivers/konamigv.c @@ -132,6 +132,9 @@ static UINT32 trackball_data[ 2 ]; static UINT16 btc_trackball_prev[ 4 ]; static UINT32 btc_trackball_data[ 4 ]; +static fujitsu_29f016a_device *flash8[4]; +static sharp_lh28f400_device *flash16[4]; + /* EEPROM handlers */ static WRITE32_DEVICE_HANDLER( eeprom_w ) @@ -365,6 +368,7 @@ static MACHINE_CONFIG_START( konamigv, driver_device ) MDRV_SOUND_ROUTE( 1, "rspeaker", 1.0 ) MACHINE_CONFIG_END + static INPUT_PORTS_START( konamigv ) PORT_START("P1") PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY @@ -426,14 +430,6 @@ INPUT_PORTS_END /* Simpsons Bowling */ -static NVRAM_HANDLER( simpbowl ) -{ - nvram_handler_intelflash( machine, 0, file, read_or_write ); - nvram_handler_intelflash( machine, 1, file, read_or_write ); - nvram_handler_intelflash( machine, 2, file, read_or_write ); - nvram_handler_intelflash( machine, 3, file, read_or_write ); -} - static READ32_HANDLER( flash_r ) { int reg = offset*2; @@ -455,8 +451,8 @@ static READ32_HANDLER( flash_r ) int chip = (flash_address >= 0x200000) ? 2 : 0; int ret; - ret = intelflash_read(chip, flash_address & 0x1fffff) & 0xff; - ret |= intelflash_read(chip+1, flash_address & 0x1fffff)<<8; + ret = flash8[chip]->read(flash_address & 0x1fffff) & 0xff; + ret |= flash8[chip+1]->read(flash_address & 0x1fffff)<<8; flash_address++; return ret; @@ -479,8 +475,8 @@ static WRITE32_HANDLER( flash_w ) { case 0: chip = (flash_address >= 0x200000) ? 2 : 0; - intelflash_write(chip, flash_address & 0x1fffff, data&0xff); - intelflash_write(chip+1, flash_address & 0x1fffff, (data>>8)&0xff); + flash8[chip]->write(flash_address & 0x1fffff, data&0xff); + flash8[chip+1]->write(flash_address & 0x1fffff, (data>>8)&0xff); break; case 1: @@ -525,10 +521,10 @@ static READ32_HANDLER( unknown_r ) static DRIVER_INIT( simpbowl ) { - intelflash_init( machine, 0, FLASH_FUJITSU_29F016A, NULL ); - intelflash_init( machine, 1, FLASH_FUJITSU_29F016A, NULL ); - intelflash_init( machine, 2, FLASH_FUJITSU_29F016A, NULL ); - intelflash_init( machine, 3, FLASH_FUJITSU_29F016A, NULL ); + flash8[0] = machine->device("flash0"); + flash8[1] = machine->device("flash1"); + flash8[2] = machine->device("flash2"); + flash8[3] = machine->device("flash3"); memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f68008f, 0, 0, flash_r, flash_w ); memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f6800c0, 0x1f6800c7, 0, 0, trackball_r ); @@ -538,7 +534,10 @@ static DRIVER_INIT( simpbowl ) } static MACHINE_CONFIG_DERIVED( simpbowl, konamigv ) - MDRV_NVRAM_HANDLER( simpbowl ) + MDRV_FUJITSU_29F016A_ADD("flash0") + MDRV_FUJITSU_29F016A_ADD("flash1") + MDRV_FUJITSU_29F016A_ADD("flash2") + MDRV_FUJITSU_29F016A_ADD("flash3") MACHINE_CONFIG_END static INPUT_PORTS_START( simpbowl ) @@ -558,11 +557,11 @@ static READ32_HANDLER( btcflash_r ) { if (mem_mask == 0x0000ffff) { - return intelflash_read(0, offset*2); + return flash16[0]->read(offset*2); } else if (mem_mask == 0xffff0000) { - return intelflash_read(0, (offset*2)+1)<<16; + return flash16[0]->read((offset*2)+1)<<16; } return 0; @@ -572,11 +571,11 @@ static WRITE32_HANDLER( btcflash_w ) { if (mem_mask == 0x0000ffff) { - intelflash_write(0, offset*2, data&0xffff); + flash16[0]->write(offset*2, data&0xffff); } else if (mem_mask == 0xffff0000) { - intelflash_write(0, (offset*2)+1, (data>>16)&0xffff); + flash16[0]->write((offset*2)+1, (data>>16)&0xffff); } } @@ -607,14 +606,9 @@ static WRITE32_HANDLER( btc_trackball_w ) // mame_printf_debug( "w %08x %08x %08x %08x\n", cpu_get_pc(space->cpu), offset, data, mem_mask ); } -static NVRAM_HANDLER( btchamp ) -{ - nvram_handler_intelflash( machine, 0, file, read_or_write ); -} - static DRIVER_INIT( btchamp ) { - intelflash_init( machine, 0, FLASH_SHARP_LH28F400, NULL ); + flash16[0] = machine->device("flash"); memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f68008f, 0, 0, btc_trackball_r, btc_trackball_w ); memory_nop_write ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f6800e0, 0x1f6800e3, 0, 0 ); @@ -624,7 +618,7 @@ static DRIVER_INIT( btchamp ) } static MACHINE_CONFIG_DERIVED( btchamp, konamigv ) - MDRV_NVRAM_HANDLER( btchamp ) + MDRV_SHARP_LH28F400_ADD("flash") MACHINE_CONFIG_END static INPUT_PORTS_START( btchamp ) @@ -700,7 +694,7 @@ static WRITE32_HANDLER( kdeadeye_0_w ) static DRIVER_INIT( kdeadeye ) { - intelflash_init( machine, 0, FLASH_SHARP_LH28F400, NULL ); + flash16[0] = machine->device("flash"); memory_install_read_port ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f680083, 0, 0, "GUNX1" ); memory_install_read_port ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f680090, 0x1f680093, 0, 0, "GUNY1" ); @@ -714,7 +708,7 @@ static DRIVER_INIT( kdeadeye ) } static MACHINE_CONFIG_DERIVED( kdeadeye, konamigv ) - MDRV_NVRAM_HANDLER( btchamp ) + MDRV_SHARP_LH28F400_ADD("flash") MACHINE_CONFIG_END static INPUT_PORTS_START( kdeadeye ) diff --git a/src/mame/drivers/ksys573.c b/src/mame/drivers/ksys573.c index d2e52e5a247..a0ae304fbb4 100644 --- a/src/mame/drivers/ksys573.c +++ b/src/mame/drivers/ksys573.c @@ -365,13 +365,8 @@ INLINE void ATTR_PRINTF(3,4) verboselog( running_machine *machine, int n_level, } } -static INT32 flash_bank; -static int flash_chips; -static int onboard_flash_start; -static int pccard1_flash_start; -static int pccard2_flash_start; -static int pccard3_flash_start; -static int pccard4_flash_start; +static int flash_bank; +static fujitsu_29f016a_device *flash_device[5][16]; static int security_cart_number = 0; static int chiptype[ 2 ]; @@ -386,8 +381,6 @@ static nvram_handler_func nvram_handler_security_cart_1; static NVRAM_HANDLER( konami573 ) { - int i; - if( nvram_handler_security_cart_0 != NULL ) { NVRAM_HANDLER_CALL(security_cart_0); @@ -397,11 +390,6 @@ static NVRAM_HANDLER( konami573 ) { NVRAM_HANDLER_CALL(security_cart_1); } - - for( i = 0; i < flash_chips; i++ ) - { - nvram_handler_intelflash( machine, i, file, read_or_write ); - } } static WRITE32_HANDLER( mb89371_w ) @@ -442,11 +430,11 @@ static READ32_HANDLER( jamma_r ) break; } - if( pccard1_flash_start < 0 ) + if( flash_device[1][0] == NULL ) { data |= ( 1 << 26 ); } - if( pccard2_flash_start < 0 ) + if( flash_device[2][0] == NULL ) { data |= ( 1 << 27 ); } @@ -481,29 +469,29 @@ static WRITE32_HANDLER( control_w ) break; } - if( onboard_flash_start >= 0 && ( control & ~0x43 ) == 0x00 ) + if( flash_device[0][0] != NULL && ( control & ~0x43 ) == 0x00 ) { - flash_bank = onboard_flash_start + ( ( control & 3 ) * 2 ); + flash_bank = (0 << 8) + ( ( control & 3 ) * 2 ); // if( flash_bank != old_bank ) mame_printf_debug( "onboard %d\r", control & 3 ); } - else if( pccard1_flash_start >= 0 && ( control & ~0x47 ) == 0x10 ) + else if( flash_device[1][0] != NULL && ( control & ~0x47 ) == 0x10 ) { - flash_bank = pccard1_flash_start + ( ( control & 7 ) * 2 ); + flash_bank = (1 << 8) + ( ( control & 7 ) * 2 ); // if( flash_bank != old_bank ) mame_printf_debug( "pccard1 %d\r", control & 7 ); } - else if( pccard2_flash_start >= 0 && ( control & ~0x47 ) == 0x20 ) + else if( flash_device[2][0] != NULL && ( control & ~0x47 ) == 0x20 ) { - flash_bank = pccard2_flash_start + ( ( control & 7 ) * 2 ); + flash_bank = (2 << 8) + ( ( control & 7 ) * 2 ); // if( flash_bank != old_bank ) mame_printf_debug( "pccard2 %d\r", control & 7 ); } - else if( pccard3_flash_start >= 0 && ( control & ~0x47 ) == 0x20 ) + else if( flash_device[3][0] != NULL && ( control & ~0x47 ) == 0x20 ) { - flash_bank = pccard3_flash_start + ( ( control & 7 ) * 2 ); + flash_bank = (3 << 8) + ( ( control & 7 ) * 2 ); // if( flash_bank != old_bank ) mame_printf_debug( "pccard3 %d\r", control & 7 ); } - else if( pccard4_flash_start >= 0 && ( control & ~0x47 ) == 0x28 ) + else if( flash_device[4][0] != NULL && ( control & ~0x47 ) == 0x28 ) { - flash_bank = pccard4_flash_start + ( ( control & 7 ) * 2 ); + flash_bank = (4 << 8) + ( ( control & 7 ) * 2 ); // if( flash_bank != old_bank ) mame_printf_debug( "pccard4 %d\r", control & 7 ); } } @@ -1128,23 +1116,24 @@ static READ32_HANDLER( flash_r ) } else { + fujitsu_29f016a_device **flash_base = &flash_device[flash_bank >> 8][flash_bank & 0xff]; int adr = offset * 2; if( ACCESSING_BITS_0_7 ) { - data |= ( intelflash_read( flash_bank + 0, adr + 0 ) & 0xff ) << 0; // 31m/31l/31j/31h + data |= ( flash_base[0]->read( adr + 0 ) & 0xff ) << 0; // 31m/31l/31j/31h } if( ACCESSING_BITS_8_15 ) { - data |= ( intelflash_read( flash_bank + 1, adr + 0 ) & 0xff ) << 8; // 27m/27l/27j/27h + data |= ( flash_base[1]->read( adr + 0 ) & 0xff ) << 8; // 27m/27l/27j/27h } if( ACCESSING_BITS_16_23 ) { - data |= ( intelflash_read( flash_bank + 0, adr + 1 ) & 0xff ) << 16; // 31m/31l/31j/31h + data |= ( flash_base[0]->read( adr + 1 ) & 0xff ) << 16; // 31m/31l/31j/31h } if( ACCESSING_BITS_24_31 ) { - data |= ( intelflash_read( flash_bank + 1, adr + 1 ) & 0xff ) << 24; // 27m/27l/27j/27h + data |= ( flash_base[1]->read( adr + 1 ) & 0xff ) << 24; // 27m/27l/27j/27h } } @@ -1163,23 +1152,24 @@ static WRITE32_HANDLER( flash_w ) } else { + fujitsu_29f016a_device **flash_base = &flash_device[flash_bank >> 8][flash_bank & 0xff]; int adr = offset * 2; if( ACCESSING_BITS_0_7 ) { - intelflash_write( flash_bank + 0, adr + 0, ( data >> 0 ) & 0xff ); + flash_base[0]->write( adr + 0, ( data >> 0 ) & 0xff ); } if( ACCESSING_BITS_8_15 ) { - intelflash_write( flash_bank + 1, adr + 0, ( data >> 8 ) & 0xff ); + flash_base[1]->write( adr + 0, ( data >> 8 ) & 0xff ); } if( ACCESSING_BITS_16_23 ) { - intelflash_write( flash_bank + 0, adr + 1, ( data >> 16 ) & 0xff ); + flash_base[0]->write( adr + 1, ( data >> 16 ) & 0xff ); } if( ACCESSING_BITS_24_31 ) { - intelflash_write( flash_bank + 1, adr + 1, ( data >> 24 ) & 0xff ); + flash_base[1]->write( adr + 1, ( data >> 24 ) & 0xff ); } } } @@ -1406,55 +1396,15 @@ ADDRESS_MAP_END static void flash_init( running_machine *machine ) { - int i; - int chip; - int size; - UINT8 *data; - static const struct - { - int *start; - const char *rgntag; - int chips; - int type; - int size; - } - flash_init[] = - { - { &onboard_flash_start, "user3", 8, FLASH_FUJITSU_29F016A, 0x200000 }, - { &pccard1_flash_start, "user4", 16, FLASH_FUJITSU_29F016A, 0x200000 }, - { &pccard2_flash_start, "user5", 16, FLASH_FUJITSU_29F016A, 0x200000 }, - { &pccard3_flash_start, "user6", 16, FLASH_FUJITSU_29F016A, 0x200000 }, - { &pccard4_flash_start, "user7", 16, FLASH_FUJITSU_29F016A, 0x200000 }, - { NULL, 0, 0, 0, 0 }, - }; + // find onboard flash devices + astring tempstr; + for (int index = 0; index < 8; index++) + flash_device[0][index] = machine->device(tempstr.format("onboard.%d", index)); - flash_chips = 0; - - i = 0; - while( flash_init[ i ].start != NULL ) - { - data = memory_region( machine, flash_init[ i ].rgntag ); - if( data != NULL ) - { - size = 0; - *( flash_init[ i ].start ) = flash_chips; - for( chip = 0; chip < flash_init[ i ].chips; chip++ ) - { - intelflash_init( machine, flash_chips, flash_init[ i ].type, data + size ); - size += flash_init[ i ].size; - flash_chips++; - } - if( size != memory_region_length( machine, flash_init[ i ].rgntag ) ) - { - fatalerror( "flash_init %d incorrect region length\n", i ); - } - } - else - { - *( flash_init[ i ].start ) = -1; - } - i++; - } + // find pccard flash devices + for (int card = 1; card <= 4; card++) + for (int index = 0; index < 16; index++) + flash_device[card][index] = machine->device(tempstr.format("pccard%d.%d", card, index)); state_save_register_global(machine, flash_bank ); state_save_register_global(machine, control ); @@ -2849,6 +2799,16 @@ static MACHINE_CONFIG_START( konami573, driver_device ) MDRV_MACHINE_RESET( konami573 ) MDRV_NVRAM_HANDLER( konami573 ) + + // onboard flash + MDRV_FUJITSU_29F016A_ADD("onboard.0") + MDRV_FUJITSU_29F016A_ADD("onboard.1") + MDRV_FUJITSU_29F016A_ADD("onboard.2") + MDRV_FUJITSU_29F016A_ADD("onboard.3") + MDRV_FUJITSU_29F016A_ADD("onboard.4") + MDRV_FUJITSU_29F016A_ADD("onboard.5") + MDRV_FUJITSU_29F016A_ADD("onboard.6") + MDRV_FUJITSU_29F016A_ADD("onboard.7") /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) @@ -2881,6 +2841,46 @@ static MACHINE_CONFIG_START( konami573, driver_device ) MDRV_ADC0834_ADD( "adc0834", konami573_adc_interface ) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( pccard1, konami573 ) + // flash for pccard 1 + MDRV_FUJITSU_29F016A_ADD("pccard1.0") + MDRV_FUJITSU_29F016A_ADD("pccard1.1") + MDRV_FUJITSU_29F016A_ADD("pccard1.2") + MDRV_FUJITSU_29F016A_ADD("pccard1.3") + MDRV_FUJITSU_29F016A_ADD("pccard1.4") + MDRV_FUJITSU_29F016A_ADD("pccard1.5") + MDRV_FUJITSU_29F016A_ADD("pccard1.6") + MDRV_FUJITSU_29F016A_ADD("pccard1.7") + MDRV_FUJITSU_29F016A_ADD("pccard1.8") + MDRV_FUJITSU_29F016A_ADD("pccard1.9") + MDRV_FUJITSU_29F016A_ADD("pccard1.10") + MDRV_FUJITSU_29F016A_ADD("pccard1.11") + MDRV_FUJITSU_29F016A_ADD("pccard1.12") + MDRV_FUJITSU_29F016A_ADD("pccard1.13") + MDRV_FUJITSU_29F016A_ADD("pccard1.14") + MDRV_FUJITSU_29F016A_ADD("pccard1.15") +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( pccard2, konami573 ) + // flash for pccard 2 + MDRV_FUJITSU_29F016A_ADD("pccard2.0") + MDRV_FUJITSU_29F016A_ADD("pccard2.1") + MDRV_FUJITSU_29F016A_ADD("pccard2.2") + MDRV_FUJITSU_29F016A_ADD("pccard2.3") + MDRV_FUJITSU_29F016A_ADD("pccard2.4") + MDRV_FUJITSU_29F016A_ADD("pccard2.5") + MDRV_FUJITSU_29F016A_ADD("pccard2.6") + MDRV_FUJITSU_29F016A_ADD("pccard2.7") + MDRV_FUJITSU_29F016A_ADD("pccard2.8") + MDRV_FUJITSU_29F016A_ADD("pccard2.9") + MDRV_FUJITSU_29F016A_ADD("pccard2.10") + MDRV_FUJITSU_29F016A_ADD("pccard2.11") + MDRV_FUJITSU_29F016A_ADD("pccard2.12") + MDRV_FUJITSU_29F016A_ADD("pccard2.13") + MDRV_FUJITSU_29F016A_ADD("pccard2.14") + MDRV_FUJITSU_29F016A_ADD("pccard2.15") +MACHINE_CONFIG_END + static MACHINE_CONFIG_DERIVED( k573bait, konami573 ) @@ -3155,9 +3155,6 @@ INPUT_PORTS_END ROM_START( sys573 ) ROM_REGION32_LE( 0x080000, "user1", 0 ) SYS573_BIOS_A - - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) ROM_END // Games @@ -3168,9 +3165,6 @@ ROM_START( bassangl ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "ge765ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(ee1b32a7) SHA1(c0f6b14b054f5a95ce474e794a3e0ca78faac681) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "765jaa02", 0, SHA1(4291711b1025733cb97f6da5dc3b03c189fcc37c) ) ROM_END @@ -3182,9 +3176,6 @@ ROM_START( bassang2 ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gc865ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(095cbfb5) SHA1(529ce0a7b0986cf7e64c37f466d6c2dac95cea7f) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "865jaa02", 0, SHA1(b98d9aa54f13aa73bea580d6494cb6a7f3217be3) ) ROM_END @@ -3193,9 +3184,6 @@ ROM_START( cr589fw ) ROM_REGION32_LE( 0x080000, "user1", 0 ) SYS573_BIOS_A - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "700b04", 0, SHA1(2f65f62eb7ae202153a8544989675989ed33316f) ) ROM_END @@ -3204,9 +3192,6 @@ ROM_START( cr589fwa ) ROM_REGION32_LE( 0x080000, "user1", 0 ) SYS573_BIOS_A - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "700a04", 0, SHA1(554481f48eeb5daf8b4e7be2d66840d6c8454a52) ) ROM_END @@ -3218,9 +3203,6 @@ ROM_START( darkhleg ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gx706ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(72b42574) SHA1(79dc959f0ce95ccb9ac0dbf0a72aec973e91bc56) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "706jaa02", 0, SHA1(58bd06855988250028086cba6b3670372b9d96a0) ) ROM_END @@ -3232,9 +3214,6 @@ ROM_START( fmania ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_FILL( 0x000000, 0x000224, 0xff ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "918xxb02", 0, SHA1(8ced8952fff3e70ce0621a491f0973af5a6ccd82) ) ROM_END @@ -3246,12 +3225,6 @@ ROM_START( ddrextrm ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gcc36ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(c1601287) SHA1(929691a78f7bb6dd830f832f301116df0da1619b) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gcc36ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -3266,9 +3239,6 @@ ROM_START( ddru ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gn845ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(c9e7fced) SHA1(aac4dde100091bc64d397f53484a0ffbf68b8101) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "845uaa02", 0, SHA1(d3f9290d4dadb5e9b82ebe77abf7b99d1a89f716) ) ROM_END @@ -3280,9 +3250,6 @@ ROM_START( ddrj ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gc845jb.u1", 0x000000, 0x000224, BAD_DUMP CRC(a16f42b8) SHA1(da4f1eb3eb2b28cb3a0bc74bb9b9945970f56ac2) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "845jba02", 0, SHA1(2d10378c89fe85682f262f0987f8366b9ea72f11) ) ROM_END @@ -3294,15 +3261,22 @@ ROM_START( ddrja ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gc845ja.u1", 0x000000, 0x000224, NO_DUMP ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ + ROM_REGION( 0x200000, "onboard.0", 0 ) /* onboard flash */ ROM_LOAD( "gc845jaa.31m", 0x000000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jaa.27m", 0x200000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jaa.31l", 0x400000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jaa.27l", 0x600000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jaa.31j", 0x800000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jaa.27j", 0xa00000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jaa.31h", 0xc00000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jaa.27h", 0xe00000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.1", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jaa.27m", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.2", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jaa.31l", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.3", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jaa.27l", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.4", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jaa.31j", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.5", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jaa.27j", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.6", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jaa.31h", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.7", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jaa.27h", 0x000000, 0x200000, NO_DUMP ) DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "845jaa02", 0, SHA1(37ca16be25bee39a5692dee2fa5f0fa0addfaaca) ) @@ -3318,15 +3292,22 @@ ROM_START( ddrjb ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gc845ja.u1", 0x000000, 0x000224, NO_DUMP ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ + ROM_REGION( 0x200000, "onboard.0", 0 ) /* onboard flash */ ROM_LOAD( "gc845jab.31m", 0x000000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jab.27m", 0x200000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jab.31l", 0x400000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jab.27l", 0x600000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jab.31j", 0x800000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jab.27j", 0xa00000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jab.31h", 0xc00000, 0x200000, NO_DUMP ) - ROM_LOAD( "gc845jab.27h", 0xe00000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.1", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jab.27m", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.2", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jab.31l", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.3", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jab.27l", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.4", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jab.31j", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.5", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jab.27j", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.6", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jab.31h", 0x000000, 0x200000, NO_DUMP ) + ROM_REGION( 0x200000, "onboard.7", 0 ) /* onboard flash */ + ROM_LOAD( "gc845jab.27h", 0x000000, 0x200000, NO_DUMP ) DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "845jab02", 0, SHA1(7bdcef37bf376c23153dfd1580de5666cc681335) ) @@ -3342,9 +3323,6 @@ ROM_START( ddra ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gn845aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(327c4851) SHA1(f0939224af706fd103a67aae9c96518c1db90ac9) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "845aaa02", 0, SHA1(839e2f8698a1561ac364998b8b3158ef0dee6998) ) ROM_END @@ -3356,9 +3334,6 @@ ROM_START( ddr2m ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gn895jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(363f427e) SHA1(adec886a07b9bd91f142f286b04fc6582205f037) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "895jaa02", 0, SHA1(cfe3a6f3ed62ba388b07045e29e22472d17dcfe4) ) ROM_END @@ -3370,9 +3345,6 @@ ROM_START( ddr2mc ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gn896ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(cbc984c5) SHA1(6c0cd78a41000999b4ffbd9fb3707738b50a9b50) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "896jaa01", 0, SHA1(f802a0e2ba0147eb71c54d92af409c3010a5715f) ) @@ -3387,9 +3359,6 @@ ROM_START( ddr2mc2 ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "ge984ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(cbc984c5) SHA1(6c0cd78a41000999b4ffbd9fb3707738b50a9b50) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "984jaa01", 0, SHA1(5505c28be27bfa9648060fd799bcf0c2c5f608ed) ) @@ -3407,12 +3376,6 @@ ROM_START( ddr2ml ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "ge885jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(cbc984c5) SHA1(6c0cd78a41000999b4ffbd9fb3707738b50a9b50) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user4", 0 ) /* PCCARD1 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "885jaa02", 0, SHA1(5d187aea247eefc5c065566ab277acd8c942ba27) ) ROM_END @@ -3427,12 +3390,6 @@ ROM_START( ddr3ma ) ROM_REGION( 0x0000084, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gn887aa.u1", 0x000000, 0x000084, BAD_DUMP CRC(bb14f9bd) SHA1(9d0adf5a32d8bbcaaea2f701f5c7a5d51ee0b8bf) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "ge887aa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3453,12 +3410,6 @@ ROM_START( ddr3mj ) ROM_REGION( 0x0000084, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gn887ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(2f633432) SHA1(bce44f20a5a7318af6aea4fdfa8af64ddb76047c) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "ge887ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3479,12 +3430,6 @@ ROM_START( ddr3mk ) ROM_REGION( 0x0000084, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gn887kb.u1", 0x000000, 0x000084, BAD_DUMP CRC(bb14f9bd) SHA1(9d0adf5a32d8bbcaaea2f701f5c7a5d51ee0b8bf) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "ge887kb.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3505,12 +3450,6 @@ ROM_START( ddr3mka ) ROM_REGION( 0x0000084, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gn887ka.u1", 0x000000, 0x000084, BAD_DUMP CRC(bb14f9bd) SHA1(9d0adf5a32d8bbcaaea2f701f5c7a5d51ee0b8bf) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "ge887ka.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3531,12 +3470,6 @@ ROM_START( ddr3mp ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gca22ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(6883c82c) SHA1(6fef1dc7150066eee427db685b6c5fb350b7768d) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "gea22ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3557,12 +3490,6 @@ ROM_START( ddr4m ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gca33aa.u1", 0x000000, 0x001014, BAD_DUMP CRC(f6feb2bd) SHA1(dfd5bd532338849289e2e4c155c0ca86e79b9ae5) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "gea33aa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3583,12 +3510,6 @@ ROM_START( ddr4mj ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gca33ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(e5230867) SHA1(44aea9ccc90d81e7f41e5e9a62b28fcbdd75363b) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "a33jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3609,12 +3530,6 @@ ROM_START( ddr4ms ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gca33ab.u1", 0x000000, 0x001014, BAD_DUMP CRC(312ac13f) SHA1(05d733edc03cfc5ea03db6c683f59ed6ff860b5a) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "gea33ab.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3635,12 +3550,6 @@ ROM_START( ddr4msj ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gca33jb.u1", 0x000000, 0x001014, BAD_DUMP CRC(00e4b531) SHA1(f421fc33642c5a3cd89fb14dc8cd601bdddd1f55) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "a33jba.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3661,12 +3570,6 @@ ROM_START( ddr4mp ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gca34ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(e9b6ce56) SHA1(f040fba2b2b446baa840026dcd10f9785f8cc0a3) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "gea34ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3690,12 +3593,6 @@ ROM_START( ddr4mps ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gca34jb.u1", 0x000000, 0x001014, BAD_DUMP CRC(0c717300) SHA1(00d21f39fe90494ffec2f8799767cc46a9cd2b00) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "gea34jb.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3716,12 +3613,6 @@ ROM_START( ddr5m ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gca27ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(ec526036) SHA1(f47d94d19268fdfa3ae9d42db9f2e2f9be318f2b) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gca27ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -3736,12 +3627,6 @@ ROM_START( ddrbocd ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gn895jaa.u1", 0x000000, 0x000224, BAD_DUMP CRC(363f427e) SHA1(adec886a07b9bd91f142f286b04fc6582205f037) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user4", 0 ) /* PCCARD1 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "892jaa01", 0, SHA1(46ace0feef48a2a6643c3cb4ac9164ba0beeea94) ) @@ -3759,9 +3644,6 @@ ROM_START( ddrs2k ) ROM_REGION( 0x0000084, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gc905aa.u1", 0x000000, 0x000084, BAD_DUMP CRC(21073a3e) SHA1(afa12404ceb462b9016a41c40775da87aa09cfeb) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "ge905aa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3782,9 +3664,6 @@ ROM_START( ddrs2kj ) ROM_REGION( 0x0000084, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gc905ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(b7a104b0) SHA1(0f6901e41640f729f8a084a33148a9b900475594) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "ge905ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3802,12 +3681,6 @@ ROM_START( ddrmax ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gcb19ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(2255626a) SHA1(cb70c4b551265ffc6cc41f7bd2678696e8067060) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gcb19ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -3822,12 +3695,6 @@ ROM_START( ddrmax2 ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gcb20ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(fb7e0f58) SHA1(e6da23257a2a2ba7c69e817a91a0a8864f009386) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gcb20ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -3842,9 +3709,6 @@ ROM_START( ddrsbm ) ROM_REGION( 0x0000084, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gq894ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(cc3a47de) SHA1(f6e2e101870370b1e295a4a9ed546aa2d8bc2010) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gq894ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -3859,9 +3723,6 @@ ROM_START( ddrusa ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gka44ua.u1", 0x000000, 0x001014, BAD_DUMP CRC(2ef7c4f1) SHA1(9004d27179ece86883d01b3e6bbfeebc1b478d57) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gka44ua.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -3876,10 +3737,10 @@ ROM_START( drmn ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gq881ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(7dca0b3f) SHA1(db6d5c527e2a99133b516e01433024d3173848c6) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x0c00000, 0xff ) - ROM_LOAD( "gq881ja.31h", 0xc00000, 0x200000, CRC(a5b86ece) SHA1(9696f0c512501574bae6e436306675894bb2352e) ) - ROM_LOAD( "gq881ja.27h", 0xe00000, 0x200000, CRC(fc0b94c1) SHA1(967d374288db757d161d0e9e8e396a1176071c5f) ) + ROM_REGION( 0x200000, "onboard.6", 0 ) /* onboard flash */ + ROM_LOAD( "gq881ja.31h", 0x000000, 0x200000, CRC(a5b86ece) SHA1(9696f0c512501574bae6e436306675894bb2352e) ) + ROM_REGION( 0x200000, "onboard.7", 0 ) /* onboard flash */ + ROM_LOAD( "gq881ja.27h", 0x000000, 0x200000, CRC(fc0b94c1) SHA1(967d374288db757d161d0e9e8e396a1176071c5f) ) ROM_REGION( 0x002000, "m48t58", 0 ) /* timekeeper */ ROM_LOAD( "gq881ja.22h", 0x000000, 0x002000, CRC(e834d5ec) SHA1(1c845811e43d7dfec657da288b5a38b8bc9c8366) ) @@ -3901,9 +3762,6 @@ ROM_START( drmn2m ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gn912ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(34deea99) SHA1(f179e22eaf30453bb94177ed9c25d7996f020c99) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "ge912ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3924,9 +3782,6 @@ ROM_START( drmn2mpu ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gn912ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(34deea99) SHA1(f179e22eaf30453bb94177ed9c25d7996f020c99) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "ge912ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3950,9 +3805,6 @@ ROM_START( drmn3m ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gca23ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(5af1b5da) SHA1(cf862ef9ab60e8da89af96266943137827e4a261) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "a23jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -3970,9 +3822,6 @@ ROM_START( dmx ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "ge874ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(c5536373) SHA1(1492221f7dd9485f7745ecb0a982a88c8e768e53) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "ge874ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -3987,9 +3836,6 @@ ROM_START( dmx2m ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gca39ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(ecc75eb7) SHA1(af66ced28ba5e79ae32ae0ef12d2ebe4207f3822) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gca39ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4004,10 +3850,10 @@ ROM_START( dmx2majp ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gca38ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(99a746b8) SHA1(333236e59a707ecaf840a66f9b947ceade2cf2c9) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ + ROM_REGION( 0x200000, "onboard.0", 0 ) /* onboard flash */ ROM_LOAD( "gca38ja.31m", 0x000000, 0x200000, CRC(a0f54ab5) SHA1(a5ae67d7619393779c79a2e227cac0675eeef538) ) - ROM_LOAD( "gca38ja.27m", 0x200000, 0x200000, CRC(6c3934b8) SHA1(f0e4a692b6caaf60fefaec87fd23da577439f69d) ) - ROM_FILL( 0x400000, 0x0c00000, 0xff ) + ROM_REGION( 0x200000, "onboard.1", 0 ) /* onboard flash */ + ROM_LOAD( "gca38ja.27m", 0x000000, 0x200000, CRC(6c3934b8) SHA1(f0e4a692b6caaf60fefaec87fd23da577439f69d) ) ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gca38ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4023,9 +3869,6 @@ ROM_START( dncfrks ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gk874ka.u1", 0x000000, 0x001014, BAD_DUMP CRC(7a6f4672) SHA1(2e009e57760e92f48070a69cff5597c37a4783a2) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gk874ka.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4040,9 +3883,6 @@ ROM_START( dsem ) ROM_REGION( 0x0000224, "user2", 0 ) /* install security cart eeprom */ ROM_LOAD( "ge936ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(0f5b7ae3) SHA1(646dd49da1216cc2d3d6920bc9b3447d55ebfbf0) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "ge936ea.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4057,12 +3897,6 @@ ROM_START( dsem2 ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gkc23ea.u1", 0x000000, 0x001014, BAD_DUMP CRC(aec2421a) SHA1(5ea9e9ce6161ebc99a50db0b7304385511bd4553) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gkc23ea.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4080,12 +3914,6 @@ ROM_START( dsfdct ) ROM_REGION( 0x0000084, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gc910jc.u1", 0x000000, 0x000084, BAD_DUMP CRC(3c1ca973) SHA1(32211a72e3ac88b2723f82dac0b26f93031b3a9c) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "ge887ja_gn887ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4106,12 +3934,6 @@ ROM_START( dsfdcta ) ROM_REGION( 0x0000084, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gc910ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(59a23808) SHA1(fcff1c68ff6cfbd391ac997a40fb5253fc62de82) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user5", 0 ) /* PCCARD2 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "gn884ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4132,9 +3954,6 @@ ROM_START( dsfdr ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gca37ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(b6d9e7f9) SHA1(bc5f491de53a96d46745df09bc94e7853052296c) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "gea37ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -4152,9 +3971,6 @@ ROM_START( dsftkd ) ROM_REGION( 0x0000084, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gn884ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(ce6b98ce) SHA1(75549d9470345ce06d2706d373b19416d97e5b9a) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gn884ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4169,9 +3985,6 @@ ROM_START( dstage ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gn845ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(db643af7) SHA1(881221da640b883302e657b906ea0a4e74555679) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "845ea", 0, BAD_DUMP SHA1(d3f9290d4dadb5e9b82ebe77abf7b99d1a89f716) ) ROM_END @@ -4183,9 +3996,6 @@ ROM_START( fbait2bc ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gc865ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(ea8f0b4b) SHA1(363b1ea1a520b239ba8bca867366bbe8a9977a43) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "865uab02", 0, SHA1(d14dc066d4c16fba1e9b31d5f042ad249c4b5137) ) ROM_END @@ -4197,9 +4007,6 @@ ROM_START( fbaitbc ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "ge765ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(588748c6) SHA1(ea1ead61e0dcb324ef7b6106cae00bcf6702d6c4) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "765uab02", 0, SHA1(07b09e763e4b90108aa924b518221b16667a7133) ) ROM_END @@ -4211,9 +4018,6 @@ ROM_START( fbaitmc ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gx889ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(753ad84e) SHA1(e024cefaaee7c9945ccc1f9a3d896b8560adce2e) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "889ea", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac) ) ROM_END @@ -4225,9 +4029,6 @@ ROM_START( fbaitmca ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gx889aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(9c22aae8) SHA1(c107b0bf7fa76708f2d4f6aaf2cf27b3858378a3) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "889aa", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac) ) ROM_END @@ -4239,9 +4040,6 @@ ROM_START( fbaitmcj ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gx889ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(6278603c) SHA1(d6b59e270cfe4016e12565aedec8a4f0702e1a6f) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "889ja", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac) ) ROM_END @@ -4253,9 +4051,6 @@ ROM_START( fbaitmcu ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gx889ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(67b91e54) SHA1(4d94bfab08e2bf6e34ee606dd3c4e345d8e5d158) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "889ua", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac) ) ROM_END @@ -4267,9 +4062,6 @@ ROM_START( gtrfrks ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gq886eac.u1", 0x000000, 0x000224, BAD_DUMP CRC(06bd6c4f) SHA1(61930e467ad135e2f31393ff5af981ed52f3bef9) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "886ea", 0, BAD_DUMP SHA1(c0118b5539902e75853403a4979869d18c3d1b86) ) ROM_END @@ -4281,9 +4073,6 @@ ROM_START( gtrfrksu ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gq886uac.u1", 0x000000, 0x000224, BAD_DUMP CRC(143eaa55) SHA1(51a4fa3693f1cb1646a8986003f9b6cc1ae8b630) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "886ua", 0, BAD_DUMP SHA1(c0118b5539902e75853403a4979869d18c3d1b86) ) ROM_END @@ -4295,9 +4084,6 @@ ROM_START( gtrfrksj ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gq886jac.u1", 0x000000, 0x000224, BAD_DUMP CRC(11ffd43d) SHA1(27f4f4d782604379254fb98c3c57e547aa4b321f) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "886ja", 0, BAD_DUMP SHA1(c0118b5539902e75853403a4979869d18c3d1b86) ) ROM_END @@ -4309,9 +4095,6 @@ ROM_START( gtrfrksa ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gq886aac.u1", 0x000000, 0x000224, BAD_DUMP CRC(efa51ee9) SHA1(3374d936de69c287e0161bc526546441c2943555) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "886aa", 0, BAD_DUMP SHA1(c0118b5539902e75853403a4979869d18c3d1b86) ) ROM_END @@ -4323,12 +4106,6 @@ ROM_START( gtrfrk2m ) ROM_REGION( 0x0000084, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gq883jad.u1", 0x000000, 0x000084, BAD_DUMP CRC(687868c4) SHA1(1230e74e4cf17953febe501df56d8bbec1de9356) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user4", 0 ) /* PCCARD1 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gq883jad.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4346,12 +4123,6 @@ ROM_START( gtrfrk3m ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "ge949jab.u1", 0x000000, 0x001014, BAD_DUMP CRC(8645e17f) SHA1(e8a833384cb6bdb05870fcd44e7c8ed48a03c852) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user4", 0 ) /* PCCARD1 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "949jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -4375,12 +4146,6 @@ ROM_START( gtfrk3ma ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "ge949jab.u1", 0x000000, 0x001014, BAD_DUMP CRC(8645e17f) SHA1(e8a833384cb6bdb05870fcd44e7c8ed48a03c852) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user4", 0 ) /* PCCARD1 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "949jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -4398,12 +4163,6 @@ ROM_START( gtfrk3mb ) ROM_REGION( 0x0001014, "user2", 0 ) /* game security cart eeprom */ ROM_LOAD( "ge949jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(61f35ee1) SHA1(0a2b66742364d76ec18647b2761590bd49229625) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user4", 0 ) /* PCCARD1 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* game security cart id */ ROM_LOAD( "ge949jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4421,12 +4180,6 @@ ROM_START( gtrfrk4m ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gea24ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(d1fccf11) SHA1(6dcd79f3171d6e4bd7e1149901638f8ea58ff623) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user4", 0 ) /* PCCARD1 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "a24jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -4444,13 +4197,10 @@ ROM_START( gtrfrk5m ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gea26jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(c2725fca) SHA1(b70a3266c61af5cbe0478a6f3dd850ebcab980dc) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ + ROM_REGION( 0x200000, "onboard.0", 0 ) /* onboard flash */ ROM_LOAD( "gea26jaa.31m", 0x000000, 0x200000, CRC(1a25e660) SHA1(dbd8fad0bac307723c70d00763cadf4261a7ed73) ) - ROM_LOAD( "gea26jaa.27m", 0x200000, 0x200000, CRC(345dc5f2) SHA1(61af3fcfe6119c1e8e18b92693855ab4fe708b30) ) - ROM_FILL( 0x400000, 0x0c00000, 0xff ) - - ROM_REGION( 0x2000000, "user4", 0 ) /* PCCARD1 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) + ROM_REGION( 0x200000, "onboard.1", 0 ) /* onboard flash */ + ROM_LOAD( "gea26jaa.27m", 0x000000, 0x200000, CRC(345dc5f2) SHA1(61af3fcfe6119c1e8e18b92693855ab4fe708b30) ) ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "gea26jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4466,12 +4216,6 @@ ROM_START( gtrfrk6m ) ROM_REGION( 0x0001014, "user2", 0 ) /* install security cart eeprom */ ROM_LOAD( "gcb06ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(673c98ab) SHA1(b1d889bf4fc5e425056acb6b72b2c563966fb7d7) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user4", 0 ) /* PCCARD1 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "gcb06ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4486,13 +4230,10 @@ ROM_START( gtrfrk7m ) ROM_REGION( 0x0001014, "user2", 0 ) /* install security cart eeprom */ ROM_LOAD( "gcb17jaa.u1", 0x000000, 0x001014, BAD_DUMP CRC(5a338c31) SHA1(0fd9ee306335858dd6bef680a62557a8bf055cc3) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ + ROM_REGION( 0x200000, "onboard.0", 0 ) /* onboard flash */ ROM_LOAD( "gcb17jaa.31m", 0x000000, 0x200000, CRC(1e1cbfe3) SHA1(6c942820f915ea0e01f0e736d70780ad8408aa69) ) - ROM_LOAD( "gcb17jaa.27m", 0x200000, 0x200000, CRC(7e7da9a9) SHA1(1882418779a48b5aefd113895756116379a6a4f7) ) - ROM_FILL( 0x400000, 0x0c00000, 0xff ) - - ROM_REGION( 0x2000000, "user4", 0 ) /* PCCARD1 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) + ROM_REGION( 0x200000, "onboard.1", 0 ) /* onboard flash */ + ROM_LOAD( "gcb17jaa.27m", 0x000000, 0x200000, CRC(7e7da9a9) SHA1(1882418779a48b5aefd113895756116379a6a4f7) ) ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "gcb17jaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4508,12 +4249,6 @@ ROM_START( gtfrk11m ) ROM_REGION( 0x0001014, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gcd39ja.u1", 0x000000, 0x001014, BAD_DUMP CRC(9bd81d0a) SHA1(c95f6d7317bf88177f7217de4ba4376485d5cdbf) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - - ROM_REGION( 0x2000000, "user4", 0 ) /* PCCARD1 */ - ROM_FILL( 0x0000000, 0x2000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "gcd39ja.u6", 0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4528,9 +4263,6 @@ ROM_START( hyperbbc ) ROM_REGION( 0x0000084, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gx908ja.u1", 0x000000, 0x000084, BAD_DUMP CRC(fb6c0635) SHA1(0d974462a0a244ffb1a651adb316242cde427756) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "908a02", 0, SHA1(573194ca9938c30415fc88dcc0c0152dd3024d71) ) ROM_END @@ -4542,9 +4274,6 @@ ROM_START( hyperbbck ) ROM_REGION( 0x0000084, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gx908ka.u1", 0x000000, 0x000084, BAD_DUMP CRC(f4f37fe1) SHA1(30f90cdb2d092e4f8d6c14cfd4ca4945e6d352cb) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "908a02", 0, SHA1(573194ca9938c30415fc88dcc0c0152dd3024d71) ) ROM_END @@ -4556,9 +4285,6 @@ ROM_START( konam80a ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gc826aa.u1", 0x000000, 0x000224, BAD_DUMP CRC(9b38b959) SHA1(6b4fca340a9b1c2ae21ad3903c1ac1e39ab08b1a) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "826aaa01", 0, BAD_DUMP SHA1(be5f8b31fd18ba631fe98c2132c56abf20193419) ) ROM_END @@ -4570,9 +4296,6 @@ ROM_START( konam80j ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gc826ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(e9e861e8) SHA1(45841db0b42d096213d9539a8d076d39391dca6d) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "826jaa01", 0, SHA1(be5f8b31fd18ba631fe98c2132c56abf20193419) ) ROM_END @@ -4584,9 +4307,6 @@ ROM_START( konam80k ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gc826ka.u1", 0x000000, 0x000224, BAD_DUMP CRC(d41f7e38) SHA1(73e2bb132e23be72e72ea5b0686ccad28e47574a) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "826kaa01", 0, BAD_DUMP SHA1(be5f8b31fd18ba631fe98c2132c56abf20193419) ) ROM_END @@ -4598,9 +4318,6 @@ ROM_START( konam80s ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gc826ea.u1", 0x000000, 0x000224, BAD_DUMP CRC(6ce4c619) SHA1(d2be08c213c0a74e30b7ebdd93946374cc64457f) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "826eaa01", 0, BAD_DUMP SHA1(be5f8b31fd18ba631fe98c2132c56abf20193419) ) ROM_END @@ -4612,9 +4329,6 @@ ROM_START( konam80u ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gc826ua.u1", 0x000000, 0x000224, BAD_DUMP CRC(0577379b) SHA1(3988a2a5ef1f1d5981c4767cbed05b73351be903) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "826uaa01", 0, SHA1(be5f8b31fd18ba631fe98c2132c56abf20193419) ) ROM_END @@ -4626,9 +4340,6 @@ ROM_START( pbballex ) ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gx802ja.u1", 0x000000, 0x000224, BAD_DUMP CRC(ea8bdda3) SHA1(780034ab08871631ef0e3e9b779ca89e016c26a8) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - DISK_REGION( "cdrom0" ) DISK_IMAGE_READONLY( "802jab02", 0, SHA1(bcc2b6c3515e2420eef9fdf8b28115368a428a92) ) ROM_END @@ -4643,9 +4354,6 @@ ROM_START( pcnfrk3m ) ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */ ROM_LOAD( "gca23ka.u1", 0x000000, 0x001014, BAD_DUMP CRC(f392349c) SHA1(e7eb7979db276de560d5820163a70d97e6c023d8) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */ ROM_LOAD( "a23kaa.u6", 0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) ) @@ -4663,9 +4371,6 @@ ROM_START( salarymc ) ROM_REGION( 0x0000084, "user2", 0 ) /* security cart eeprom */ ROM_LOAD( "gca18jaa.u1", 0x000000, 0x000084, CRC(c9197f67) SHA1(8e95a89008f756a79295f2cb557c39efca1351e7) ) - ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */ - ROM_FILL( 0x0000000, 0x1000000, 0xff ) - ROM_REGION( 0x000008, "user9", 0 ) /* security cart id */ ROM_LOAD( "gca18jaa.u6", 0x000000, 0x000008, CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) ) @@ -4703,55 +4408,55 @@ GAME( 1999, fbaitmcu, fbaitmc, k573bait, fbaitmc, ge765pwbba, ROT0, "Konami" GAME( 1999, fbaitmcj, fbaitmc, k573bait, fbaitmc, ge765pwbba, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. JA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, fbaitmca, fbaitmc, k573bait, fbaitmc, ge765pwbba, ROT0, "Konami", "Fisherman's Bait - Marlin Challenge (GX889 VER. AA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, ddr2m, sys573, konami573, ddr, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix (GN895 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1999, ddrbocd, ddr2m, konami573, ddr, ddr, ROT0, "Konami", "Dance Dance Revolution Best of Cool Dancers (GE892 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1999, ddr2ml, ddr2m, konami573, ddr, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1999, ddrbocd, ddr2m, pccard1, ddr, ddr, ROT0, "Konami", "Dance Dance Revolution Best of Cool Dancers (GE892 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1999, ddr2ml, ddr2m, pccard1, ddr, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, ddr2mc, ddr2m, konami573, ddr, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX CLUB VERSiON (GE896 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, ddr2mc2, ddr2m, konami573, ddr, ddr, ROT0, "Konami", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX substream CLUB VERSiON 2 (GE984 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1999, gtrfrk2m, sys573, konami573, gtrfrks, gtrfrks, ROT0, "Konami", "Guitar Freaks 2nd Mix Ver 1.01 (GQ883 VER. JAD)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1999, gtrfrk2m, sys573, pccard1, gtrfrks, gtrfrks, ROT0, "Konami", "Guitar Freaks 2nd Mix Ver 1.01 (GQ883 VER. JAD)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, dsftkd, sys573, konami573, ddr, ddr, ROT0, "Konami", "Dancing Stage featuring TRUE KiSS DESTiNATiON (G*884 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, cr589fw, sys573, konami573, konami573, konami573, ROT0, "Konami", "CD-ROM Drive Updater 2.0 (700B04)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, cr589fwa, sys573, konami573, konami573, konami573, ROT0, "Konami", "CD-ROM Drive Updater (700A04)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 2000, ddr3mk, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea2 (GN887 VER. KBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.3 */ -GAME( 2000, ddr3mka, ddr3mk, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea (GN887 VER. KAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.3 */ -GAME( 1999, ddr3ma, ddr3mk, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. AAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.1 */ -GAME( 1999, ddr3mj, ddr3mk, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.0 */ +GAME( 2000, ddr3mk, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea2 (GN887 VER. KBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.3 */ +GAME( 2000, ddr3mka, ddr3mk, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix - Ver.Korea (GN887 VER. KAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.3 */ +GAME( 1999, ddr3ma, ddr3mk, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. AAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.1 */ +GAME( 1999, ddr3mj, ddr3mk, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix (GN887 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.0 */ GAME( 1999, ddrsbm, sys573, konami573, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution Solo Bass Mix (GQ894 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) GAME( 1999, ddrs2k, sys573, konami573, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution Solo 2000 (GC905 VER. AAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.3 */ GAME( 1999, ddrs2kj, ddrs2k, konami573, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution Solo 2000 (GC905 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.2 */ GAME( 1999, hyperbbc, sys573, konami573, hyperbbc, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ (GX908 1999/08/24 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, hyperbbck,hyperbbc, konami573, hyperbbc, hyperbbc, ROT0, "Konami", "Hyper Bishi Bashi Champ (GX908 1999/08/24 VER. KAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1999, dsfdct, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JCA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) -GAME( 1999, dsfdcta, dsfdct, konami573, ddr, ddr, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1999, dsfdct, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JCA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) +GAME( 1999, dsfdcta, dsfdct, pccard2, ddr, ddr, ROT0, "Konami", "Dancing Stage featuring Dreams Come True (GC910 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1999, drmn2m, sys573, konami573, drmn, drmndigital,ROT0, "Konami", "DrumMania 2nd Mix (GE912 VER. JAB)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.5 */ GAME( 1999, drmn2mpu, drmn2m, konami573, drmn, drmndigital,ROT0, "Konami", "DrumMania 2nd Mix Session Power Up Kit (GE912 VER. JAB)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.5 */ GAME( 2000, dncfrks, sys573, konami573, dmx, dmx, ROT0, "Konami", "Dance Freaks (G*874 VER. KAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.6 */ GAME( 2000, dmx, dncfrks, konami573, dmx, dmx, ROT0, "Konami", "Dance Maniax (G*874 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.6 */ GAME( 2000, dsem, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage Euro Mix (G*936 VER. EAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.7 */ -GAME( 2000, gtrfrk3m, sys573, konami573, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAC)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.4 */ -GAME( 2000, gtfrk3ma, gtrfrk3m, konami573, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAB)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.4 */ -GAME( 2000, gtfrk3mb, gtrfrk3m, konami573, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 3rd Mix - security cassette versionup (949JAZ02)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.4 */ +GAME( 2000, gtrfrk3m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAC)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.4 */ +GAME( 2000, gtfrk3ma, gtrfrk3m, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 3rd Mix (GE949 VER. JAB)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.4 */ +GAME( 2000, gtfrk3mb, gtrfrk3m, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 3rd Mix - security cassette versionup (949JAZ02)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.4 */ GAME( 2000, salarymc, sys573, konami573, hyperbbc, salarymc, ROT0, "Konami", "Salary Man Champ (GCA18 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 2000, ddr3mp, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix Plus (G*A22 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.6 */ +GAME( 2000, ddr3mp, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 3rd Mix Plus (G*A22 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.6 */ GAME( 2000, pcnfrk3m, sys573, konami573, drmn, drmndigital,ROT0, "Konami", "Percussion Freaks 3rd Mix (G*A23 VER. KAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, drmn3m, pcnfrk3m, konami573, drmn, drmndigital,ROT0, "Konami", "DrumMania 3rd Mix (G*A23 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, gtrfrk4m, sys573, konami573, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 4th Mix (G*A24 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4m, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. AAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4mj, ddr4m, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4ms, sys573, konami573, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. ABA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4msj, ddr4ms, konami573, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. JBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, gtrfrk4m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 4th Mix (G*A24 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4m, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. AAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4mj, ddr4m, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4ms, sys573, pccard2, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. ABA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ +GAME( 2000, ddr4msj, ddr4ms, pccard2, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. JBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, dsfdr, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage Featuring Disney's Rave (GCA37JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ GAME( 2000, ddrusa, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution USA (G*A44 VER. UAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */ -GAME( 2000, ddr4mp, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2000, ddr4mps, sys573, konami573, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus Solo (G*A34 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2000, ddr4mp, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2000, ddr4mps, sys573, pccard2, ddrsolo, ddrsolo, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus Solo (G*A34 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2000, dmx2m, sys573, konami573, dmx, dmx, ROT0, "Konami", "Dance Maniax 2nd Mix (G*A39 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2000, fmania, sys573, konami573, konami573, konami573, ROT0, "Konami", "Fighting Mania (918 xx B02)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) -GAME( 2001, gtrfrk5m, sys573, konami573, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 5th Mix (G*A26 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2001, ddr5m, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 5th Mix (G*A27 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, gtrfrk5m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 5th Mix (G*A26 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, ddr5m, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution 5th Mix (G*A27 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ GAME( 2001, dmx2majp, sys573, konami573, dmx, dmx, ROT0, "Konami", "Dance Maniax 2nd Mix Append J-Paradise (G*A38 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2001, gtrfrk6m, sys573, konami573, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 6th Mix (G*B06 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2001, gtrfrk7m, sys573, konami573, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 7th Mix (G*B17 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2001, ddrmax, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "DDR Max - Dance Dance Revolution 6th Mix (G*B19 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2002, ddrmax2, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "DDR Max 2 - Dance Dance Revolution 7th Mix (G*B20 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ -GAME( 2002, dsem2, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage Euro Mix 2 (G*C23 VER. EAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2002, ddrextrm, sys573, konami573, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution Extreme (G*C36 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ -GAME( 2004, gtfrk11m, sys573, konami573, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 11th Mix (G*D39 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2001, gtrfrk6m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 6th Mix (G*B06 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2001, gtrfrk7m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 7th Mix (G*B17 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2001, ddrmax, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "DDR Max - Dance Dance Revolution 6th Mix (G*B19 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2002, ddrmax2, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "DDR Max 2 - Dance Dance Revolution 7th Mix (G*B20 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */ +GAME( 2002, dsem2, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dancing Stage Euro Mix 2 (G*C23 VER. EAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2002, ddrextrm, sys573, pccard2, ddr, ddrdigital, ROT0, "Konami", "Dance Dance Revolution Extreme (G*C36 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ +GAME( 2004, gtfrk11m, sys573, pccard1, gtrfrks, gtrfrkdigital,ROT0, "Konami", "Guitar Freaks 11th Mix (G*D39 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.95 */ diff --git a/src/mame/drivers/naomi.c b/src/mame/drivers/naomi.c index 86c0384d204..7c900cc2f92 100644 --- a/src/mame/drivers/naomi.c +++ b/src/mame/drivers/naomi.c @@ -1242,6 +1242,8 @@ Notes: #define CPU_CLOCK (200000000) static UINT32 *dc_sound_ram; +static macronix_29l001mc_device *awflash; + /* MD2 MD1 MD0 MD6 MD4 MD3 MD5 MD7 MD8 */ static const struct sh4_config sh4cpu_config = { 1, 0, 1, 0, 0, 0, 1, 1, 0, CPU_CLOCK }; @@ -1301,13 +1303,6 @@ jvseeprom_default_game[] = { "keyboard", { 0x32, 0x7E, 0x10, 0x42, 0x45, 0x42, 0x30, 0x09, 0x10, 0x00, 0x01, 0x01, 0x01, 0x00, 0x11, 0x11, 0x11, 0x11, 0x32, 0x7E, 0x10, 0x42, 0x45, 0x42, 0x30, 0x09, 0x10, 0x00, 0x01, 0x01, 0x01, 0x00, 0x11, 0x11, 0x11, 0x11, 0xF0, 0x4A, 0x0C, 0x0C, 0xF0, 0x4A, 0x0C, 0x0C, 0x18, 0x09, 0x01, 0x20, 0x02, 0x00, 0x3C, 0x00, 0x32, 0x00, 0x00, 0x00, 0x18, 0x09, 0x01, 0x20, 0x02, 0x00, 0x3C, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }; -static NVRAM_HANDLER( aw_nvram ) -{ - nvram_handler_intelflash(machine, 0, file, read_or_write); - - // TODO: save AW NVRAM at 00200000 -} - static NVRAM_HANDLER( naomi_eeproms ) { if (read_or_write) @@ -1516,8 +1511,8 @@ ADDRESS_MAP_END static READ64_HANDLER( aw_flash_r ) { - return (UINT64)intelflash_read(0, offset*8) | (UINT64)intelflash_read(0, (offset*8)+1)<<8 | (UINT64)intelflash_read(0, (offset*8)+2)<<16 | (UINT64)intelflash_read(0, (offset*8)+3)<<24 | - (UINT64)intelflash_read(0, (offset*8)+4)<<32 | (UINT64)intelflash_read(0, (offset*8)+5)<<40 | (UINT64)intelflash_read(0, (offset*8)+6)<<48 | (UINT64)intelflash_read(0, (offset*8)+7)<<56; + return (UINT64)awflash->read(offset*8) | (UINT64)awflash->read((offset*8)+1)<<8 | (UINT64)awflash->read((offset*8)+2)<<16 | (UINT64)awflash->read((offset*8)+3)<<24 | + (UINT64)awflash->read((offset*8)+4)<<32 | (UINT64)awflash->read((offset*8)+5)<<40 | (UINT64)awflash->read((offset*8)+6)<<48 | (UINT64)awflash->read((offset*8)+7)<<56; } static WRITE64_HANDLER( aw_flash_w ) @@ -1536,7 +1531,7 @@ static WRITE64_HANDLER( aw_flash_w ) data >>= (i*8); - intelflash_write(0, addr, data); + awflash->write(addr, data); } INLINE int decode_reg32_64(running_machine *machine, UINT32 offset, UINT64 mem_mask, UINT64 *shift) @@ -1601,8 +1596,8 @@ static WRITE64_HANDLER( aw_modem_w ) static ADDRESS_MAP_START( aw_map, ADDRESS_SPACE_PROGRAM, 64 ) /* Area 0 */ - AM_RANGE(0x00000000, 0x0001ffff) AM_READWRITE( aw_flash_r, aw_flash_w ) - AM_RANGE(0xa0000000, 0xa001ffff) AM_READWRITE( aw_flash_r, aw_flash_w ) + AM_RANGE(0x00000000, 0x0001ffff) AM_READWRITE( aw_flash_r, aw_flash_w ) AM_REGION("awflash", 0) + AM_RANGE(0xa0000000, 0xa001ffff) AM_READWRITE( aw_flash_r, aw_flash_w ) AM_REGION("awflash", 0) AM_RANGE(0x00200000, 0x0021ffff) AM_RAM // battery backed up RAM AM_RANGE(0x005f6800, 0x005f69ff) AM_READWRITE( dc_sysctrl_r, dc_sysctrl_w ) @@ -1989,7 +1984,7 @@ static MACHINE_CONFIG_DERIVED( aw, naomi_base ) // MDRV_DEVICE_REMOVE("main_eeprom") MDRV_CPU_MODIFY("maincpu") MDRV_CPU_PROGRAM_MAP(aw_map) - MDRV_NVRAM_HANDLER(aw_nvram) + MDRV_MACRONIX_29L001MC_ADD("awflash") MDRV_AW_ROM_BOARD_ADD("rom_board", "user1") MACHINE_CONFIG_END @@ -2264,7 +2259,7 @@ ROM_START( naomi2 ) ROM_END ROM_START( awbios ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8400000, "user1", ROMREGION_ERASE) @@ -6438,7 +6433,7 @@ static const UINT32 salmankt_key = 0x34b74; static DRIVER_INIT( atomiswave ) { - UINT64 *ROM = (UINT64 *)memory_region(machine, "maincpu"); + UINT64 *ROM = (UINT64 *)memory_region(machine, "awflash"); #if 0 UINT8 *dcdata = (UINT8 *)memory_region(machine, "user1"); FILE *f; @@ -6450,7 +6445,7 @@ static DRIVER_INIT( atomiswave ) // patch out long startup delay ROM[0x98e/8] = (ROM[0x98e/8] & U64(0xffffffffffff)) | (UINT64)0x0009<<48; - intelflash_init(machine, 0, FLASH_MACRONIX_29L001MC, memory_region(machine, "maincpu")); + awflash = machine->device("awflash"); } #define AW_DRIVER_INIT(DRIVER) \ @@ -6482,7 +6477,7 @@ AW_DRIVER_INIT(vfurlong) AW_DRIVER_INIT(salmankt) ROM_START( fotns ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6497,7 +6492,7 @@ ROM_START( fotns ) ROM_END ROM_START( rangrmsn ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6510,7 +6505,7 @@ ROM_START( rangrmsn ) ROM_END ROM_START( sprtshot ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6522,7 +6517,7 @@ ROM_START( sprtshot ) ROM_END ROM_START( xtrmhunt ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6536,7 +6531,7 @@ ROM_START( xtrmhunt ) ROM_END ROM_START( xtrmhnt2 ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6555,7 +6550,7 @@ ROM_START( xtrmhnt2 ) ROM_END ROM_START( dolphin ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6568,7 +6563,7 @@ ROM_START( dolphin ) ROM_END ROM_START( demofist ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6583,7 +6578,7 @@ ROM_START( demofist ) ROM_END ROM_START( rumblef ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6598,7 +6593,7 @@ ROM_START( rumblef ) ROM_END ROM_START( ngbc ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6606,7 +6601,7 @@ ROM_START( ngbc ) ROM_END ROM_START( kofnw ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6620,7 +6615,7 @@ ROM_START( kofnw ) ROM_END ROM_START( kofnwj ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6635,7 +6630,7 @@ ROM_START( kofnwj ) ROM_END ROM_START( kov7sprt ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE) @@ -6650,7 +6645,7 @@ ROM_START( kov7sprt ) ROM_END ROM_START( ggisuka ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x9000000, "user1", ROMREGION_ERASE) @@ -6666,7 +6661,7 @@ ROM_START( ggisuka ) ROM_END ROM_START( vfurlong ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x9000000, "user1", ROMREGION_ERASE) @@ -6681,7 +6676,7 @@ ROM_START( vfurlong ) ROM_END ROM_START( salmankt ) - ROM_REGION( 0x200000, "maincpu", 0) + ROM_REGION( 0x200000, "awflash", 0) AW_BIOS ROM_REGION( 0x9000000, "user1", ROMREGION_ERASE) diff --git a/src/mame/drivers/seibuspi.c b/src/mame/drivers/seibuspi.c index 89ac084f437..0bae8c08e34 100644 --- a/src/mame/drivers/seibuspi.c +++ b/src/mame/drivers/seibuspi.c @@ -740,6 +740,8 @@ Notes: UINT32 *spimainram; +static intel_e28f008sa_device *flash[2]; + static UINT8 *z80_rom; /********************************************************************/ @@ -1085,11 +1087,11 @@ static READ8_DEVICE_HANDLER( flashrom_read ) logerror("Flash Read: %08X\n", offset); if( offset < 0x100000 ) { - return intelflash_read(0, offset); + return flash[0]->read(offset); } else if( offset < 0x200000 ) { - return intelflash_read(1, offset - 0x100000 ); + return flash[1]->read(offset - 0x100000 ); } return 0; } @@ -1099,11 +1101,11 @@ static WRITE8_DEVICE_HANDLER( flashrom_write ) logerror("Flash Write: %08X, %02X\n", offset, data); if( offset < 0x100000 ) { - intelflash_write(0, offset + 1, data); + flash[0]->write(offset + 1, data); } else if( offset < 0x200000 ) { - intelflash_write(1, offset - 0x100000 + 1, data); + flash[1]->write(offset - 0x100000 + 1, data); } } @@ -1785,12 +1787,6 @@ GFXDECODE_END /********************************************************************************/ -static NVRAM_HANDLER( spi ) -{ - nvram_handler_intelflash(machine, 0, file, read_or_write); - nvram_handler_intelflash(machine, 1, file, read_or_write); -} - /* this is a 93C46 but with reset delay */ static const eeprom_interface eeprom_intf = { @@ -1842,19 +1838,19 @@ static MACHINE_RESET( spi ) /* If the first value doesn't match, the game shows a checksum error */ /* If any of the other values are wrong, the game goes to update mode */ - intelflash_write(0, 0, 0xff); - intelflash_write(0, 0, 0x10); - intelflash_write(0, 0, flash_data); /* country code */ + flash[0]->write(0, 0xff); + flash[0]->write(0, 0x10); + flash[0]->write(0, flash_data); /* country code */ for (i=0; i < 0x100000; i++) { - intelflash_write(0, 0, 0xff); - sound[i] = intelflash_read(0, i); + flash[0]->write(0, 0xff); + sound[i] = flash[0]->read(i); } for (i=0; i < 0x100000; i++) { - intelflash_write(1, 0, 0xff); - sound[0x100000+i] = intelflash_read(1, i); + flash[1]->write(0, 0xff); + sound[0x100000+i] = flash[1]->read(i); } } @@ -1872,12 +1868,14 @@ static MACHINE_CONFIG_START( spi, driver_device ) MDRV_MACHINE_START(spi) MDRV_MACHINE_RESET(spi) - MDRV_NVRAM_HANDLER(spi) MDRV_EEPROM_ADD("eeprom", eeprom_intf) MDRV_DS2404_ADD("ds2404", 1995, 1, 1) + MDRV_INTEL_E28F008SA_ADD("flash0") + MDRV_INTEL_E28F008SA_ADD("flash1") + /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_REFRESH_RATE(54) @@ -1927,7 +1925,8 @@ static MACHINE_CONFIG_DERIVED( sxx2f, spi ) /* Intel i386DX @ 25MHz, YMF271 @ 16 MDRV_MACHINE_START(sxx2f) MDRV_MACHINE_RESET(sxx2f) - MDRV_NVRAM_HANDLER(0) + MDRV_DEVICE_REMOVE("flash0") + MDRV_DEVICE_REMOVE("flash1") MACHINE_CONFIG_END @@ -1948,7 +1947,8 @@ static MACHINE_CONFIG_DERIVED( sxx2g, spi ) /* single board version using measur MDRV_MACHINE_START(sxx2f) MDRV_MACHINE_RESET(sxx2f) - MDRV_NVRAM_HANDLER(0) + MDRV_DEVICE_REMOVE("flash0") + MDRV_DEVICE_REMOVE("flash1") MACHINE_CONFIG_END @@ -2079,8 +2079,8 @@ static READ32_HANDLER ( rfjet_speedup_r ) static void init_spi(running_machine *machine) { - intelflash_init( machine, 0, FLASH_INTEL_E28F008SA, NULL ); - intelflash_init( machine, 1, FLASH_INTEL_E28F008SA, NULL ); + flash[0] = machine->device("flash0"); + flash[1] = machine->device("flash1"); seibuspi_text_decrypt(memory_region(machine, "gfx1")); seibuspi_bg_decrypt(memory_region(machine, "gfx2"), memory_region_length(machine, "gfx2")); @@ -2141,8 +2141,8 @@ static DRIVER_INIT( viprp1o ) static void init_rf2(running_machine *machine) { - intelflash_init( machine, 0, FLASH_INTEL_E28F008SA, NULL ); - intelflash_init( machine, 1, FLASH_INTEL_E28F008SA, NULL ); + flash[0] = machine->device("flash0"); + flash[1] = machine->device("flash1"); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0282AC, 0x0282AF, 0, 0, rf2_speedup_r ); seibuspi_rise10_text_decrypt(memory_region(machine, "gfx1")); @@ -2165,8 +2165,8 @@ static DRIVER_INIT( rdft2us ) static void init_rfjet(running_machine *machine) { - intelflash_init( machine, 0, FLASH_INTEL_E28F008SA, NULL ); - intelflash_init( machine, 1, FLASH_INTEL_E28F008SA, NULL ); + flash[0] = machine->device("flash0"); + flash[1] = machine->device("flash1"); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x002894c, 0x002894f, 0, 0, rfjet_speedup_r ); seibuspi_rise11_text_decrypt(memory_region(machine, "gfx1")); diff --git a/src/mame/drivers/taitogn.c b/src/mame/drivers/taitogn.c index 1a920c36f25..3d038e6c4a3 100644 --- a/src/mame/drivers/taitogn.c +++ b/src/mame/drivers/taitogn.c @@ -328,6 +328,10 @@ Type 3 (PCMCIA Compact Flash Adaptor + Compact Flash card, sealed together with #include "sound/psx.h" #include "audio/taito_zm.h" +static intel_te28f160_device *biosflash; +static intel_e28f400_device *pgmflash; +static intel_te28f160_device *sndflash[3]; + static unsigned char cis[512]; static int locked; @@ -438,75 +442,75 @@ static WRITE32_HANDLER(rf5c296_mem_w) // Flash handling -static UINT32 gen_flash_r(running_machine *machine, int chip, offs_t offset, UINT32 mem_mask) +static UINT32 gen_flash_r(intelfsh16_device *device, offs_t offset, UINT32 mem_mask) { UINT32 res = 0; offset *= 2; if(ACCESSING_BITS_0_15) - res |= intelflash_read(chip, offset); + res |= device->read(offset); if(ACCESSING_BITS_16_31) - res |= intelflash_read(chip, offset+1) << 16; + res |= device->read(offset+1) << 16; return res; } -static void gen_flash_w(running_machine *machine, int chip, offs_t offset, UINT32 data, UINT32 mem_mask) +static void gen_flash_w(intelfsh16_device *device, offs_t offset, UINT32 data, UINT32 mem_mask) { offset *= 2; if(ACCESSING_BITS_0_15) - intelflash_write(chip, offset, data); + device->write(offset, data); if(ACCESSING_BITS_16_31) - intelflash_write(chip, offset+1, data >> 16); + device->write(offset+1, data >> 16); } static READ32_HANDLER(flash_subbios_r) { - return gen_flash_r(space->machine, 0, offset, mem_mask); + return gen_flash_r(biosflash, offset, mem_mask); } static WRITE32_HANDLER(flash_subbios_w) { - gen_flash_w(space->machine, 0, offset, data, mem_mask); + gen_flash_w(biosflash, offset, data, mem_mask); } static READ32_HANDLER(flash_mn102_r) { - return gen_flash_r(space->machine, 1, offset, mem_mask); + return gen_flash_r(pgmflash, offset, mem_mask); } static WRITE32_HANDLER(flash_mn102_w) { - gen_flash_w(space->machine, 1, offset, data, mem_mask); + gen_flash_w(pgmflash, offset, data, mem_mask); } static READ32_HANDLER(flash_s1_r) { - return gen_flash_r(space->machine, 2, offset, mem_mask); + return gen_flash_r(sndflash[0], offset, mem_mask); } static WRITE32_HANDLER(flash_s1_w) { - gen_flash_w(space->machine, 2, offset, data, mem_mask); + gen_flash_w(sndflash[0], offset, data, mem_mask); } static READ32_HANDLER(flash_s2_r) { - return gen_flash_r(space->machine, 3, offset, mem_mask); + return gen_flash_r(sndflash[1], offset, mem_mask); } static WRITE32_HANDLER(flash_s2_w) { - gen_flash_w(space->machine, 3, offset, data, mem_mask); + gen_flash_w(sndflash[1], offset, data, mem_mask); } static READ32_HANDLER(flash_s3_r) { - return gen_flash_r(space->machine, 4, offset, mem_mask); + return gen_flash_r(sndflash[2], offset, mem_mask); } static WRITE32_HANDLER(flash_s3_w) { - gen_flash_w(space->machine, 4, offset, data, mem_mask); + gen_flash_w(sndflash[2], offset, data, mem_mask); } @@ -800,32 +804,13 @@ static READ32_HANDLER( gnet_mahjong_panel_r ) // Init and reset -static NVRAM_HANDLER( coh3002t ) -{ - nvram_handler_intelflash(machine, 0, file, read_or_write); - nvram_handler_intelflash(machine, 1, file, read_or_write); - nvram_handler_intelflash(machine, 2, file, read_or_write); - nvram_handler_intelflash(machine, 3, file, read_or_write); - nvram_handler_intelflash(machine, 4, file, read_or_write); - - if(!file) { - // Only the subbios needs to preexist for the board to work - memcpy(intelflash_getmemptr(0), memory_region(machine, "subbios"), 0x200000); - } -} - static DRIVER_INIT( coh3002t ) { - // Sub-bios (u30) - intelflash_init(machine, 0, FLASH_INTEL_TE28F160, 0); - - // mn102 program flash (u27) - intelflash_init(machine, 1, FLASH_INTEL_E28F400, 0); - - // Samples (u29, u55, u56) - intelflash_init(machine, 2, FLASH_INTEL_TE28F160, 0); - intelflash_init(machine, 3, FLASH_INTEL_TE28F160, 0); - intelflash_init(machine, 4, FLASH_INTEL_TE28F160, 0); + biosflash = machine->device("biosflash"); + pgmflash = machine->device("pgmflash"); + sndflash[0] = machine->device("sndflash0"); + sndflash[1] = machine->device("sndflash1"); + sndflash[2] = machine->device("sndflash2"); psx_driver_init(machine); znsec_init(0, tt10); @@ -948,10 +933,15 @@ static MACHINE_CONFIG_START( coh3002t, driver_device ) MDRV_AT28C16_ADD( "at28c16", 0 ) MDRV_IDE_CONTROLLER_ADD( "card", 0 ) - MDRV_NVRAM_HANDLER( coh3002t ) MDRV_MB3773_ADD("mb3773") + MDRV_INTEL_TE28F160_ADD("biosflash") + MDRV_INTEL_E28F008SA_ADD("pgmflash") + MDRV_INTEL_TE28F160_ADD("sndflash0") + MDRV_INTEL_TE28F160_ADD("sndflash1") + MDRV_INTEL_TE28F160_ADD("sndflash2") + MDRV_FRAGMENT_ADD( taito_zoom_sound ) MACHINE_CONFIG_END @@ -1075,7 +1065,7 @@ INPUT_PORTS_END #define TAITOGNET_BIOS \ ROM_REGION32_LE( 0x080000, "mainbios", 0 ) \ ROM_LOAD( "coh-3002t.353", 0x000000, 0x080000, CRC(03967fa7) SHA1(0e17fec2286e4e25deb23d40e41ce0986f373d49) ) \ - ROM_REGION16_LE( 0x200000, "subbios", 0 ) \ + ROM_REGION16_LE( 0x200000, "biosflash", 0 ) \ ROM_SYSTEM_BIOS( 0, "v1", "G-NET Bios v1" ) \ ROM_LOAD16_WORD_BIOS(0, "flash.u30", 0x000000, 0x200000, CRC(c48c8236) SHA1(c6dad60266ce2ff635696bc0d91903c543273559) ) \ ROM_SYSTEM_BIOS( 1, "v2", "G-NET Bios v2" ) \