summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2010-09-14 09:54:56 +0000
committer Aaron Giles <aaron@aarongiles.com>2010-09-14 09:54:56 +0000
commite22fd1b2c7efd4e2c8be50dc4a290021189b8f1b (patch)
tree710ac3aa952341ad7c11a5409828bb9f1ceaf9f2 /src
parentd4a4c81615d46544b2282011d5a5cce50b76e464 (diff)
Moved auto-finding code down into the device_t object so it can be more
broadly used. Added memory interface to the intelfsh device so you can access/view the data in the debugger and via the standard memory interfaces. Removed the old memory() method in favor of new functions read_raw()/write_raw() which do direct reads/writes of the data. Cleaned up CPS3 No-CD sets to break up the "ROMs" into individual flash pieces which are automatically loaded by the intelfsh device on initialization. Also split the MACHINE_CONFIG to only populate the number of SIMMs actually present for each game, as documented in the top of the file. And replaced the NVRAM_HANDLER with an NVRAM device.
Diffstat (limited to 'src')
-rw-r--r--src/emu/devintrf.c76
-rw-r--r--src/emu/devintrf.h105
-rw-r--r--src/emu/machine.c38
-rw-r--r--src/emu/machine.h99
-rw-r--r--src/emu/machine/intelfsh.c301
-rw-r--r--src/emu/machine/intelfsh.h41
-rw-r--r--src/emu/mconfig.h2
-rw-r--r--src/mame/drivers/cps3.c1146
8 files changed, 1181 insertions, 627 deletions
diff --git a/src/emu/devintrf.c b/src/emu/devintrf.c
index 3123c60c7e5..a568b005ce9 100644
--- a/src/emu/devintrf.c
+++ b/src/emu/devintrf.c
@@ -548,7 +548,8 @@ device_t::device_t(running_machine &_machine, const device_config &config)
m_baseconfig(config),
m_unscaled_clock(config.m_clock),
m_clock_scale(1.0),
- m_attoseconds_per_clock((config.m_clock == 0) ? 0 : HZ_TO_ATTOSECONDS(config.m_clock))
+ m_attoseconds_per_clock((config.m_clock == 0) ? 0 : HZ_TO_ATTOSECONDS(config.m_clock)),
+ m_auto_finder_list(NULL)
{
}
@@ -692,6 +693,10 @@ void device_t::start()
// populate the region field
m_region = m_machine.region(tag());
+ // find all the registered devices
+ for (auto_finder_base *autodev = m_auto_finder_list; autodev != NULL; autodev = autodev->m_next)
+ autodev->findit(*this);
+
// let the interfaces do their pre-work
for (device_interface *intf = m_interface_list; intf != NULL; intf = intf->interface_next())
intf->interface_pre_start();
@@ -888,3 +893,72 @@ void device_t::notify_clock_changed()
// then notify the device
device_clock_changed();
}
+
+
+//-------------------------------------------------
+// register_auto_finder - add a new item to the
+// list of stuff to find after we go live
+//-------------------------------------------------
+
+void device_t::register_auto_finder(auto_finder_base &autodev)
+{
+ // add to this list
+ autodev.m_next = m_auto_finder_list;
+ m_auto_finder_list = &autodev;
+}
+
+
+//-------------------------------------------------
+// auto_finder_base - constructor
+//-------------------------------------------------
+
+device_t::auto_finder_base::auto_finder_base(device_t &base, const char *tag)
+ : m_next(NULL),
+ m_tag(tag)
+{
+ // register ourselves with our device class
+ base.register_auto_finder(*this);
+}
+
+
+//-------------------------------------------------
+// ~auto_finder_base - destructor
+//-------------------------------------------------
+
+device_t::auto_finder_base::~auto_finder_base()
+{
+}
+
+
+//-------------------------------------------------
+// find_device - find a device; done here instead
+// of inline in the template due to include
+// dependency ordering
+//-------------------------------------------------
+
+device_t *device_t::auto_finder_base::find_device(device_t &base, const char *tag)
+{
+ return base.subdevice(tag);
+}
+
+
+//-------------------------------------------------
+// find_shared_ptr - find a shared pointer
+//-------------------------------------------------
+
+void *device_t::auto_finder_base::find_shared_ptr(device_t &base, const char *tag)
+{
+ return memory_get_shared(*base.machine, tag);
+}
+
+
+//-------------------------------------------------
+// find_shared_size - find a shared pointer size
+//-------------------------------------------------
+
+size_t device_t::auto_finder_base::find_shared_size(device_t &base, const char *tag)
+{
+ size_t result = 0;
+ memory_get_shared(*base.machine, tag, result);
+ return result;
+}
diff --git a/src/emu/devintrf.h b/src/emu/devintrf.h
index 71029d0cb2d..e4330d19fba 100644
--- a/src/emu/devintrf.h
+++ b/src/emu/devintrf.h
@@ -485,6 +485,111 @@ protected:
UINT32 m_unscaled_clock; // unscaled clock
double m_clock_scale; // clock scale factor
attoseconds_t m_attoseconds_per_clock;// period in attoseconds
+
+ // helper class to request auto-object discovery in the constructor of a derived class
+ class auto_finder_base
+ {
+ public:
+ // construction/destruction
+ auto_finder_base(device_t &base, const char *tag);
+ virtual ~auto_finder_base();
+
+ // getters
+ virtual void findit(device_t &base) = 0;
+
+ // helpers
+ device_t *find_device(device_t &device, const char *tag);
+ void *find_shared_ptr(device_t &device, const char *tag);
+ size_t find_shared_size(device_t &device, const char *tag);
+
+ // internal state
+ auto_finder_base *m_next;
+ const char *m_tag;
+ };
+
+ // templated version bound to a specific type
+ template<typename _TargetType, bool _Required>
+ class auto_finder_type : public auto_finder_base
+ {
+ public:
+ // construction/destruction
+ auto_finder_type(device_t &base, const char *tag)
+ : auto_finder_base(base, tag),
+ m_target(0) { }
+
+ // operators to make use transparent
+ operator _TargetType() { return m_target; }
+ operator _TargetType() const { return m_target; }
+ _TargetType operator->() { return m_target; }
+
+ // setter for setting the object
+ void set_target(_TargetType target)
+ {
+ m_target = target;
+ if (target == 0 && _Required)
+ throw emu_fatalerror("Unable to find required object '%s'", this->m_tag);
+ }
+
+ // internal state
+ _TargetType m_target;
+ };
+
+ // optional device finder
+ template<class _DeviceClass>
+ class optional_device : public auto_finder_type<_DeviceClass *, false>
+ {
+ public:
+ optional_device(device_t &base, const char *tag) : auto_finder_type<_DeviceClass *, false>(base, tag) { }
+ virtual void findit(device_t &base) { set_target(downcast<_DeviceClass *>(find_device(base, this->m_tag))); }
+ };
+
+ // required devices are similar but throw an error if they are not found
+ template<class _DeviceClass>
+ class required_device : public auto_finder_type<_DeviceClass *, true>
+ {
+ public:
+ required_device(device_t &base, const char *tag) : auto_finder_type<_DeviceClass *, true>(base, tag) { }
+ virtual void findit(device_t &base) { set_target(downcast<_DeviceClass *>(find_device(base, this->m_tag))); }
+ };
+
+ // optional shared pointer finder
+ template<typename _PointerType>
+ class optional_shared_ptr : public auto_finder_type<_PointerType *, false>
+ {
+ public:
+ optional_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, false>(base, tag) { }
+ virtual void findit(device_t &base) { set_target(reinterpret_cast<_PointerType *>(find_shared_ptr(base, this->m_tag))); }
+ };
+
+ // required shared pointer finder
+ template<typename _PointerType>
+ class required_shared_ptr : public auto_finder_type<_PointerType *, true>
+ {
+ public:
+ required_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, true>(base, tag) { }
+ virtual void findit(device_t &base) { set_target(reinterpret_cast<_PointerType *>(find_shared_ptr(base, this->m_tag))); }
+ };
+
+ // optional shared pointer size finder
+ class optional_shared_size : public auto_finder_type<size_t, false>
+ {
+ public:
+ optional_shared_size(device_t &base, const char *tag) : auto_finder_type<size_t, false>(base, tag) { }
+ virtual void findit(device_t &base) { set_target(find_shared_size(base, this->m_tag)); }
+ };
+
+ // required shared pointer size finder
+ class required_shared_size : public auto_finder_type<size_t, true>
+ {
+ public:
+ required_shared_size(device_t &base, const char *tag) : auto_finder_type<size_t, true>(base, tag) { }
+ virtual void findit(device_t &base) { set_target(find_shared_size(base, this->m_tag)); }
+ };
+
+ // internal helpers
+ void register_auto_finder(auto_finder_base &autodev);
+
+ auto_finder_base * m_auto_finder_list;
};
diff --git a/src/emu/machine.c b/src/emu/machine.c
index a0010521a53..63e76d76e61 100644
--- a/src/emu/machine.c
+++ b/src/emu/machine.c
@@ -1173,10 +1173,6 @@ void driver_device::device_start()
if (next() != NULL)
throw device_missing_dependencies();
- // find all the registered devices
- for (auto_finder_base *autodev = m_auto_finder_list; autodev != NULL; autodev = autodev->m_next)
- autodev->findit(*this);
-
// call the game-specific init
if (m_config.m_game->driver_init != NULL)
(*m_config.m_game->driver_init)(&m_machine);
@@ -1211,40 +1207,6 @@ void driver_device::device_reset()
}
-//-------------------------------------------------
-// auto_finder_base - constructor
-//-------------------------------------------------
-
-void driver_device::register_auto_finder(auto_finder_base &autodev)
-{
- // add to this list
- autodev.m_next = m_auto_finder_list;
- m_auto_finder_list = &autodev;
-}
-
-
-//-------------------------------------------------
-// auto_finder_base - constructor
-//-------------------------------------------------
-
-driver_device::auto_finder_base::auto_finder_base(driver_device &base, const char *tag)
- : m_next(NULL),
- m_tag(tag)
-{
- // register ourselves with our device class
- base.register_auto_finder(*this);
-}
-
-
-//-------------------------------------------------
-// ~auto_finder_base - destructor
-//-------------------------------------------------
-
-driver_device::auto_finder_base::~auto_finder_base()
-{
-}
-
-
//**************************************************************************
// SYSTEM TIME
diff --git a/src/emu/machine.h b/src/emu/machine.h
index 7268be2b0f0..82f5267aad4 100644
--- a/src/emu/machine.h
+++ b/src/emu/machine.h
@@ -628,107 +628,8 @@ protected:
virtual void device_start();
virtual void device_reset();
- // helper class to request auto-object discovery in the constructor of a derived class
- class auto_finder_base
- {
- public:
- // construction/destruction
- auto_finder_base(driver_device &base, const char *tag);
- virtual ~auto_finder_base();
-
- // getters
- virtual void findit(driver_device &base) = 0;
-
- // internal state
- auto_finder_base *m_next;
- const char *m_tag;
- };
-
- // templated version bound to a specific type
- template<typename _TargetType, bool _Required>
- class auto_finder_type : public auto_finder_base
- {
- public:
- // construction/destruction
- auto_finder_type(driver_device &base, const char *tag)
- : auto_finder_base(base, tag),
- m_target(0) { }
-
- // operators to make use transparent
- operator _TargetType() { return m_target; }
- operator _TargetType() const { return m_target; }
- _TargetType operator->() { return m_target; }
-
- // setter for setting the object
- void set_target(_TargetType target)
- {
- m_target = target;
- if (target == 0 && _Required)
- throw emu_fatalerror("Unable to find required object '%s'", this->m_tag);
- }
-
- // internal state
- _TargetType m_target;
- };
-
- // optional device finder
- template<class _DeviceClass>
- class optional_device : public auto_finder_type<_DeviceClass *, false>
- {
- public:
- optional_device(driver_device &base, const char *tag) : auto_finder_type<_DeviceClass *, false>(base, tag) { }
- virtual void findit(driver_device &base) { set_target(base.m_machine.device<_DeviceClass>(this->m_tag)); }
- };
-
- // required devices are similar but throw an error if they are not found
- template<class _DeviceClass>
- class required_device : public auto_finder_type<_DeviceClass *, true>
- {
- public:
- required_device(driver_device &base, const char *tag) : auto_finder_type<_DeviceClass *, true>(base, tag) { }
- virtual void findit(driver_device &base) { set_target(base.m_machine.device<_DeviceClass>(this->m_tag)); }
- };
-
- // optional shared pointer finder
- template<typename _PointerType>
- class optional_shared_ptr : public auto_finder_type<_PointerType *, false>
- {
- public:
- optional_shared_ptr(driver_device &base, const char *tag) : auto_finder_type<_PointerType *, false>(base, tag) { }
- virtual void findit(driver_device &base) { set_target(reinterpret_cast<_PointerType *>(memory_get_shared(base.m_machine, this->m_tag))); }
- };
-
- // required shared pointer finder
- template<typename _PointerType>
- class required_shared_ptr : public auto_finder_type<_PointerType *, true>
- {
- public:
- required_shared_ptr(driver_device &base, const char *tag) : auto_finder_type<_PointerType *, true>(base, tag) { }
- virtual void findit(driver_device &base) { set_target(reinterpret_cast<_PointerType *>(memory_get_shared(base.m_machine, this->m_tag))); }
- };
-
- // optional shared pointer size finder
- class optional_shared_size : public auto_finder_type<size_t, false>
- {
- public:
- optional_shared_size(driver_device &base, const char *tag) : auto_finder_type<size_t, false>(base, tag) { }
- virtual void findit(driver_device &base) { size_t size; memory_get_shared(base.m_machine, this->m_tag, size); set_target(size); }
- };
-
- // required shared pointer size finder
- class required_shared_size : public auto_finder_type<size_t, true>
- {
- public:
- required_shared_size(driver_device &base, const char *tag) : auto_finder_type<size_t, true>(base, tag) { }
- virtual void findit(driver_device &base) { size_t size; memory_get_shared(base.m_machine, this->m_tag, size); set_target(size); }
- };
-
- // internal helpers
- void register_auto_finder(auto_finder_base &autodev);
-
// internal state
const driver_device_config_base &m_config;
- auto_finder_base *m_auto_finder_list;
};
diff --git a/src/emu/machine/intelfsh.c b/src/emu/machine/intelfsh.c
index cb76a100899..bc0f3b53df8 100644
--- a/src/emu/machine/intelfsh.c
+++ b/src/emu/machine/intelfsh.c
@@ -75,120 +75,182 @@ const device_type SHARP_UNK128MBIT = sharp_unk128mbit_device_config::static_allo
//**************************************************************************
-// DEVICE CONFIGURATION
+// GLOBAL VARIABLES
//**************************************************************************
-//-------------------------------------------------
-// intelfsh_device_config - constructor
-//-------------------------------------------------
+static ADDRESS_MAP_START( memory_map8_512Kb, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x00000, 0x00ffff) AM_RAM
+ADDRESS_MAP_END
-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)
-{
-}
+static ADDRESS_MAP_START( memory_map8_1Mb, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x00000, 0x01ffff) AM_RAM
+ADDRESS_MAP_END
-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)
-{
-}
+static ADDRESS_MAP_START( memory_map8_8Mb, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x00000, 0x0fffff) AM_RAM
+ADDRESS_MAP_END
-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)
-{
-}
+static ADDRESS_MAP_START( memory_map8_16Mb, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x00000, 0x1fffff) AM_RAM
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( memory_map16_4Mb, ADDRESS_SPACE_PROGRAM, 16 )
+ AM_RANGE(0x00000, 0x07ffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( memory_map16_16Mb, ADDRESS_SPACE_PROGRAM, 16 )
+ AM_RANGE(0x00000, 0x1fffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( memory_map16_64Mb, ADDRESS_SPACE_PROGRAM, 16 )
+ AM_RANGE(0x00000, 0x7fffff) AM_RAM
+ADDRESS_MAP_END
//**************************************************************************
-// LIVE DEVICE
+// DEVICE CONFIGURATION
//**************************************************************************
//-------------------------------------------------
-// intelfsh_device - constructor
+// intelfsh_device_config - 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),
+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_memory_interface(mconfig, *this),
+ device_config_nvram_interface(mconfig, *this),
+ m_type(variant),
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_bits(8),
m_device_id(0),
m_maker_id(0),
- m_timer(NULL),
- m_flash_memory(NULL)
+ m_sector_is_4k(false)
{
- switch( config.m_type )
+ address_map_constructor map = NULL;
+
+ switch( variant )
{
- case intelfsh_device_config::FLASH_INTEL_28F016S5:
- case intelfsh_device_config::FLASH_SHARP_LH28F016S:
+ case FLASH_INTEL_28F016S5:
+ case FLASH_SHARP_LH28F016S:
m_bits = 8;
m_size = 0x200000;
m_maker_id = 0x89;
m_device_id = 0xaa;
+ map = ADDRESS_MAP_NAME( memory_map8_16Mb );
break;
- case intelfsh_device_config::FLASH_SHARP_LH28F400:
- case intelfsh_device_config::FLASH_INTEL_E28F400:
+ case FLASH_SHARP_LH28F400:
+ case FLASH_INTEL_E28F400:
m_bits = 16;
m_size = 0x80000;
m_maker_id = 0xb0;
m_device_id = 0xed;
+ map = ADDRESS_MAP_NAME( memory_map16_4Mb );
break;
- case intelfsh_device_config::FLASH_FUJITSU_29F016A:
+ case FLASH_FUJITSU_29F016A:
m_bits = 8;
m_size = 0x200000;
m_maker_id = 0x04;
m_device_id = 0xad;
+ map = ADDRESS_MAP_NAME( memory_map8_16Mb );
break;
- case intelfsh_device_config::FLASH_INTEL_E28F008SA:
+ case FLASH_INTEL_E28F008SA:
m_bits = 8;
m_size = 0x100000;
m_maker_id = 0x89;
m_device_id = 0xa2;
+ map = ADDRESS_MAP_NAME( memory_map8_8Mb );
break;
- case intelfsh_device_config::FLASH_INTEL_TE28F160:
+ case FLASH_INTEL_TE28F160:
m_bits = 16;
m_size = 0x200000;
m_maker_id = 0xb0;
m_device_id = 0xd0;
+ map = ADDRESS_MAP_NAME( memory_map16_16Mb );
break;
- case intelfsh_device_config::FLASH_SHARP_UNK128MBIT:
+ case FLASH_SHARP_UNK128MBIT:
m_bits = 16;
m_size = 0x800000;
m_maker_id = 0xb0;
m_device_id = 0xb0;
+ map = ADDRESS_MAP_NAME( memory_map16_64Mb );
break;
- case intelfsh_device_config::FLASH_MACRONIX_29L001MC:
+ case FLASH_MACRONIX_29L001MC:
m_bits = 8;
m_size = 0x20000;
m_maker_id = 0xc2;
m_device_id = 0x51;
+ map = ADDRESS_MAP_NAME( memory_map8_1Mb );
break;
-
- case intelfsh_device_config::FLASH_PANASONIC_MN63F805MNP:
+ case FLASH_PANASONIC_MN63F805MNP:
m_bits = 8;
m_size = 0x10000;
m_maker_id = 0x32;
m_device_id = 0x1b;
m_sector_is_4k = true;
+ map = ADDRESS_MAP_NAME( memory_map8_512Kb );
break;
-
- case intelfsh_device_config::FLASH_SANYO_LE26FV10N1TS:
+ case FLASH_SANYO_LE26FV10N1TS:
m_bits = 8;
m_size = 0x20000;
m_maker_id = 0x62;
m_device_id = 0x13;
m_sector_is_4k = true;
+ map = ADDRESS_MAP_NAME( memory_map8_1Mb );
break;
}
- m_flash_memory = auto_alloc_array( &m_machine, UINT8, m_size );
+
+ int addrbits;
+ for (addrbits = 24; addrbits > 0; addrbits--)
+ if ((m_size & (1 << addrbits)) != 0)
+ break;
+
+ m_space_config = address_space_config("flash", ENDIANNESS_BIG, m_bits, addrbits, 0, map);
+}
+
+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)
+{
+}
+
+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)
+{
+}
+
+
+//-------------------------------------------------
+// memory_space_config - return a description of
+// any address spaces owned by this device
+//-------------------------------------------------
+
+const address_space_config *intelfsh_device_config::memory_space_config(int spacenum) const
+{
+ return (spacenum == 0) ? &m_space_config : NULL;
+}
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// intelfsh_device - constructor
+//-------------------------------------------------
+
+intelfsh_device::intelfsh_device(running_machine &_machine, const intelfsh_device_config &config)
+ : device_t(_machine, config),
+ device_memory_interface(_machine, config, *this),
+ device_nvram_interface(_machine, config, *this),
+ m_config(config),
+ m_status(0x80),
+ m_erase_sector(0),
+ m_flash_mode(FM_NORMAL),
+ m_flash_master_lock(false),
+ m_timer(NULL)
+{
}
intelfsh8_device::intelfsh8_device(running_machine &_machine, const intelfsh_device_config &config)
@@ -209,7 +271,6 @@ void intelfsh_device::device_start()
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__ );
}
@@ -243,13 +304,25 @@ void intelfsh_device::nvram_default()
if (m_region != NULL)
{
UINT32 bytes = m_region->bytes();
- if (bytes > m_size)
- bytes = m_size;
- memcpy(m_flash_memory, *m_region, bytes);
+ if (bytes > m_config.m_size)
+ bytes = m_config.m_size;
+
+ if (m_config.m_bits == 8)
+ {
+ for (offs_t offs = 0; offs < bytes; offs++)
+ m_addrspace[0]->write_byte(offs, m_region->u8(offs));
+ }
+ else
+ {
+ for (offs_t offs = 0; offs < bytes; offs += 2)
+ m_addrspace[0]->write_word(offs, m_region->u16(offs / 2));
+ }
return;
}
- memset( m_flash_memory, 0xff, m_size );
+ // otherwise, default to 0xff
+ for (offs_t offs = 0; offs < m_config.m_size; offs++)
+ m_addrspace[0]->write_byte(offs, 0xff);
}
@@ -260,7 +333,11 @@ void intelfsh_device::nvram_default()
void intelfsh_device::nvram_read(mame_file &file)
{
- mame_fread(&file, m_flash_memory, m_size);
+ UINT8 *buffer = global_alloc_array(UINT8, m_config.m_size);
+ mame_fread(&file, buffer, m_config.m_size);
+ for (int byte = 0; byte < m_config.m_size; byte++)
+ m_addrspace[0]->write_byte(byte, buffer[byte]);
+ global_free(buffer);
}
@@ -271,7 +348,11 @@ void intelfsh_device::nvram_read(mame_file &file)
void intelfsh_device::nvram_write(mame_file &file)
{
- mame_fwrite(&file, m_flash_memory, m_size);
+ UINT8 *buffer = global_alloc_array(UINT8, m_config.m_size);
+ for (int byte = 0; byte < m_config.m_size; byte++)
+ buffer[byte] = m_addrspace[0]->read_byte(byte);
+ mame_fwrite(&file, buffer, m_config.m_size);
+ global_free(buffer);
}
@@ -287,18 +368,16 @@ UINT32 intelfsh_device::read_full(UINT32 address)
{
default:
case FM_NORMAL:
- switch( m_bits )
+ switch( m_config.m_bits )
{
case 8:
{
- UINT8 *flash_memory = (UINT8 *)m_flash_memory;
- data = flash_memory[ address ];
+ data = m_addrspace[0]->read_byte(address);
}
break;
case 16:
{
- UINT16 *flash_memory = (UINT16 *)m_flash_memory;
- data = flash_memory[ address ];
+ data = m_addrspace[0]->read_word(address * 2);
}
break;
}
@@ -309,8 +388,8 @@ UINT32 intelfsh_device::read_full(UINT32 address)
case FM_READAMDID3:
switch (address)
{
- case 0: data = m_maker_id; break;
- case 1: data = m_device_id; break;
+ case 0: data = m_config.m_maker_id; break;
+ case 1: data = m_config.m_device_id; break;
case 2: data = 0; break;
}
break;
@@ -318,10 +397,10 @@ UINT32 intelfsh_device::read_full(UINT32 address)
switch (address)
{
case 0: // maker ID
- data = m_maker_id;
+ data = m_config.m_maker_id;
break;
case 1: // chip ID
- data = m_device_id;
+ data = m_config.m_device_id;
break;
case 2: // block lock config
data = 0; // we don't support this yet
@@ -342,18 +421,16 @@ UINT32 intelfsh_device::read_full(UINT32 address)
// reads outside of the erasing sector return normal data
if ((address < m_erase_sector) || (address >= m_erase_sector+(64*1024)))
{
- switch( m_bits )
+ switch( m_config.m_bits )
{
case 8:
{
- UINT8 *flash_memory = (UINT8 *)m_flash_memory;
- data = flash_memory[ address ];
+ data = m_addrspace[0]->read_byte(address);
}
break;
case 16:
{
- UINT16 *flash_memory = (UINT16 *)m_flash_memory;
- data = flash_memory[ address ];
+ data = m_addrspace[0]->read_word(address * 2);
}
break;
}
@@ -506,7 +583,8 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
if( ( address & 0xfff ) == 0x555 && ( data & 0xff ) == 0x10 )
{
// chip erase
- memset( m_flash_memory, 0xff, m_size);
+ for (offs_t offs = 0; offs < m_config.m_size; offs++)
+ m_addrspace[0]->write_byte(offs, 0xff);
m_status = 1 << 3;
m_flash_mode = FM_ERASEAMD4;
@@ -517,42 +595,19 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
{
// sector erase
// clear the 4k/64k block containing the current address to all 0xffs
- switch( m_bits )
+ if (m_config.m_sector_is_4k)
{
- case 8:
- {
- UINT8 *flash_memory = (UINT8 *)m_flash_memory;
- if (m_sector_is_4k)
- {
- memset( &flash_memory[ address & ~0xfff ], 0xff, 4 * 1024 );
- m_erase_sector = address & ~0xfff;
- timer_adjust_oneshot( m_timer, ATTOTIME_IN_MSEC( 125 ), 0 );
- }
- else
- {
- memset( &flash_memory[ address & ~0xffff ], 0xff, 64 * 1024 );
- m_erase_sector = address & ~0xffff;
- timer_adjust_oneshot( m_timer, ATTOTIME_IN_SEC( 1 ), 0 );
- }
- }
- break;
- case 16:
- {
- UINT16 *flash_memory = (UINT16 *)m_flash_memory;
- if (m_sector_is_4k)
- {
- memset( &flash_memory[ address & ~0x7ff ], 0xff, 4 * 1024 );
- m_erase_sector = address & ~0x7ff;
- timer_adjust_oneshot( m_timer, ATTOTIME_IN_MSEC( 125 ), 0 );
- }
- else
- {
- memset( &flash_memory[ address & ~0x7fff ], 0xff, 64 * 1024 );
- m_erase_sector = address & ~0x7fff;
- timer_adjust_oneshot( m_timer, ATTOTIME_IN_SEC( 1 ), 0 );
- }
- }
- break;
+ for (offs_t offs = 0; offs < 4 * 1024; offs++)
+ m_addrspace[0]->write_byte((address & ~0xfff) + offs, 0xff);
+ m_erase_sector = address & ~0xfff;
+ timer_adjust_oneshot( m_timer, ATTOTIME_IN_MSEC( 125 ), 0 );
+ }
+ else
+ {
+ for (offs_t offs = 0; offs < 64 * 1024; offs++)
+ m_addrspace[0]->write_byte((address & ~0xffff) + offs, 0xff);
+ m_erase_sector = address & ~0xffff;
+ timer_adjust_oneshot( m_timer, ATTOTIME_IN_SEC( 1 ), 0 );
}
m_status = 1 << 3;
@@ -564,37 +619,34 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
}
break;
case FM_BYTEPROGRAM:
- switch( m_bits )
+ switch( m_config.m_bits )
{
case 8:
{
- UINT8 *flash_memory = (UINT8 *)m_flash_memory;
- flash_memory[ address ] = data;
+ m_addrspace[0]->write_byte(address, data);
}
break;
default:
- logerror( "FM_BYTEPROGRAM not supported when m_bits == %d\n", m_bits );
+ logerror( "FM_BYTEPROGRAM not supported when m_bits == %d\n", m_config.m_bits );
break;
}
m_flash_mode = FM_NORMAL;
break;
case FM_WRITEPART1:
- switch( m_bits )
+ switch( m_config.m_bits )
{
case 8:
{
- UINT8 *flash_memory = (UINT8 *)m_flash_memory;
- flash_memory[ address ] = data;
+ m_addrspace[0]->write_byte(address, data);
}
break;
case 16:
{
- UINT16 *flash_memory = (UINT16 *)m_flash_memory;
- flash_memory[ address ] = data;
+ m_addrspace[0]->write_word(address * 2, data);
}
break;
default:
- logerror( "FM_WRITEPART1 not supported when m_bits == %d\n", m_bits );
+ logerror( "FM_WRITEPART1 not supported when m_bits == %d\n", m_config.m_bits );
break;
}
m_status = 0x80;
@@ -604,24 +656,9 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
if( ( data & 0xff ) == 0xd0 )
{
// clear the 64k block containing the current address to all 0xffs
- switch( m_bits )
- {
- case 8:
- {
- UINT8 *flash_memory = (UINT8 *)m_flash_memory;
- memset( &flash_memory[ address & ~0xffff ], 0xff, 64 * 1024 );
- }
- break;
- case 16:
- {
- UINT16 *flash_memory = (UINT16 *)m_flash_memory;
- memset( &flash_memory[ address & ~0x7fff ], 0xff, 64 * 1024 );
- }
- break;
- default:
- logerror( "FM_CLEARPART1 not supported when m_bits == %d\n", m_bits );
- break;
- }
+ for (offs_t offs = 0; offs < 64 * 1024; offs++)
+ m_addrspace[0]->write_byte((address & ~0xffff) + offs, 0xff);
+
m_status = 0x00;
m_flash_mode = FM_READSTATUS;
diff --git a/src/emu/machine/intelfsh.h b/src/emu/machine/intelfsh.h
index eceb3fd8efb..412ce4c0ac6 100644
--- a/src/emu/machine/intelfsh.h
+++ b/src/emu/machine/intelfsh.h
@@ -55,6 +55,7 @@ class intelfsh_device;
// ======================> intelfsh_device_config
class intelfsh_device_config : public device_config,
+ public device_config_memory_interface,
public device_config_nvram_interface
{
friend class intelfsh_device;
@@ -82,14 +83,24 @@ protected:
// 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);
+ // device_config_memory_interface overrides
+ virtual const address_space_config *memory_space_config(int spacenum = 0) const;
+
// internal state
- UINT32 m_type;
+ address_space_config m_space_config;
+ UINT32 m_type;
+ INT32 m_size;
+ UINT8 m_bits;
+ UINT8 m_device_id;
+ UINT8 m_maker_id;
+ bool m_sector_is_4k;
};
// ======================> intelfsh_device
class intelfsh_device : public device_t,
+ public device_memory_interface,
public device_nvram_interface
{
friend class intelfsh_device_config;
@@ -98,16 +109,12 @@ 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
+ // device_config_nvram_interface overrides
virtual void nvram_default();
virtual void nvram_read(mame_file &file);
virtual void nvram_write(mame_file &file);
@@ -119,17 +126,11 @@ protected:
// 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;
+ UINT8 m_status;
+ INT32 m_erase_sector;
+ INT32 m_flash_mode;
+ bool m_flash_master_lock;
+ emu_timer * m_timer;
};
@@ -166,6 +167,9 @@ public:
// public interface
UINT8 read(offs_t offset) { return read_full(offset); }
void write(offs_t offset, UINT8 data) { write_full(offset, data); }
+
+ UINT8 read_raw(offs_t offset) { return m_addrspace[0]->read_byte(offset); }
+ void write_raw(offs_t offset, UINT8 data) { m_addrspace[0]->write_byte(offset, data); }
};
@@ -199,6 +203,9 @@ public:
// public interface
UINT16 read(offs_t offset) { return read_full(offset); }
void write(offs_t offset, UINT16 data) { write_full(offset, data); }
+
+ UINT16 read_raw(offs_t offset) { return m_addrspace[0]->read_word(offset * 2); }
+ void write_raw(offs_t offset, UINT16 data) { m_addrspace[0]->write_word(offset * 2, data); }
};
diff --git a/src/emu/mconfig.h b/src/emu/mconfig.h
index 0359594a95f..27e2c9ef2bb 100644
--- a/src/emu/mconfig.h
+++ b/src/emu/mconfig.h
@@ -114,7 +114,7 @@ typedef void (*memcard_handler_func)(running_machine *machine, mame_file *file
-// ======================> address_map_entry
+// ======================> machine_config
// machine configuration definition
class machine_config
diff --git a/src/mame/drivers/cps3.c b/src/mame/drivers/cps3.c
index cc1df7f0845..29a299b2db7 100644
--- a/src/mame/drivers/cps3.c
+++ b/src/mame/drivers/cps3.c
@@ -323,6 +323,7 @@ Notes:
#include "cdrom.h"
#include "cpu/sh2/sh2.h"
#include "machine/intelfsh.h"
+#include "machine/nvram.h"
#include "includes/cps3.h"
#include "machine/wd33c93.h"
@@ -337,7 +338,7 @@ Notes:
#define DMA_XOR(a) ((a) ^ NATIVE_ENDIAN_VALUE_LE_BE(1,2))
-static fujitsu_29f016a_device *flashrom[48];
+static fujitsu_29f016a_device *simm[7][8];
static UINT32* decrypted_bios;
@@ -382,6 +383,8 @@ UINT8* cps3_user5region;
#define CPS3_TRANSPARENCY_PEN_INDEX 2
#define CPS3_TRANSPARENCY_PEN_INDEX_BLEND 3
+static void copy_from_nvram(running_machine *machine);
+
INLINE void cps3_drawgfxzoom(bitmap_t *dest_bmp,const rectangle *clip,const gfx_element *gfx,
unsigned int code,unsigned int color,int flipx,int flipy,int sx,int sy,
int transparency,int transparent_color,
@@ -712,10 +715,12 @@ static DRIVER_INIT( cps3 )
// flash roms
astring tempstr;
- for (int index = 0; index < 48; index++)
- flashrom[index] = machine->device<fujitsu_29f016a_device>(tempstr.format("flash%d", index));
+ for (int simmnum = 0; simmnum < 7; simmnum++)
+ for (int chipnum = 0; chipnum < 8; chipnum++)
+ simm[simmnum][chipnum] = machine->device<fujitsu_29f016a_device>(tempstr.format("simm%d.%d", simmnum + 1, chipnum));
cps3_eeprom = auto_alloc_array(machine, UINT32, 0x400/4);
+ machine->device<nvram_device>("eeprom")->set_base(cps3_eeprom, 0x400);
}
static DRIVER_INIT( jojo ) { cps3_key1 = 0x02203ee3; cps3_key2 = 0x01301972; cps3_altEncryption = 0; DRIVER_INIT_CALL(cps3); }
@@ -1351,34 +1356,34 @@ static WRITE32_HANDLER( cram_data_w )
static READ32_HANDLER( cps3_gfxflash_r )
{
UINT32 result = 0;
- int flash1 = 8;
- int flash2 = 9;
if (cram_gfxflash_bank&1) offset += 0x200000/4;
- flash1 += cram_gfxflash_bank&0x3e;
- flash2 += cram_gfxflash_bank&0x3e;
+ fujitsu_29f016a_device *chip0 = simm[2 + cram_gfxflash_bank/8][(cram_gfxflash_bank % 8) & ~1];
+ fujitsu_29f016a_device *chip1 = simm[2 + cram_gfxflash_bank/8][(cram_gfxflash_bank % 8) | 1];
+ if (chip0 == NULL || chip1 == NULL)
+ return 0xffffffff;
if(DEBUG_PRINTF) printf("gfxflash_r\n");
if (ACCESSING_BITS_24_31) // GFX Flash 1
{
- logerror("read GFX flash chip %d addr %02x\n", flash1-8, (offset<<1));
- result |= flashrom[flash1]->read( (offset<<1) ) << 24;
+ logerror("read GFX flash chip %s addr %02x\n", chip0->tag(), (offset<<1));
+ result |= chip0->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 |= flashrom[flash2]->read( (offset<<1) ) << 16;
+ logerror("read GFX flash chip %s addr %02x\n", chip1->tag(), (offset<<1));
+ result |= chip1->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 |= flashrom[flash1]->read( (offset<<1)+0x1 ) << 8;
+ logerror("read GFX flash chip %s addr %02x\n", chip0->tag(), (offset<<1)+1);
+ result |= chip0->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 |= flashrom[flash2]->read( (offset<<1)+0x1 ) << 0;
+ logerror("read GFX flash chip %s addr %02x\n", chip1->tag(), (offset<<1)+1);
+ result |= chip1->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 );
@@ -1389,13 +1394,12 @@ static READ32_HANDLER( cps3_gfxflash_r )
static WRITE32_HANDLER( cps3_gfxflash_w )
{
int command;
- int flash1 = 8;
- int flash2 = 9;
if (cram_gfxflash_bank&1) offset += 0x200000/4;
- flash1 += cram_gfxflash_bank&0x3e;
- flash2 += cram_gfxflash_bank&0x3e;
-
+ fujitsu_29f016a_device *chip0 = simm[2 + cram_gfxflash_bank/8][(cram_gfxflash_bank % 8) & ~1];
+ fujitsu_29f016a_device *chip1 = simm[2 + cram_gfxflash_bank/8][(cram_gfxflash_bank % 8) | 1];
+ if (chip0 == NULL || chip1 == NULL)
+ return;
// if(DEBUG_PRINTF) printf("cps3_gfxflash_w %08x %08x %08x\n", offset *2, data, mem_mask);
@@ -1403,26 +1407,26 @@ static WRITE32_HANDLER( cps3_gfxflash_w )
if (ACCESSING_BITS_24_31) // GFX Flash 1
{
command = (data >> 24) & 0xff;
- logerror("write to GFX flash chip %d addr %02x cmd %02x\n", flash1-8, (offset<<1), command);
- flashrom[flash1]->write( (offset<<1), command);
+ logerror("write to GFX flash chip %s addr %02x cmd %02x\n", chip0->tag(), (offset<<1), command);
+ chip0->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);
- flashrom[flash2]->write( (offset<<1), command);
+ logerror("write to GFX flash chip %s addr %02x cmd %02x\n", chip1->tag(), (offset<<1), command);
+ chip1->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);
- flashrom[flash1]->write( (offset<<1)+0x1, command);
+ logerror("write to GFX flash chip %s addr %02x cmd %02x\n", chip0->tag(), (offset<<1)+1, command);
+ chip0->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);
- flashrom[flash2]->write( (offset<<1)+0x1, command);
+ //if ( ((offset<<1)+1) != 0x555) printf("write to GFX flash chip %s addr %02x cmd %02x\n", chip1->tag(), (offset<<1)+1, command);
+ chip1->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,15 +1434,13 @@ static WRITE32_HANDLER( cps3_gfxflash_w )
UINT32* romdata = (UINT32*)cps3_user5region;
int real_offset = 0;
UINT32 newdata;
- UINT8* ptr1 = (UINT8*)flashrom[flash1]->memory();
- UINT8* ptr2 = (UINT8*)flashrom[flash2]->memory();
real_offset = ((cram_gfxflash_bank&0x3e) * 0x200000) + offset*4;
- newdata =((ptr1[((offset*2)&0xfffffffe)+0]<<8) |
- (ptr1[((offset*2)&0xfffffffe)+1]<<24) |
- (ptr2[((offset*2)&0xfffffffe)+0]<<0) |
- (ptr2[((offset*2)&0xfffffffe)+1]<<16));
+ newdata =((chip0->read_raw(((offset*2)&0xfffffffe)+0)<<8) |
+ (chip0->read_raw(((offset*2)&0xfffffffe)+1)<<24) |
+ (chip1->read_raw(((offset*2)&0xfffffffe)+0)<<0) |
+ (chip1->read_raw(((offset*2)&0xfffffffe)+1)<<16));
// printf("flashcrap %08x %08x %08x\n", offset *2, romdata[real_offset/4], newdata);
romdata[real_offset/4] = newdata;
@@ -1447,29 +1449,32 @@ static WRITE32_HANDLER( cps3_gfxflash_w )
-static UINT32 cps3_flashmain_r(int base, UINT32 offset, UINT32 mem_mask)
+static UINT32 cps3_flashmain_r(int which, UINT32 offset, UINT32 mem_mask)
{
UINT32 result = 0;
+
+ if (simm[which][0] == NULL || simm[which][1] == NULL || simm[which][2] == NULL || simm[which][3] == NULL)
+ return 0xffffffff;
if (ACCESSING_BITS_24_31) // Flash 1
{
// logerror("read flash chip %d addr %02x\n", base+0, offset*4 );
- result |= (flashrom[base+0]->read(offset)<<24);
+ result |= (simm[which][0]->read(offset)<<24);
}
if (ACCESSING_BITS_16_23) // Flash 1
{
// logerror("read flash chip %d addr %02x\n", base+1, offset*4 );
- result |= (flashrom[base+1]->read(offset)<<16);
+ result |= (simm[which][1]->read(offset)<<16);
}
if (ACCESSING_BITS_8_15) // Flash 1
{
// logerror("read flash chip %d addr %02x\n", base+2, offset*4 );
- result |= (flashrom[base+2]->read(offset)<<8);
+ result |= (simm[which][2]->read(offset)<<8);
}
if (ACCESSING_BITS_0_7) // Flash 1
{
// logerror("read flash chip %d addr %02x\n", base+3, offset*4 );
- result |= (flashrom[base+3]->read(offset)<<0);
+ result |= (simm[which][3]->read(offset)<<0);
}
// if (base==4) logerror("read flash chips addr %02x returning %08x\n", offset*4, result );
@@ -1491,7 +1496,7 @@ static READ32_HANDLER( cps3_flash1_r )
static READ32_HANDLER( cps3_flash2_r )
{
- UINT32 retvalue = cps3_flashmain_r(4, offset,mem_mask);
+ UINT32 retvalue = cps3_flashmain_r(1, offset,mem_mask);
if (cps3_altEncryption) return retvalue;
@@ -1499,32 +1504,36 @@ static READ32_HANDLER( cps3_flash2_r )
return retvalue;
}
-static void cps3_flashmain_w(running_machine *machine, int base, UINT32 offset, UINT32 data, UINT32 mem_mask)
+static void cps3_flashmain_w(running_machine *machine, int which, UINT32 offset, UINT32 data, UINT32 mem_mask)
{
int command;
+
+ if (simm[which][0] == NULL || simm[which][1] == NULL || simm[which][2] == NULL || simm[which][3] == NULL)
+ return;
+
if (ACCESSING_BITS_24_31) // Flash 1
{
command = (data >> 24) & 0xff;
- logerror("write to flash chip %d addr %02x cmd %02x\n", base+0, offset, command);
- flashrom[base+0]->write(offset, command);
+ logerror("write to flash chip %s addr %02x cmd %02x\n", simm[which][0]->tag(), offset, command);
+ simm[which][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);
- flashrom[base+1]->write(offset, command);
+ logerror("write to flash chip %s addr %02x cmd %02x\n", simm[which][1]->tag(), offset, command);
+ simm[which][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);
- flashrom[base+2]->write(offset, command);
+ logerror("write to flash chip %s addr %02x cmd %02x\n", simm[which][2]->tag(), offset, command);
+ simm[which][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);
- flashrom[base+3]->write(offset, command);
+ logerror("write to flash chip %s addr %02x cmd %02x\n", simm[which][3]->tag(), offset, command);
+ simm[which][3]->write(offset, command);
}
/* copy data into regions to execute from */
@@ -1533,24 +1542,20 @@ 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*)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;
- if (base==4)
+ if (which==1)
{
romdata+=0x800000/4;
romdata2+=0x800000/4;
real_offset += 0x800000;
}
- newdata = (ptr1[offset]<<24) |
- (ptr2[offset]<<16) |
- (ptr3[offset]<<8) |
- (ptr4[offset]<<0);
+ newdata = (simm[which][0]->read_raw(offset)<<24) |
+ (simm[which][1]->read_raw(offset)<<16) |
+ (simm[which][2]->read_raw(offset)<<8) |
+ (simm[which][3]->read_raw(offset)<<0);
//printf("%08x %08x %08x %08x %08x\n",offset, romdata2[offset], romdata[offset], newdata, newdata^cps3_mask(0x6000000+real_offset, cps3_key1, cps3_key2) );
@@ -1566,7 +1571,7 @@ static WRITE32_HANDLER( cps3_flash1_w )
static WRITE32_HANDLER( cps3_flash2_w )
{
- cps3_flashmain_w(space->machine,4,offset,data,mem_mask);
+ cps3_flashmain_w(space->machine,1,offset,data,mem_mask);
}
static WRITE32_HANDLER( cram_gfxflash_bank_w )
@@ -2284,77 +2289,13 @@ static MACHINE_START( cps3 )
static MACHINE_RESET( cps3 )
{
current_table_address = -1;
-}
-
-
-
-
-
-static void precopy_to_flash(running_machine *machine)
-{
- UINT32* romdata = (UINT32*)cps3_user4region;
- int i;
- /* precopy program roms, ok, sfiii2 tests pass, others fail because of how the decryption affects testing */
- for (i=0;i<0x800000;i+=4)
- {
- UINT32 data;
- 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];
-
- ptr1[i/4] = (data & 0xff000000)>>24;
- ptr2[i/4] = (data & 0x00ff0000)>>16;
- ptr3[i/4] = (data & 0x0000ff00)>>8;
- ptr4[i/4] = (data & 0x000000ff)>>0;
- }
-
- for (i=0;i<0x800000;i+=4)
- {
- UINT32 data;
- 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];
-
- ptr1[i/4] = (data & 0xff000000)>>24;
- ptr2[i/4] = (data & 0x00ff0000)>>16;
- ptr3[i/4] = (data & 0x0000ff00)>>8;
- ptr4[i/4] = (data & 0x000000ff)>>0;
- }
-
- /* precopy gfx roms, good, tests pass */
- {
- UINT32 thebase, len = USER5REGION_LENGTH;
- int flashnum = 8;
- romdata = (UINT32*)cps3_user5region;
- for (thebase = 0;thebase < len/2; thebase+=0x200000)
- {
- // printf("flashnums %d. %d\n",flashnum, flashnum+1);
-
- for (i=0;i<0x200000;i+=2)
- {
- 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;
- ptr2[BYTE_XOR_LE(i+1)] = (dat&0x00ff0000)>>16;
-
- ptr1[BYTE_XOR_LE(i+0)] = (dat&0x0000ff00)>>8;
- ptr2[BYTE_XOR_LE(i+0)] = (dat&0x000000ff)>>0;
- }
- flashnum+=2;
- }
- }
+ // copy data from flashroms back into user regions + decrypt into regions we execute/draw from.
+ copy_from_nvram(machine);
}
+
// make a copy in the regions we execute code / draw gfx from
static void copy_from_nvram(running_machine *machine)
{
@@ -2365,12 +2306,8 @@ static void copy_from_nvram(running_machine *machine)
for (i=0;i<0x800000;i+=4)
{
UINT32 data;
- 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));
+ data = ((simm[0][0]->read_raw(i/4)<<24) | (simm[0][1]->read_raw(i/4)<<16) | (simm[0][2]->read_raw(i/4)<<8) | (simm[0][3]->read_raw(i/4)<<0));
// printf("%08x %08x %08x %08x\n",romdata[i/4],data, romdata2[i/4], data ^ cps3_mask(i+0x6000000, cps3_key1, cps3_key2));
romdata[i/4] = data;
@@ -2381,25 +2318,22 @@ static void copy_from_nvram(running_machine *machine)
romdata += 0x800000/4;
romdata2 += 0x800000/4;
- for (i=0;i<0x800000;i+=4)
- {
- UINT32 data;
- UINT8* ptr1 = (UINT8*)flashrom[4]->memory();
- UINT8* ptr2 = (UINT8*)flashrom[5]->memory();
- UINT8* ptr3 = (UINT8*)flashrom[6]->memory();
- UINT8* ptr4 = (UINT8*)flashrom[7]->memory();
+ if (simm[1][0] != NULL)
+ for (i=0;i<0x800000;i+=4)
+ {
+ UINT32 data;
- data = ((ptr1[i/4]<<24) | (ptr2[i/4]<<16) | (ptr3[i/4]<<8) | (ptr4[i/4]<<0));
+ data = ((simm[1][0]->read_raw(i/4)<<24) | (simm[1][1]->read_raw(i/4)<<16) | (simm[1][2]->read_raw(i/4)<<8) | (simm[1][3]->read_raw(i/4)<<0));
- // printf("%08x %08x %08x %08x\n",romdata[i/4],data, romdata2[i/4], data ^ cps3_mask(i+0x6800000, cps3_key1, cps3_key2) );
- romdata[i/4] = data;
- romdata2[i/4] = data ^ cps3_mask(i+0x6800000, cps3_key1, cps3_key2);
- }
+ // printf("%08x %08x %08x %08x\n",romdata[i/4],data, romdata2[i/4], data ^ cps3_mask(i+0x6800000, cps3_key1, cps3_key2) );
+ romdata[i/4] = data;
+ romdata2[i/4] = data ^ cps3_mask(i+0x6800000, cps3_key1, cps3_key2);
+ }
/* copy gfx from loaded flashroms to user reigon 5, where it's used */
{
UINT32 thebase, len = USER5REGION_LENGTH;
- int flashnum = 8;
+ int flashnum = 0;
int countoffset = 0;
romdata = (UINT32*)cps3_user5region;
@@ -2407,19 +2341,24 @@ static void copy_from_nvram(running_machine *machine)
{
// printf("flashnums %d. %d\n",flashnum, flashnum+1);
- for (i=0;i<0x200000;i+=2)
+ fujitsu_29f016a_device *flash0 = simm[2 + flashnum/8][flashnum % 8 + 0];
+ fujitsu_29f016a_device *flash1 = simm[2 + flashnum/8][flashnum % 8 + 1];
+ if (flash0 == NULL || flash1 == NULL)
+ continue;
+ if (flash0 != NULL && flash1 != NULL)
{
- 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) |
- (ptr2[i+1]<<16);
+ for (i=0;i<0x200000;i+=2)
+ {
+ UINT32 dat = (flash0->read_raw(i+0)<<8) |
+ (flash0->read_raw(i+1)<<24) |
+ (flash1->read_raw(i+0)<<0) |
+ (flash1->read_raw(i+1)<<16);
- //printf("%08x %08x\n",romdata[countoffset],dat);
- romdata[countoffset] = dat;
+ //printf("%08x %08x\n",romdata[countoffset],dat);
+ romdata[countoffset] = dat;
- countoffset++;
+ countoffset++;
+ }
}
flashnum+=2;
}
@@ -2444,32 +2383,6 @@ static void copy_from_nvram(running_machine *machine)
}
-static NVRAM_HANDLER( cps3 )
-{
- if (read_or_write)
- {
- //printf("read_write\n");
- mame_fwrite(file, cps3_eeprom, 0x400);
- }
- else if (file)
- {
- //printf("file\n");
- mame_fread(file, cps3_eeprom, 0x400);
-
- copy_from_nvram(machine); // copy data from flashroms back into user regions + decrypt into regions we execute/draw from.
- }
- else
- {
- //printf("nothing?\n");
- precopy_to_flash(machine); // attempt to copy data from user regions into flash roms (incase this is a NOCD set)
- copy_from_nvram(machine); // copy data from flashroms back into user regions + decrypt into regions we execute/draw from.
- }
-
-
-}
-
-
-
static int cps3_dma_callback(UINT32 src, UINT32 dst, UINT32 data, int size)
{
@@ -2533,6 +2446,69 @@ static const sh2_cpu_core sh2_conf_cps3 = {
cps3_dma_callback
};
+static MACHINE_CONFIG_FRAGMENT( simm1_64mbit )
+ MDRV_FUJITSU_29F016A_ADD("simm1.0")
+ MDRV_FUJITSU_29F016A_ADD("simm1.1")
+ MDRV_FUJITSU_29F016A_ADD("simm1.2")
+ MDRV_FUJITSU_29F016A_ADD("simm1.3")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_FRAGMENT( simm2_64mbit )
+ MDRV_FUJITSU_29F016A_ADD("simm2.0")
+ MDRV_FUJITSU_29F016A_ADD("simm2.1")
+ MDRV_FUJITSU_29F016A_ADD("simm2.2")
+ MDRV_FUJITSU_29F016A_ADD("simm2.3")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_FRAGMENT( simm3_128mbit )
+ MDRV_FUJITSU_29F016A_ADD("simm3.0")
+ MDRV_FUJITSU_29F016A_ADD("simm3.1")
+ MDRV_FUJITSU_29F016A_ADD("simm3.2")
+ MDRV_FUJITSU_29F016A_ADD("simm3.3")
+ MDRV_FUJITSU_29F016A_ADD("simm3.4")
+ MDRV_FUJITSU_29F016A_ADD("simm3.5")
+ MDRV_FUJITSU_29F016A_ADD("simm3.6")
+ MDRV_FUJITSU_29F016A_ADD("simm3.7")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_FRAGMENT( simm4_128mbit )
+ MDRV_FUJITSU_29F016A_ADD("simm4.0")
+ MDRV_FUJITSU_29F016A_ADD("simm4.1")
+ MDRV_FUJITSU_29F016A_ADD("simm4.2")
+ MDRV_FUJITSU_29F016A_ADD("simm4.3")
+ MDRV_FUJITSU_29F016A_ADD("simm4.4")
+ MDRV_FUJITSU_29F016A_ADD("simm4.5")
+ MDRV_FUJITSU_29F016A_ADD("simm4.6")
+ MDRV_FUJITSU_29F016A_ADD("simm4.7")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_FRAGMENT( simm5_128mbit )
+ MDRV_FUJITSU_29F016A_ADD("simm5.0")
+ MDRV_FUJITSU_29F016A_ADD("simm5.1")
+ MDRV_FUJITSU_29F016A_ADD("simm5.2")
+ MDRV_FUJITSU_29F016A_ADD("simm5.3")
+ MDRV_FUJITSU_29F016A_ADD("simm5.4")
+ MDRV_FUJITSU_29F016A_ADD("simm5.5")
+ MDRV_FUJITSU_29F016A_ADD("simm5.6")
+ MDRV_FUJITSU_29F016A_ADD("simm5.7")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_FRAGMENT( simm5_32mbit )
+ MDRV_FUJITSU_29F016A_ADD("simm5.0")
+ MDRV_FUJITSU_29F016A_ADD("simm5.1")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_FRAGMENT( simm6_128mbit )
+ MDRV_FUJITSU_29F016A_ADD("simm6.0")
+ MDRV_FUJITSU_29F016A_ADD("simm6.1")
+ MDRV_FUJITSU_29F016A_ADD("simm6.2")
+ MDRV_FUJITSU_29F016A_ADD("simm6.3")
+ MDRV_FUJITSU_29F016A_ADD("simm6.4")
+ MDRV_FUJITSU_29F016A_ADD("simm6.5")
+ MDRV_FUJITSU_29F016A_ADD("simm6.6")
+ MDRV_FUJITSU_29F016A_ADD("simm6.7")
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_START( cps3, driver_device )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", SH2, 6250000*4) // external clock is 6.25 Mhz, it sets the intenral multiplier to 4x (this should probably be handled in the core..)
@@ -2556,59 +2532,9 @@ 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 )
+ MDRV_NVRAM_ADD_0FILL("eeprom")
MDRV_PALETTE_LENGTH(0x10000) // actually 0x20000 ...
MDRV_VIDEO_START(cps3)
@@ -2623,6 +2549,56 @@ static MACHINE_CONFIG_START( cps3, driver_device )
MACHINE_CONFIG_END
+/* individual configs for each machine, depending on the SIMMs installed */
+MACHINE_CONFIG_DERIVED( jojo, cps3 )
+ MDRV_FRAGMENT_ADD(simm1_64mbit)
+ MDRV_FRAGMENT_ADD(simm2_64mbit)
+ MDRV_FRAGMENT_ADD(simm3_128mbit)
+ MDRV_FRAGMENT_ADD(simm4_128mbit)
+ MDRV_FRAGMENT_ADD(simm5_32mbit)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_DERIVED( jojoba, cps3 )
+ MDRV_FRAGMENT_ADD(simm1_64mbit)
+ MDRV_FRAGMENT_ADD(simm2_64mbit)
+ MDRV_FRAGMENT_ADD(simm3_128mbit)
+ MDRV_FRAGMENT_ADD(simm4_128mbit)
+ MDRV_FRAGMENT_ADD(simm5_128mbit)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_DERIVED( sfiii, cps3 )
+ MDRV_FRAGMENT_ADD(simm1_64mbit)
+ MDRV_FRAGMENT_ADD(simm3_128mbit)
+ MDRV_FRAGMENT_ADD(simm4_128mbit)
+ MDRV_FRAGMENT_ADD(simm5_32mbit)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_DERIVED( sfiii2, cps3 )
+ MDRV_FRAGMENT_ADD(simm1_64mbit)
+ MDRV_FRAGMENT_ADD(simm2_64mbit)
+ MDRV_FRAGMENT_ADD(simm3_128mbit)
+ MDRV_FRAGMENT_ADD(simm4_128mbit)
+ MDRV_FRAGMENT_ADD(simm5_128mbit)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_DERIVED( sfiii3, cps3 )
+ MDRV_FRAGMENT_ADD(simm1_64mbit)
+ MDRV_FRAGMENT_ADD(simm2_64mbit)
+ MDRV_FRAGMENT_ADD(simm3_128mbit)
+ MDRV_FRAGMENT_ADD(simm4_128mbit)
+ MDRV_FRAGMENT_ADD(simm5_128mbit)
+ MDRV_FRAGMENT_ADD(simm6_128mbit)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_DERIVED( warzard, cps3 )
+ MDRV_FRAGMENT_ADD(simm1_64mbit)
+ MDRV_FRAGMENT_ADD(simm3_128mbit)
+ MDRV_FRAGMENT_ADD(simm4_128mbit)
+ MDRV_FRAGMENT_ADD(simm5_32mbit)
+MACHINE_CONFIG_END
+
+
+
ROM_START( sfiii )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii_usa.29f400.u2", 0x000000, 0x080000, CRC(fb172a8e) SHA1(48ebf59910f246835f7dc0c588da30f7a908072f) )
@@ -2718,128 +2694,581 @@ ROM_START( sfiiin )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(73e32463) SHA1(45d144e533e4b20cc5a744ca4f618e288430c601) )
- ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "10", 0x0000000, 0x800000, CRC(e896dc27) SHA1(47623820c64b72e69417afcafaacdd2c318cde1c) )
- ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "30", 0x0000000, 0x800000, CRC(98c2d07c) SHA1(604ce4a16170847c10bc233a47a47a119ce170f7) )
- ROM_LOAD( "31", 0x0800000, 0x800000, CRC(7115a396) SHA1(b60a74259e3c223138e66e68a3f6457694a0c639) )
- ROM_LOAD( "40", 0x1000000, 0x800000, CRC(839f0972) SHA1(844e43fcc157b7c774044408bfe918c49e174cdb) )
- ROM_LOAD( "41", 0x1800000, 0x800000, CRC(8a8b252c) SHA1(9ead4028a212c689d7a25746fbd656dca6f938e8) )
- ROM_LOAD( "50", 0x2000000, 0x400000, CRC(58933dc2) SHA1(1f1723be676a817237e96b6e20263b935c59daae) )
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "sfiiin-simm1.0", 0x00000, 0x200000, CRC(cfc9e45a) SHA1(5d9061f76680642e730373e3ac29b24926dc5c0c) )
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "sfiiin-simm1.1", 0x00000, 0x200000, CRC(57920546) SHA1(c8452e7e101b8888fb806d1c9874c6be49fc7dbd) )
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "sfiiin-simm1.2", 0x00000, 0x200000, CRC(0d8f2680) SHA1(ade7b28acd11023696c4b20136f3d2f34da6b1be) )
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "sfiiin-simm1.3", 0x00000, 0x200000, CRC(ea4ca054) SHA1(f91c55c4e4fc428ce15d27be38aeed3a483d028c) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "sfiiin-simm3.0", 0x00000, 0x200000, CRC(080b3bd3) SHA1(f51bc5de95ab22b87ba09ea721285b308afd0bda) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "sfiiin-simm3.1", 0x00000, 0x200000, CRC(5c356f2f) SHA1(e969ce388f6e565d9612e65b0895560c7bb472e6) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "sfiiin-simm3.2", 0x00000, 0x200000, CRC(f9c97a45) SHA1(58a9691696c3f26a1150a451567c501f55cf1874) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "sfiiin-simm3.3", 0x00000, 0x200000, CRC(09de3ead) SHA1(2f41d84a96cb5e0d169200a4e9358ad5f407a2b7) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "sfiiin-simm3.4", 0x00000, 0x200000, CRC(7dd7e1f3) SHA1(bcf1023287457d97f09d9f6e9c93fdf24cc24a07) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "sfiiin-simm3.5", 0x00000, 0x200000, CRC(47a03a3a) SHA1(2509e5737059251888e4e1efbcdfac86a89ff1a1) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "sfiiin-simm3.6", 0x00000, 0x200000, CRC(e9eb7a26) SHA1(b8547edb7085e9149aa59d5226ad2d1976cab2bd) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "sfiiin-simm3.7", 0x00000, 0x200000, CRC(7f44395c) SHA1(f4d2e283cb3a4aad4eae4e13963a74e20be7c181) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "sfiiin-simm4.0", 0x00000, 0x200000, CRC(9ac080fc) SHA1(2e5024b35b147513ee42eda8748df9d669410377) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "sfiiin-simm4.1", 0x00000, 0x200000, CRC(6e2c4c94) SHA1(5a185cb76b5999bd826bc9b5ea584a5c3498f69d) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "sfiiin-simm4.2", 0x00000, 0x200000, CRC(8afc22d4) SHA1(04a419a3092c98fc4a7693e6acf30ae5a849e5c1) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "sfiiin-simm4.3", 0x00000, 0x200000, CRC(9f3873b8) SHA1(33499d6f02bc84c80acb56be078aaed7f8d1300d) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "sfiiin-simm4.4", 0x00000, 0x200000, CRC(166b3c97) SHA1(40e6e9d43cbbd8496b430931b8ab7db01dc1c6d5) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "sfiiin-simm4.5", 0x00000, 0x200000, CRC(e5ea2547) SHA1(a823c689098f37a3054d728bddb0033a4b8396f1) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "sfiiin-simm4.6", 0x00000, 0x200000, CRC(e85b9fdd) SHA1(264cb10fe9b3ede384c7db42bfc58ed5c21ea8f8) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "sfiiin-simm4.7", 0x00000, 0x200000, CRC(362c01b7) SHA1(9c404312a6aabe8e91e68dde193e3972bc1636cd) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "sfiiin-simm5.0", 0x00000, 0x200000, CRC(9bc108b2) SHA1(894dadab7957044bf877029c7f8e556d5d6e85d3) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "sfiiin-simm5.1", 0x00000, 0x200000, CRC(c6f1c066) SHA1(00de492dd1ef7aef05027a8c501c296b6602e917) )
ROM_END
ROM_START( sfiii2n )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii2_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(fd297c0d) SHA1(4323deda2789f104b53f32a663196ec16de73215) )
- ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "10", 0x0000000, 0x800000, CRC(682b014a) SHA1(abd5785f4b7c89584d6d1cf6fb61a77d7224f81f) )
- ROM_LOAD( "20", 0x0800000, 0x800000, CRC(38090460) SHA1(aaade89b8ccdc9154f97442ca35703ec538fe8be) )
- ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "30", 0x0000000, 0x800000, CRC(77c197c0) SHA1(944381161462e65de7ae63a656658f3fbe44727a) )
- ROM_LOAD( "31", 0x0800000, 0x800000, CRC(7470a6f2) SHA1(850b2e20afe8a5a1f0d212d9abe002cb5cf14d22) )
- ROM_LOAD( "40", 0x1000000, 0x800000, CRC(01a85ced) SHA1(802df3274d5f767636b2785606e0558f6d3b9f13) )
- ROM_LOAD( "41", 0x1800000, 0x800000, CRC(fb346d74) SHA1(57570f101a170aa7e83e84e4b7cbdc63a11a486a) )
- ROM_LOAD( "50", 0x2000000, 0x800000, CRC(32f79449) SHA1(44b1f2a640ab4abc23ff47e0edd87fbd0b345c06) )
- ROM_LOAD( "51", 0x2800000, 0x800000, CRC(1102b8eb) SHA1(c7dd2ee3a3214c6ec47a03fe3e8c941775d57f76) )
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "sfiii2n-simm1.0", 0x00000, 0x200000, CRC(2d666f0b) SHA1(68de034b3a3aeaf4b26122a84ad48b0b763e4122) )
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "sfiii2n-simm1.1", 0x00000, 0x200000, CRC(2a3a8ef6) SHA1(31fb58fd1360ed8c951e2c4ac898a5a7104528d6) )
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "sfiii2n-simm1.2", 0x00000, 0x200000, CRC(161d2206) SHA1(58999f876e64c1a088e8765962a9cd504f22a706) )
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "sfiii2n-simm1.3", 0x00000, 0x200000, CRC(87ded8a3) SHA1(4ccef64f80d2ee63940b0958b500364ee515db51) )
+
+ ROM_REGION( 0x200000, "simm2.0", 0 )
+ ROM_LOAD( "sfiii2n-simm2.0", 0x00000, 0x200000, CRC(94a4ce0f) SHA1(2c8e26a66d1dcd17c22c70baa2a3ff5a54511514) )
+ ROM_REGION( 0x200000, "simm2.1", 0 )
+ ROM_LOAD( "sfiii2n-simm2.1", 0x00000, 0x200000, CRC(67585033) SHA1(24df9968a54c330fbe95f8e4dfe6e7dfd144ed0c) )
+ ROM_REGION( 0x200000, "simm2.2", 0 )
+ ROM_LOAD( "sfiii2n-simm2.2", 0x00000, 0x200000, CRC(fabffcd5) SHA1(9399f64c42f63a64e44a21a2690e44779943a2b2) )
+ ROM_REGION( 0x200000, "simm2.3", 0 )
+ ROM_LOAD( "sfiii2n-simm2.3", 0x00000, 0x200000, CRC(623c09ca) SHA1(dc9618a08bb7f44e569ac17605d268511155a14e) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "sfiii2n-simm3.0", 0x00000, 0x200000, CRC(dab2d766) SHA1(d265cc8b1b497eb4bedd63b3f1de60eb1c1db0df) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "sfiii2n-simm3.1", 0x00000, 0x200000, CRC(1f2aa34b) SHA1(38b224d34c4550f1f33c2c368e2a252d0d176cc0) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "sfiii2n-simm3.2", 0x00000, 0x200000, CRC(6f1a04eb) SHA1(980ca929114075d1920e2da44f9a22087cc92e55) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "sfiii2n-simm3.3", 0x00000, 0x200000, CRC(e05ef205) SHA1(e604e3832549740f953581fc91e850beda6a73c8) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "sfiii2n-simm3.4", 0x00000, 0x200000, CRC(affb074f) SHA1(0e76973807039bc66fd0f3233401cea8d2c45f84) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "sfiii2n-simm3.5", 0x00000, 0x200000, CRC(6962872e) SHA1(f16b2d0792697345145d0e9d950e912a2ffabe0d) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "sfiii2n-simm3.6", 0x00000, 0x200000, CRC(6eed87de) SHA1(5d5067ad36234c5efd57a2baebeffa2f44f2caec) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "sfiii2n-simm3.7", 0x00000, 0x200000, CRC(e18f479e) SHA1(cd4c1812ab422336bfa414e0b2098b472d2f9251) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "sfiii2n-simm4.0", 0x00000, 0x200000, CRC(764c2503) SHA1(cad3f20ade2e1d3ac52f8c318443da20062ae943) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "sfiii2n-simm4.1", 0x00000, 0x200000, CRC(3e16af6e) SHA1(afde2ed4bf3a3e95035fc02c572c5b83178a9467) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "sfiii2n-simm4.2", 0x00000, 0x200000, CRC(215705e6) SHA1(42d3849f8a9242a89ba465dbc205f310186c67cd) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "sfiii2n-simm4.3", 0x00000, 0x200000, CRC(e30cbd9c) SHA1(c205101ada86154921e09fed4f6908d15ec60761) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "sfiii2n-simm4.4", 0x00000, 0x200000, CRC(4185ded9) SHA1(24bf9b5f25d7753f1feb09b82611f7482f30d304) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "sfiii2n-simm4.5", 0x00000, 0x200000, CRC(4e8db013) SHA1(6816df2b6c60005fb375530ea93bb30a960c9b01) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "sfiii2n-simm4.6", 0x00000, 0x200000, CRC(08df48ce) SHA1(e8a3b68ebeab193539446c3f6e0a19b37f1f3495) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "sfiii2n-simm4.7", 0x00000, 0x200000, CRC(bb8f80a5) SHA1(35d9e86637d54405c97fdb7da9c42cc53907cae3) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "sfiii2n-simm5.0", 0x00000, 0x200000, CRC(ebdc4787) SHA1(f86e8ebf4b2214be166dbe4ea921058a552364ea) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "sfiii2n-simm5.1", 0x00000, 0x200000, CRC(6b7c550e) SHA1(77cdabccf3ecebf142ac86dffe6e24052941e3a1) )
+ ROM_REGION( 0x200000, "simm5.2", 0 )
+ ROM_LOAD( "sfiii2n-simm5.2", 0x00000, 0x200000, CRC(56ff8c50) SHA1(16f7602a4549a5b724e3fcdb75b0f3c397077b81) )
+ ROM_REGION( 0x200000, "simm5.3", 0 )
+ ROM_LOAD( "sfiii2n-simm5.3", 0x00000, 0x200000, CRC(3f2ac3e9) SHA1(a7b631f18ce572a42f46314f37a01d9840abc765) )
+ ROM_REGION( 0x200000, "simm5.4", 0 )
+ ROM_LOAD( "sfiii2n-simm5.4", 0x00000, 0x200000, CRC(48cda50e) SHA1(35e9f27fb8b69e3b3a313ea33dc53b1102e5f66e) )
+ ROM_REGION( 0x200000, "simm5.5", 0 )
+ ROM_LOAD( "sfiii2n-simm5.5", 0x00000, 0x200000, CRC(520c0af6) SHA1(7bed1b6707974eafbfb62ccb84a51df8a100e070) )
+ ROM_REGION( 0x200000, "simm5.6", 0 )
+ ROM_LOAD( "sfiii2n-simm5.6", 0x00000, 0x200000, CRC(2edc5986) SHA1(761ab2c67d0d873ffd74158eb77f7722c076f3e3) )
+ ROM_REGION( 0x200000, "simm5.7", 0 )
+ ROM_LOAD( "sfiii2n-simm5.7", 0x00000, 0x200000, CRC(93ffa199) SHA1(33ec2379f30c6fdf47ba72c1d0cad8bdd02f17df) )
ROM_END
ROM_START( sfiii3n )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii3_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(1edc6366) SHA1(60b4b9adeb030a33059d74fdf03873029e465b52) )
- ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "10", 0x0000000, 0x800000, CRC(ba7f76b2) SHA1(6b396596dea009b34af17484919ae37eda53ec65) )
- ROM_LOAD( "20", 0x0800000, 0x800000, CRC(5ca8faba) SHA1(71c12638ae7fa38b362d68c3ccb4bb3ccd67f0e9) )
- ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "30", 0x0000000, 0x800000, CRC(b37cf960) SHA1(60310f95e4ecedee85846c08ccba71e286cda73b) )
- ROM_LOAD( "31", 0x0800000, 0x800000, CRC(450ec982) SHA1(1cb3626b8479997c4f1b29c41c81cac038fac31b) )
- ROM_LOAD( "40", 0x1000000, 0x800000, CRC(632c965f) SHA1(9a46b759f5dee35411fd6446c2457c084a6dfcd8) )
- ROM_LOAD( "41", 0x1800000, 0x800000, CRC(7a4c5f33) SHA1(f33cdfe247c7caf9d3d394499712f72ca930705e) )
- ROM_LOAD( "50", 0x2000000, 0x800000, CRC(8562358e) SHA1(8ed78f6b106659a3e4d94f38f8a354efcbdf3aa7) )
- ROM_LOAD( "51", 0x2800000, 0x800000, CRC(7baf234b) SHA1(38feb45d6315d771de5f9ae965119cb25bae2a1e) )
- ROM_LOAD( "60", 0x3000000, 0x800000, CRC(bc9487b7) SHA1(bc2cd2d3551cc20aa231bba425ff721570735eba) )
- ROM_LOAD( "61", 0x3800000, 0x800000, CRC(b813a1b1) SHA1(16de0ee3dfd6bf33d07b0ff2e797ebe2cfe6589e) )
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "sfiii3n-simm1.0", 0x00000, 0x200000, CRC(11dfd3cd) SHA1(dba1f77c46e80317e3279298411154dfb6db2309) )
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "sfiii3n-simm1.1", 0x00000, 0x200000, CRC(c50585e6) SHA1(a289237957ea1c7f58b1c65e24c54ceb34cb1712) )
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "sfiii3n-simm1.2", 0x00000, 0x200000, CRC(8e011d9b) SHA1(e0861bcd3c4f865474d7ce47aa9eeec7b3d28da6) )
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "sfiii3n-simm1.3", 0x00000, 0x200000, CRC(dca8d92f) SHA1(7cd241641c943df446e2c75b88b5cf2d2ebf7b2e) )
+
+ ROM_REGION( 0x200000, "simm2.0", 0 )
+ ROM_LOAD( "sfiii3n-simm2.0", 0x00000, 0x200000, CRC(06eb969e) SHA1(d89f6a6585b76692d57d337f0f8186398fb056da) )
+ ROM_REGION( 0x200000, "simm2.1", 0 )
+ ROM_LOAD( "sfiii3n-simm2.1", 0x00000, 0x200000, CRC(e7039f82) SHA1(8e81e66b5a4f45ae14b070a491bde47a6a74499f) )
+ ROM_REGION( 0x200000, "simm2.2", 0 )
+ ROM_LOAD( "sfiii3n-simm2.2", 0x00000, 0x200000, CRC(645c96f7) SHA1(06d5a54874d4bf100b776131ec9060da209ad037) )
+ ROM_REGION( 0x200000, "simm2.3", 0 )
+ ROM_LOAD( "sfiii3n-simm2.3", 0x00000, 0x200000, CRC(610efab1) SHA1(bbc21ed6ff6220ff6017a3f02ebd9a341fbc9040) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "sfiii3n-simm3.0", 0x00000, 0x200000, CRC(7baa1f79) SHA1(3f409df28c24dd7221966b5340d59898ea756b6f) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "sfiii3n-simm3.1", 0x00000, 0x200000, CRC(234bf8fe) SHA1(2191781ae4d726cab28de97f27efa4a13f3bdd69) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "sfiii3n-simm3.2", 0x00000, 0x200000, CRC(d9ebc308) SHA1(af6a0dca77e5181c9f20533a06760a782c5fd51d) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "sfiii3n-simm3.3", 0x00000, 0x200000, CRC(293cba77) SHA1(294604cacdc24261aec4d39e489de91c41fa1758) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "sfiii3n-simm3.4", 0x00000, 0x200000, CRC(6055e747) SHA1(3813852c5a4a5355ef739ca8f0913bbd390b984b) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "sfiii3n-simm3.5", 0x00000, 0x200000, CRC(499aa6fc) SHA1(5b9b6eab3e99ff3e1d7c1f50b9d8bc6a81f3f8a9) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "sfiii3n-simm3.6", 0x00000, 0x200000, CRC(6c13879e) SHA1(de189b0b8f42bc7dd89983e62bc2ecb4237b3277) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "sfiii3n-simm3.7", 0x00000, 0x200000, CRC(cf4f8ede) SHA1(e0fb68fcb0e445f824c62fa828d6e1dcd7e3683a) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "sfiii3n-simm4.0", 0x00000, 0x200000, CRC(091fd5ba) SHA1(3327ad7c2623c119bf728af717ea2ce3b74673a9) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "sfiii3n-simm4.1", 0x00000, 0x200000, CRC(0bca8917) SHA1(b7b284e2f16f46d46bcfaae779b232c5b980924f) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "sfiii3n-simm4.2", 0x00000, 0x200000, CRC(a0fd578b) SHA1(100c9db9f00ecd88d518076f5a0822e6ac3695b3) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "sfiii3n-simm4.3", 0x00000, 0x200000, CRC(4bf8c699) SHA1(2c0b4288b5ebc5e54d9e782dfc39eb8c78fd4c21) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "sfiii3n-simm4.4", 0x00000, 0x200000, CRC(137b8785) SHA1(56a579520a8ce2abbf36be57777f024e80474eee) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "sfiii3n-simm4.5", 0x00000, 0x200000, CRC(4fb70671) SHA1(9aba83c18cfc099a5ce18793119bff0c2b9c777f) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "sfiii3n-simm4.6", 0x00000, 0x200000, CRC(832374a4) SHA1(c84629e32fbf47cb7b5b4ee7555bfc2ac9b3857f) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "sfiii3n-simm4.7", 0x00000, 0x200000, CRC(1c88576d) SHA1(0f039944d0c2305999ed5dbd351c3eb87812dc3b) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "sfiii3n-simm5.0", 0x00000, 0x200000, CRC(c67d9190) SHA1(d265475244099d0ec153059986f3445c7bd910a3) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "sfiii3n-simm5.1", 0x00000, 0x200000, CRC(6cb79868) SHA1(c94237f30e05bfcb2e23945530c812d9e4c73416) )
+ ROM_REGION( 0x200000, "simm5.2", 0 )
+ ROM_LOAD( "sfiii3n-simm5.2", 0x00000, 0x200000, CRC(df69930e) SHA1(c76b7c559a1d5558138afbc796249efa2f49f6a8) )
+ ROM_REGION( 0x200000, "simm5.3", 0 )
+ ROM_LOAD( "sfiii3n-simm5.3", 0x00000, 0x200000, CRC(333754e0) SHA1(4c18a569c26524a492ecd6f4c8b3c8e803a077d3) )
+ ROM_REGION( 0x200000, "simm5.4", 0 )
+ ROM_LOAD( "sfiii3n-simm5.4", 0x00000, 0x200000, CRC(78f6d417) SHA1(a69577cc5399fcf0a24548661168f27f3e7e8e40) )
+ ROM_REGION( 0x200000, "simm5.5", 0 )
+ ROM_LOAD( "sfiii3n-simm5.5", 0x00000, 0x200000, CRC(8ccad9b1) SHA1(f8bda399f87be2497b7ac39e9661f9863bf4f873) )
+ ROM_REGION( 0x200000, "simm5.6", 0 )
+ ROM_LOAD( "sfiii3n-simm5.6", 0x00000, 0x200000, CRC(85de59e5) SHA1(748b5c91f15777b85d8c1d35b685cd90d3185ec6) )
+ ROM_REGION( 0x200000, "simm5.7", 0 )
+ ROM_LOAD( "sfiii3n-simm5.7", 0x00000, 0x200000, CRC(ee7e29b3) SHA1(63dc30c6904ca2f58d229249bee5eef51fafa158) )
+
+ ROM_REGION( 0x200000, "simm6.0", 0 )
+ ROM_LOAD( "sfiii3n-simm6.0", 0x00000, 0x200000, CRC(8da69042) SHA1(fd3d08295342635b2136e48d543c9350d287bb22) )
+ ROM_REGION( 0x200000, "simm6.1", 0 )
+ ROM_LOAD( "sfiii3n-simm6.1", 0x00000, 0x200000, CRC(1c8c7ac4) SHA1(ac9f8353a4c356ef98aa7c226baba00b01f5a80f) )
+ ROM_REGION( 0x200000, "simm6.2", 0 )
+ ROM_LOAD( "sfiii3n-simm6.2", 0x00000, 0x200000, CRC(a671341d) SHA1(636f4c04962bc1e1ddb29d2e01244b00389b234f) )
+ ROM_REGION( 0x200000, "simm6.3", 0 )
+ ROM_LOAD( "sfiii3n-simm6.3", 0x00000, 0x200000, CRC(1a990249) SHA1(2acc639e2c0c53bf24096b8620eab090bc25d03b) )
+ ROM_REGION( 0x200000, "simm6.4", 0 )
+ ROM_LOAD( "sfiii3n-simm6.4", 0x00000, 0x200000, CRC(20cb39ac) SHA1(7d13a0fea1ef719dd2ff77dfb547d53c6023cc9e) )
+ ROM_REGION( 0x200000, "simm6.5", 0 )
+ ROM_LOAD( "sfiii3n-simm6.5", 0x00000, 0x200000, CRC(5f844b2f) SHA1(564e4934f89ed3b92a4c4874519f8f00f3b48696) )
+ ROM_REGION( 0x200000, "simm6.6", 0 )
+ ROM_LOAD( "sfiii3n-simm6.6", 0x00000, 0x200000, CRC(450e8d28) SHA1(885db658132aa27926df617ec2d2a1f38abdbb60) )
+ ROM_REGION( 0x200000, "simm6.7", 0 )
+ ROM_LOAD( "sfiii3n-simm6.7", 0x00000, 0x200000, CRC(cc5f4187) SHA1(248ddace21ed4736a56e92f77cc6ad219d7fef0b) )
ROM_END
ROM_START( sfiii3an )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii3_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(1edc6366) SHA1(60b4b9adeb030a33059d74fdf03873029e465b52) )
- ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "10", 0x0000000, 0x800000, CRC(77233d39) SHA1(59c3f890fdc33a7d8dc91e5f9c4e7b7019acfb00) )
- ROM_LOAD( "20", 0x0800000, 0x800000, CRC(5ca8faba) SHA1(71c12638ae7fa38b362d68c3ccb4bb3ccd67f0e9) )
- ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "30", 0x0000000, 0x800000, CRC(b37cf960) SHA1(60310f95e4ecedee85846c08ccba71e286cda73b) )
- ROM_LOAD( "31", 0x0800000, 0x800000, CRC(450ec982) SHA1(1cb3626b8479997c4f1b29c41c81cac038fac31b) )
- ROM_LOAD( "40", 0x1000000, 0x800000, CRC(632c965f) SHA1(9a46b759f5dee35411fd6446c2457c084a6dfcd8) )
- ROM_LOAD( "41", 0x1800000, 0x800000, CRC(7a4c5f33) SHA1(f33cdfe247c7caf9d3d394499712f72ca930705e) )
- ROM_LOAD( "50", 0x2000000, 0x800000, CRC(8562358e) SHA1(8ed78f6b106659a3e4d94f38f8a354efcbdf3aa7) )
- ROM_LOAD( "51", 0x2800000, 0x800000, CRC(7baf234b) SHA1(38feb45d6315d771de5f9ae965119cb25bae2a1e) )
- ROM_LOAD( "60", 0x3000000, 0x800000, CRC(bc9487b7) SHA1(bc2cd2d3551cc20aa231bba425ff721570735eba) )
- ROM_LOAD( "61", 0x3800000, 0x800000, CRC(b813a1b1) SHA1(16de0ee3dfd6bf33d07b0ff2e797ebe2cfe6589e) )
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "sfiii3an-simm1.0", 0x00000, 0x200000, CRC(66e66235) SHA1(0a98038721d176458d4f85dbd76c5edb93a65322) )
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "sfiii3an-simm1.1", 0x00000, 0x200000, CRC(186e8c5f) SHA1(a63040201a660b56217a8cbab32f5c2c466ee5dd) )
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "sfiii3an-simm1.2", 0x00000, 0x200000, CRC(bce18cab) SHA1(a5c28063d98c22403756fc926a20631456fb7dcc) )
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "sfiii3an-simm1.3", 0x00000, 0x200000, CRC(129dc2c9) SHA1(c1e634d94b1c8f7f02a47703622de5cab3d0da3f) )
+
+ ROM_REGION( 0x200000, "simm2.0", 0 )
+ ROM_LOAD( "sfiii3n-simm2.0", 0x00000, 0x200000, CRC(06eb969e) SHA1(d89f6a6585b76692d57d337f0f8186398fb056da) )
+ ROM_REGION( 0x200000, "simm2.1", 0 )
+ ROM_LOAD( "sfiii3n-simm2.1", 0x00000, 0x200000, CRC(e7039f82) SHA1(8e81e66b5a4f45ae14b070a491bde47a6a74499f) )
+ ROM_REGION( 0x200000, "simm2.2", 0 )
+ ROM_LOAD( "sfiii3n-simm2.2", 0x00000, 0x200000, CRC(645c96f7) SHA1(06d5a54874d4bf100b776131ec9060da209ad037) )
+ ROM_REGION( 0x200000, "simm2.3", 0 )
+ ROM_LOAD( "sfiii3n-simm2.3", 0x00000, 0x200000, CRC(610efab1) SHA1(bbc21ed6ff6220ff6017a3f02ebd9a341fbc9040) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "sfiii3n-simm3.0", 0x00000, 0x200000, CRC(7baa1f79) SHA1(3f409df28c24dd7221966b5340d59898ea756b6f) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "sfiii3n-simm3.1", 0x00000, 0x200000, CRC(234bf8fe) SHA1(2191781ae4d726cab28de97f27efa4a13f3bdd69) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "sfiii3n-simm3.2", 0x00000, 0x200000, CRC(d9ebc308) SHA1(af6a0dca77e5181c9f20533a06760a782c5fd51d) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "sfiii3n-simm3.3", 0x00000, 0x200000, CRC(293cba77) SHA1(294604cacdc24261aec4d39e489de91c41fa1758) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "sfiii3n-simm3.4", 0x00000, 0x200000, CRC(6055e747) SHA1(3813852c5a4a5355ef739ca8f0913bbd390b984b) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "sfiii3n-simm3.5", 0x00000, 0x200000, CRC(499aa6fc) SHA1(5b9b6eab3e99ff3e1d7c1f50b9d8bc6a81f3f8a9) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "sfiii3n-simm3.6", 0x00000, 0x200000, CRC(6c13879e) SHA1(de189b0b8f42bc7dd89983e62bc2ecb4237b3277) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "sfiii3n-simm3.7", 0x00000, 0x200000, CRC(cf4f8ede) SHA1(e0fb68fcb0e445f824c62fa828d6e1dcd7e3683a) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "sfiii3n-simm4.0", 0x00000, 0x200000, CRC(091fd5ba) SHA1(3327ad7c2623c119bf728af717ea2ce3b74673a9) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "sfiii3n-simm4.1", 0x00000, 0x200000, CRC(0bca8917) SHA1(b7b284e2f16f46d46bcfaae779b232c5b980924f) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "sfiii3n-simm4.2", 0x00000, 0x200000, CRC(a0fd578b) SHA1(100c9db9f00ecd88d518076f5a0822e6ac3695b3) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "sfiii3n-simm4.3", 0x00000, 0x200000, CRC(4bf8c699) SHA1(2c0b4288b5ebc5e54d9e782dfc39eb8c78fd4c21) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "sfiii3n-simm4.4", 0x00000, 0x200000, CRC(137b8785) SHA1(56a579520a8ce2abbf36be57777f024e80474eee) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "sfiii3n-simm4.5", 0x00000, 0x200000, CRC(4fb70671) SHA1(9aba83c18cfc099a5ce18793119bff0c2b9c777f) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "sfiii3n-simm4.6", 0x00000, 0x200000, CRC(832374a4) SHA1(c84629e32fbf47cb7b5b4ee7555bfc2ac9b3857f) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "sfiii3n-simm4.7", 0x00000, 0x200000, CRC(1c88576d) SHA1(0f039944d0c2305999ed5dbd351c3eb87812dc3b) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "sfiii3n-simm5.0", 0x00000, 0x200000, CRC(c67d9190) SHA1(d265475244099d0ec153059986f3445c7bd910a3) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "sfiii3n-simm5.1", 0x00000, 0x200000, CRC(6cb79868) SHA1(c94237f30e05bfcb2e23945530c812d9e4c73416) )
+ ROM_REGION( 0x200000, "simm5.2", 0 )
+ ROM_LOAD( "sfiii3n-simm5.2", 0x00000, 0x200000, CRC(df69930e) SHA1(c76b7c559a1d5558138afbc796249efa2f49f6a8) )
+ ROM_REGION( 0x200000, "simm5.3", 0 )
+ ROM_LOAD( "sfiii3n-simm5.3", 0x00000, 0x200000, CRC(333754e0) SHA1(4c18a569c26524a492ecd6f4c8b3c8e803a077d3) )
+ ROM_REGION( 0x200000, "simm5.4", 0 )
+ ROM_LOAD( "sfiii3n-simm5.4", 0x00000, 0x200000, CRC(78f6d417) SHA1(a69577cc5399fcf0a24548661168f27f3e7e8e40) )
+ ROM_REGION( 0x200000, "simm5.5", 0 )
+ ROM_LOAD( "sfiii3n-simm5.5", 0x00000, 0x200000, CRC(8ccad9b1) SHA1(f8bda399f87be2497b7ac39e9661f9863bf4f873) )
+ ROM_REGION( 0x200000, "simm5.6", 0 )
+ ROM_LOAD( "sfiii3n-simm5.6", 0x00000, 0x200000, CRC(85de59e5) SHA1(748b5c91f15777b85d8c1d35b685cd90d3185ec6) )
+ ROM_REGION( 0x200000, "simm5.7", 0 )
+ ROM_LOAD( "sfiii3n-simm5.7", 0x00000, 0x200000, CRC(ee7e29b3) SHA1(63dc30c6904ca2f58d229249bee5eef51fafa158) )
+
+ ROM_REGION( 0x200000, "simm6.0", 0 )
+ ROM_LOAD( "sfiii3n-simm6.0", 0x00000, 0x200000, CRC(8da69042) SHA1(fd3d08295342635b2136e48d543c9350d287bb22) )
+ ROM_REGION( 0x200000, "simm6.1", 0 )
+ ROM_LOAD( "sfiii3n-simm6.1", 0x00000, 0x200000, CRC(1c8c7ac4) SHA1(ac9f8353a4c356ef98aa7c226baba00b01f5a80f) )
+ ROM_REGION( 0x200000, "simm6.2", 0 )
+ ROM_LOAD( "sfiii3n-simm6.2", 0x00000, 0x200000, CRC(a671341d) SHA1(636f4c04962bc1e1ddb29d2e01244b00389b234f) )
+ ROM_REGION( 0x200000, "simm6.3", 0 )
+ ROM_LOAD( "sfiii3n-simm6.3", 0x00000, 0x200000, CRC(1a990249) SHA1(2acc639e2c0c53bf24096b8620eab090bc25d03b) )
+ ROM_REGION( 0x200000, "simm6.4", 0 )
+ ROM_LOAD( "sfiii3n-simm6.4", 0x00000, 0x200000, CRC(20cb39ac) SHA1(7d13a0fea1ef719dd2ff77dfb547d53c6023cc9e) )
+ ROM_REGION( 0x200000, "simm6.5", 0 )
+ ROM_LOAD( "sfiii3n-simm6.5", 0x00000, 0x200000, CRC(5f844b2f) SHA1(564e4934f89ed3b92a4c4874519f8f00f3b48696) )
+ ROM_REGION( 0x200000, "simm6.6", 0 )
+ ROM_LOAD( "sfiii3n-simm6.6", 0x00000, 0x200000, CRC(450e8d28) SHA1(885db658132aa27926df617ec2d2a1f38abdbb60) )
+ ROM_REGION( 0x200000, "simm6.7", 0 )
+ ROM_LOAD( "sfiii3n-simm6.7", 0x00000, 0x200000, CRC(cc5f4187) SHA1(248ddace21ed4736a56e92f77cc6ad219d7fef0b) )
ROM_END
ROM_START( jojon )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "jojo_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(05b4f953) SHA1(c746c7bb5359acc9adced817cb4870b1912eaefd) )
- ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "10", 0x0000000, 0x800000, CRC(bc612872) SHA1(18930f2906176b54a9b8bec56f06dda3362eb418) )
- ROM_LOAD( "20", 0x0800000, 0x800000, CRC(0e1daddf) SHA1(34bb4e0fb86258095a7b20f60174453195f3735a) )
- ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "30", 0x0000000, 0x800000, CRC(1d99181b) SHA1(25c216de16cefac2d5892039ad23d07848a457e6) )
- ROM_LOAD( "31", 0x0800000, 0x800000, CRC(6889fbda) SHA1(53a51b993d319d81a604cdf70b224955eacb617e) )
- ROM_LOAD( "40", 0x1000000, 0x800000, CRC(8069f9de) SHA1(7862ee104a2e9034910dd592687b40ebe75fa9ce) )
- ROM_LOAD( "41", 0x1800000, 0x800000, CRC(9c426823) SHA1(1839dccc7943a44063e8cb2376cd566b24e8b797) )
- ROM_LOAD( "50", 0x2000000, 0x400000, CRC(1c749cc7) SHA1(23df741360476d8035c68247e645278fbab53b59) )
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "jojon-simm1.0", 0x00000, 0x200000, CRC(cfbc38d6) SHA1(c33e3a51fe8ab54e0912a1d6e662fe1ade73cee7) )
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "jojon-simm1.1", 0x00000, 0x200000, CRC(42578d94) SHA1(fa46f92ac1a6716430adec9ab27214a11fa61749) )
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "jojon-simm1.2", 0x00000, 0x200000, CRC(1b40c566) SHA1(9833799e9b4fecf7f9ce14bca64936646b3fdbde) )
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "jojon-simm1.3", 0x00000, 0x200000, CRC(bba709b4) SHA1(0dd71e575f2193505f2ab960568ac1eccf40d53f) )
+
+ ROM_REGION( 0x200000, "simm2.0", 0 )
+ ROM_LOAD( "jojon-simm2.0", 0x00000, 0x200000, CRC(417e5dc1) SHA1(54ee9596c1c51811f3bdef7dbe77b44b34f230ca) )
+ ROM_REGION( 0x200000, "simm2.1", 0 )
+ ROM_LOAD( "jojon-simm2.1", 0x00000, 0x200000, CRC(d3b3267d) SHA1(eb2cff347880f1489fb5b1b8bd16df8f50c7f494) )
+ ROM_REGION( 0x200000, "simm2.2", 0 )
+ ROM_LOAD( "jojon-simm2.2", 0x00000, 0x200000, CRC(c66d96b1) SHA1(909d5aac165748b549b6056a6091c41df012f5df) )
+ ROM_REGION( 0x200000, "simm2.3", 0 )
+ ROM_LOAD( "jojon-simm2.3", 0x00000, 0x200000, CRC(aa34cc85) SHA1(7677cc6fa913755fc699691b350698bbe8904118) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "jojon-simm3.0", 0x00000, 0x200000, CRC(de7fc9c1) SHA1(662b85a990b04c855773506c936317e62fab4a05) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "jojon-simm3.1", 0x00000, 0x200000, CRC(43d053d3) SHA1(54ff0e9c164e0d1649522c330ccc7e5d79e0bc85) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "jojon-simm3.2", 0x00000, 0x200000, CRC(2ffd7fa5) SHA1(9018c8e2b286a333ba606208e90caa764951ea3f) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "jojon-simm3.3", 0x00000, 0x200000, CRC(4da4985b) SHA1(2552b1730a21ce17d58b69a79ad212a6a5829439) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "jojon-simm3.4", 0x00000, 0x200000, CRC(fde98d72) SHA1(654563e12d033e8656dc74a268a08b15b171470d) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "jojon-simm3.5", 0x00000, 0x200000, CRC(edb2a266) SHA1(19ebada8422c7f4bf70d0c9ad42b84268967b316) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "jojon-simm3.6", 0x00000, 0x200000, CRC(be7cf319) SHA1(7893f5907992e6b903b2683980bba6d3d003bb06) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "jojon-simm3.7", 0x00000, 0x200000, CRC(56fe1a9f) SHA1(01741fe1256f4e682f687e94040f4e8bbb8bedb2) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "jojon-simm4.0", 0x00000, 0x200000, CRC(c4e7bf68) SHA1(a4d1ddea58a3d42db82a63a5e974cbf38d9b792a) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "jojon-simm4.1", 0x00000, 0x200000, CRC(b62b2719) SHA1(cb577b89e9e14fda67715716fefd47a782d518ab) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "jojon-simm4.2", 0x00000, 0x200000, CRC(18d15809) SHA1(2b406cd1aaa4799a436213dcaa65473eacb4c6d7) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "jojon-simm4.3", 0x00000, 0x200000, CRC(9af0ad79) SHA1(075ee048e17b50188876f25d7a6571d6ace84d7d) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "jojon-simm4.4", 0x00000, 0x200000, CRC(4124c1f0) SHA1(e4946a8029adc5d0bacead8d766521b4ccd1722b) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "jojon-simm4.5", 0x00000, 0x200000, CRC(5e001fd1) SHA1(6457a39f336381b46e587aa2f5f719810ee5bcf9) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "jojon-simm4.6", 0x00000, 0x200000, CRC(9affa23b) SHA1(e3d77e777c47277d841a9dadc1dd6e3157706a2e) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "jojon-simm4.7", 0x00000, 0x200000, CRC(2511572a) SHA1(725adcf71bcee5c8bb839d2d1c5e3456b8c6886b) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "jojon-simm5.0", 0x00000, 0x200000, CRC(797615fc) SHA1(29874be9f1da5515c90f5d601aa5924c263f8feb) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "jojon-simm5.1", 0x00000, 0x200000, CRC(734fd162) SHA1(16cdfac74d18a6c2216afb1ce6afbd7f15297c32) )
ROM_END
ROM_START( jojoan )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "jojo_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(05b4f953) SHA1(c746c7bb5359acc9adced817cb4870b1912eaefd) )
- ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "10", 0x0000000, 0x800000, CRC(e40dc123) SHA1(517e7006349b5a8fd6c30910362583f48d009355) )
- ROM_LOAD( "20", 0x0800000, 0x800000, CRC(0571e37c) SHA1(1aa28ef6ea1b606a55d0766480b3ee156f0bca5a) )
- ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "30", 0x0000000, 0x800000, CRC(1d99181b) SHA1(25c216de16cefac2d5892039ad23d07848a457e6) )
- ROM_LOAD( "31", 0x0800000, 0x800000, CRC(6889fbda) SHA1(53a51b993d319d81a604cdf70b224955eacb617e) )
- ROM_LOAD( "40", 0x1000000, 0x800000, CRC(8069f9de) SHA1(7862ee104a2e9034910dd592687b40ebe75fa9ce) )
- ROM_LOAD( "41", 0x1800000, 0x800000, CRC(9c426823) SHA1(1839dccc7943a44063e8cb2376cd566b24e8b797) )
- ROM_LOAD( "50", 0x2000000, 0x400000, CRC(1c749cc7) SHA1(23df741360476d8035c68247e645278fbab53b59) )
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "jojoan-simm1.0", 0x00000, 0x200000, CRC(e06ba886) SHA1(4defd5e8e1e6d0c439fed8a6454e89a59e24ea4c) )
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "jojoan-simm1.1", 0x00000, 0x200000, CRC(6dd177c8) SHA1(c39db980f6fcca9c221e9be6f777eaf38f1b136b) )
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "jojoan-simm1.2", 0x00000, 0x200000, CRC(d35a15e0) SHA1(576b92a94505764a10b9bcf82c02335e7ef62014) )
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "jojoan-simm1.3", 0x00000, 0x200000, CRC(66d865ac) SHA1(5248c3f124af62b4a672d954ef15f86629feeacb) )
+
+ ROM_REGION( 0x200000, "simm2.0", 0 )
+ ROM_LOAD( "jojoan-simm2.0", 0x00000, 0x200000, CRC(417e5dc1) SHA1(54ee9596c1c51811f3bdef7dbe77b44b34f230ca) )
+ ROM_REGION( 0x200000, "simm2.1", 0 )
+ ROM_LOAD( "jojoan-simm2.1", 0x00000, 0x200000, CRC(c891c887) SHA1(42e84f774ee655e9a39b016a3cfe94262ed2e9f1) )
+ ROM_REGION( 0x200000, "simm2.2", 0 )
+ ROM_LOAD( "jojoan-simm2.2", 0x00000, 0x200000, CRC(1e101f30) SHA1(56518c1646bb9452334856bb8bcc58892f9f93b9) )
+ ROM_REGION( 0x200000, "simm2.3", 0 )
+ ROM_LOAD( "jojoan-simm2.3", 0x00000, 0x200000, CRC(1fd1d3e4) SHA1(bed2b77d58f1fdf7ba5ca7126d3db1dd0f8c80b4) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "jojon-simm3.0", 0x00000, 0x200000, CRC(de7fc9c1) SHA1(662b85a990b04c855773506c936317e62fab4a05) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "jojon-simm3.1", 0x00000, 0x200000, CRC(43d053d3) SHA1(54ff0e9c164e0d1649522c330ccc7e5d79e0bc85) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "jojon-simm3.2", 0x00000, 0x200000, CRC(2ffd7fa5) SHA1(9018c8e2b286a333ba606208e90caa764951ea3f) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "jojon-simm3.3", 0x00000, 0x200000, CRC(4da4985b) SHA1(2552b1730a21ce17d58b69a79ad212a6a5829439) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "jojon-simm3.4", 0x00000, 0x200000, CRC(fde98d72) SHA1(654563e12d033e8656dc74a268a08b15b171470d) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "jojon-simm3.5", 0x00000, 0x200000, CRC(edb2a266) SHA1(19ebada8422c7f4bf70d0c9ad42b84268967b316) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "jojon-simm3.6", 0x00000, 0x200000, CRC(be7cf319) SHA1(7893f5907992e6b903b2683980bba6d3d003bb06) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "jojon-simm3.7", 0x00000, 0x200000, CRC(56fe1a9f) SHA1(01741fe1256f4e682f687e94040f4e8bbb8bedb2) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "jojon-simm4.0", 0x00000, 0x200000, CRC(c4e7bf68) SHA1(a4d1ddea58a3d42db82a63a5e974cbf38d9b792a) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "jojon-simm4.1", 0x00000, 0x200000, CRC(b62b2719) SHA1(cb577b89e9e14fda67715716fefd47a782d518ab) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "jojon-simm4.2", 0x00000, 0x200000, CRC(18d15809) SHA1(2b406cd1aaa4799a436213dcaa65473eacb4c6d7) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "jojon-simm4.3", 0x00000, 0x200000, CRC(9af0ad79) SHA1(075ee048e17b50188876f25d7a6571d6ace84d7d) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "jojon-simm4.4", 0x00000, 0x200000, CRC(4124c1f0) SHA1(e4946a8029adc5d0bacead8d766521b4ccd1722b) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "jojon-simm4.5", 0x00000, 0x200000, CRC(5e001fd1) SHA1(6457a39f336381b46e587aa2f5f719810ee5bcf9) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "jojon-simm4.6", 0x00000, 0x200000, CRC(9affa23b) SHA1(e3d77e777c47277d841a9dadc1dd6e3157706a2e) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "jojon-simm4.7", 0x00000, 0x200000, CRC(2511572a) SHA1(725adcf71bcee5c8bb839d2d1c5e3456b8c6886b) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "jojon-simm5.0", 0x00000, 0x200000, CRC(797615fc) SHA1(29874be9f1da5515c90f5d601aa5924c263f8feb) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "jojon-simm5.1", 0x00000, 0x200000, CRC(734fd162) SHA1(16cdfac74d18a6c2216afb1ce6afbd7f15297c32) )
ROM_END
ROM_START( jojoban )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "jojoba_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(4dab19f5) SHA1(ba07190e7662937fc267f07285c51e99a45c061e) )
- ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "10", 0x000000, 0x800000, CRC(6e2490f6) SHA1(75cbf1e39ad6362a21c937c827e492d927b7cf39) )
- ROM_LOAD( "20", 0x800000, 0x800000, CRC(1293892b) SHA1(b1beafac1a9c4b6d0640658af8a3eb359e76eb25) )
- ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "30", 0x0000000, 0x800000, CRC(d25c5005) SHA1(93a19a14783d604bb42feffbe23eb370d11281e8) )
- ROM_LOAD( "31", 0x0800000, 0x800000, CRC(51bb3dba) SHA1(39e95a05882909820b3efa6a3b457b8574012638) )
- ROM_LOAD( "40", 0x1000000, 0x800000, CRC(94dc26d4) SHA1(5ae2815142972f322886eea4885baf2b82563ab1) )
- ROM_LOAD( "41", 0x1800000, 0x800000, CRC(1c53ee62) SHA1(e096bf3cb6fbc3d45955787b8f3213abcd76d120) )
- ROM_LOAD( "50", 0x2000000, 0x800000, CRC(36e416ed) SHA1(58d0e95cc13f39bc171165468ce72f4f17b8d8d6) )
- ROM_LOAD( "51", 0x2800000, 0x800000, CRC(eedf19ca) SHA1(a7660bf9ff87911afb4f83b64456245059986830) )
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "jojoban-simm1.0", 0x00000, 0x200000, CRC(76976231) SHA1(90adde7e5983ec6a4e02789d5cefe9e85c9c52d5) )
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "jojoban-simm1.1", 0x00000, 0x200000, CRC(cedd78e7) SHA1(964988b90a2f14c1da2cfc48d943e16e54da3fd3) )
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "jojoban-simm1.2", 0x00000, 0x200000, CRC(2955b77f) SHA1(2a907a5cd91448bfc420c318584e5ef4bbe55a91) )
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "jojoban-simm1.3", 0x00000, 0x200000, CRC(280139d7) SHA1(b7c28f6f0218688fb873a3106d2f95ea2e1e927c) )
+
+ ROM_REGION( 0x200000, "simm2.0", 0 )
+ ROM_LOAD( "jojoban-simm2.0", 0x00000, 0x200000, CRC(305c4914) SHA1(c3a73ffe58f61ab8f1cd9e3f0891037638dc5a9b) )
+ ROM_REGION( 0x200000, "simm2.1", 0 )
+ ROM_LOAD( "jojoban-simm2.1", 0x00000, 0x200000, CRC(18af4f3b) SHA1(04b8fdf23a782b10c203b111cc634a6d3474044a) )
+ ROM_REGION( 0x200000, "simm2.2", 0 )
+ ROM_LOAD( "jojoban-simm2.2", 0x00000, 0x200000, CRC(397e5c9e) SHA1(021d86ee66bf951fb6a1dd90fb7007c6865cbb8b) )
+ ROM_REGION( 0x200000, "simm2.3", 0 )
+ ROM_LOAD( "jojoban-simm2.3", 0x00000, 0x200000, CRC(a9d0a7d7) SHA1(b2cfc0661f8903ddbeea8a604ee8b42097e10ab8) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "jojoban-simm3.0", 0x00000, 0x200000, CRC(4d16e111) SHA1(f198007375be65e89856d64ee2b3857a18b4eab8) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "jojoban-simm3.1", 0x00000, 0x200000, CRC(9b3406d3) SHA1(54e90cd334d13e2c74305c6b87ebce1365ef3d59) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "jojoban-simm3.2", 0x00000, 0x200000, CRC(f2414997) SHA1(fb89d5784250538ad17fd527267b513afb6eca20) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "jojoban-simm3.3", 0x00000, 0x200000, CRC(954b9c7d) SHA1(0d64d97167d4e669d7e4f3a388f9d5ec1e18ed42) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "jojoban-simm3.4", 0x00000, 0x200000, CRC(625adc1d) SHA1(533d62759ecece10c711d99bfca403e5cba279b5) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "jojoban-simm3.5", 0x00000, 0x200000, CRC(20a70bb4) SHA1(3bd8376304ffc974fb8031eac8bebff27969538c) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "jojoban-simm3.6", 0x00000, 0x200000, CRC(a10ec5af) SHA1(9b403260e8fbdacaa5369ab79fc05855cc6a6bdb) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "jojoban-simm3.7", 0x00000, 0x200000, CRC(0bd0de7a) SHA1(1debecda5f282f2a1dd17e887e522a4d00c5dc9d) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "jojoban-simm4.0", 0x00000, 0x200000, CRC(6ea14adc) SHA1(696b2ec66f3c197817a60f507a1b4c78db37f488) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "jojoban-simm4.1", 0x00000, 0x200000, CRC(8f4c42fb) SHA1(363d769b0b066ce139125426d2da6dfa15d1eb28) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "jojoban-simm4.2", 0x00000, 0x200000, CRC(ef0586d1) SHA1(8fcc350da20e3e59fa76fa14e10f2c47233ba9dc) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "jojoban-simm4.3", 0x00000, 0x200000, CRC(93ccc470) SHA1(5d267679e61c0fb592ad5f696d3c06ec1746d0b3) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "jojoban-simm4.4", 0x00000, 0x200000, CRC(3d9ec7d2) SHA1(665b867bab928be183c2006527e55f9b8ec4a271) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "jojoban-simm4.5", 0x00000, 0x200000, CRC(03e66850) SHA1(8478662dc9db20d9a186d315a883bd1cbb5e5000) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "jojoban-simm4.6", 0x00000, 0x200000, CRC(01606ac3) SHA1(ccc74edeca6abdd86fc1cf42ececa1ea393b3261) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "jojoban-simm4.7", 0x00000, 0x200000, CRC(36392b87) SHA1(e62080c8461775c1e180400dfb44414679fd0fc1) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "jojoban-simm5.0", 0x00000, 0x200000, CRC(2ef8c60c) SHA1(dea87a73a11b8edd27c3c9c5ab2af295cb5508f9) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "jojoban-simm5.1", 0x00000, 0x200000, CRC(cf7d7ca6) SHA1(b347707b1e5bc71d28b282273f893592e5f9e333) )
+ ROM_REGION( 0x200000, "simm5.2", 0 )
+ ROM_LOAD( "jojoban-simm5.2", 0x00000, 0x200000, CRC(b7815bfa) SHA1(0b5a3a2ffe1b3c0ca765dcedc297e78e5928302b) )
+ ROM_REGION( 0x200000, "simm5.3", 0 )
+ ROM_LOAD( "jojoban-simm5.3", 0x00000, 0x200000, CRC(9bfec049) SHA1(62cc9a1920047863205544b77344ee18f310f084) )
+ ROM_REGION( 0x200000, "simm5.4", 0 )
+ ROM_LOAD( "jojoban-simm5.4", 0x00000, 0x200000, CRC(d167536b) SHA1(e2637d3486f168ce44e0a00413d38960cb86db4c) )
+ ROM_REGION( 0x200000, "simm5.5", 0 )
+ ROM_LOAD( "jojoban-simm5.5", 0x00000, 0x200000, CRC(55e7a042) SHA1(c18bda61fa005d9174a27b7b7d324004262a4525) )
+ ROM_REGION( 0x200000, "simm5.6", 0 )
+ ROM_LOAD( "jojoban-simm5.6", 0x00000, 0x200000, CRC(4fb32906) SHA1(3a5965b3197517932c8aa4c07a6ea6a190a338d7) )
+ ROM_REGION( 0x200000, "simm5.7", 0 )
+ ROM_LOAD( "jojoban-simm5.7", 0x00000, 0x200000, CRC(8c8be520) SHA1(c461f3f76a83592b36b29afb316679a7c8972404) )
ROM_END
ROM_START( jojobane )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "jojoba_euro_nocd.29f400.u2", 0x000000, 0x080000, CRC(1ee2d679) SHA1(9e129b454a376606b3f7e8aec64de425cf9c635c) )
- ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "10", 0x000000, 0x800000, CRC(6e2490f6) SHA1(75cbf1e39ad6362a21c937c827e492d927b7cf39) )
- ROM_LOAD( "20", 0x800000, 0x800000, CRC(1293892b) SHA1(b1beafac1a9c4b6d0640658af8a3eb359e76eb25) )
- ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "30", 0x0000000, 0x800000, CRC(d25c5005) SHA1(93a19a14783d604bb42feffbe23eb370d11281e8) )
- ROM_LOAD( "31", 0x0800000, 0x800000, CRC(51bb3dba) SHA1(39e95a05882909820b3efa6a3b457b8574012638) )
- ROM_LOAD( "40", 0x1000000, 0x800000, CRC(94dc26d4) SHA1(5ae2815142972f322886eea4885baf2b82563ab1) )
- ROM_LOAD( "41", 0x1800000, 0x800000, CRC(1c53ee62) SHA1(e096bf3cb6fbc3d45955787b8f3213abcd76d120) )
- ROM_LOAD( "50", 0x2000000, 0x800000, CRC(36e416ed) SHA1(58d0e95cc13f39bc171165468ce72f4f17b8d8d6) )
- ROM_LOAD( "51", 0x2800000, 0x800000, CRC(eedf19ca) SHA1(a7660bf9ff87911afb4f83b64456245059986830) )
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "jojoban-simm1.0", 0x00000, 0x200000, CRC(76976231) SHA1(90adde7e5983ec6a4e02789d5cefe9e85c9c52d5) )
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "jojoban-simm1.1", 0x00000, 0x200000, CRC(cedd78e7) SHA1(964988b90a2f14c1da2cfc48d943e16e54da3fd3) )
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "jojoban-simm1.2", 0x00000, 0x200000, CRC(2955b77f) SHA1(2a907a5cd91448bfc420c318584e5ef4bbe55a91) )
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "jojoban-simm1.3", 0x00000, 0x200000, CRC(280139d7) SHA1(b7c28f6f0218688fb873a3106d2f95ea2e1e927c) )
+
+ ROM_REGION( 0x200000, "simm2.0", 0 )
+ ROM_LOAD( "jojoban-simm2.0", 0x00000, 0x200000, CRC(305c4914) SHA1(c3a73ffe58f61ab8f1cd9e3f0891037638dc5a9b) )
+ ROM_REGION( 0x200000, "simm2.1", 0 )
+ ROM_LOAD( "jojoban-simm2.1", 0x00000, 0x200000, CRC(18af4f3b) SHA1(04b8fdf23a782b10c203b111cc634a6d3474044a) )
+ ROM_REGION( 0x200000, "simm2.2", 0 )
+ ROM_LOAD( "jojoban-simm2.2", 0x00000, 0x200000, CRC(397e5c9e) SHA1(021d86ee66bf951fb6a1dd90fb7007c6865cbb8b) )
+ ROM_REGION( 0x200000, "simm2.3", 0 )
+ ROM_LOAD( "jojoban-simm2.3", 0x00000, 0x200000, CRC(a9d0a7d7) SHA1(b2cfc0661f8903ddbeea8a604ee8b42097e10ab8) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "jojoban-simm3.0", 0x00000, 0x200000, CRC(4d16e111) SHA1(f198007375be65e89856d64ee2b3857a18b4eab8) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "jojoban-simm3.1", 0x00000, 0x200000, CRC(9b3406d3) SHA1(54e90cd334d13e2c74305c6b87ebce1365ef3d59) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "jojoban-simm3.2", 0x00000, 0x200000, CRC(f2414997) SHA1(fb89d5784250538ad17fd527267b513afb6eca20) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "jojoban-simm3.3", 0x00000, 0x200000, CRC(954b9c7d) SHA1(0d64d97167d4e669d7e4f3a388f9d5ec1e18ed42) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "jojoban-simm3.4", 0x00000, 0x200000, CRC(625adc1d) SHA1(533d62759ecece10c711d99bfca403e5cba279b5) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "jojoban-simm3.5", 0x00000, 0x200000, CRC(20a70bb4) SHA1(3bd8376304ffc974fb8031eac8bebff27969538c) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "jojoban-simm3.6", 0x00000, 0x200000, CRC(a10ec5af) SHA1(9b403260e8fbdacaa5369ab79fc05855cc6a6bdb) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "jojoban-simm3.7", 0x00000, 0x200000, CRC(0bd0de7a) SHA1(1debecda5f282f2a1dd17e887e522a4d00c5dc9d) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "jojoban-simm4.0", 0x00000, 0x200000, CRC(6ea14adc) SHA1(696b2ec66f3c197817a60f507a1b4c78db37f488) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "jojoban-simm4.1", 0x00000, 0x200000, CRC(8f4c42fb) SHA1(363d769b0b066ce139125426d2da6dfa15d1eb28) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "jojoban-simm4.2", 0x00000, 0x200000, CRC(ef0586d1) SHA1(8fcc350da20e3e59fa76fa14e10f2c47233ba9dc) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "jojoban-simm4.3", 0x00000, 0x200000, CRC(93ccc470) SHA1(5d267679e61c0fb592ad5f696d3c06ec1746d0b3) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "jojoban-simm4.4", 0x00000, 0x200000, CRC(3d9ec7d2) SHA1(665b867bab928be183c2006527e55f9b8ec4a271) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "jojoban-simm4.5", 0x00000, 0x200000, CRC(03e66850) SHA1(8478662dc9db20d9a186d315a883bd1cbb5e5000) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "jojoban-simm4.6", 0x00000, 0x200000, CRC(01606ac3) SHA1(ccc74edeca6abdd86fc1cf42ececa1ea393b3261) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "jojoban-simm4.7", 0x00000, 0x200000, CRC(36392b87) SHA1(e62080c8461775c1e180400dfb44414679fd0fc1) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "jojoban-simm5.0", 0x00000, 0x200000, CRC(2ef8c60c) SHA1(dea87a73a11b8edd27c3c9c5ab2af295cb5508f9) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "jojoban-simm5.1", 0x00000, 0x200000, CRC(cf7d7ca6) SHA1(b347707b1e5bc71d28b282273f893592e5f9e333) )
+ ROM_REGION( 0x200000, "simm5.2", 0 )
+ ROM_LOAD( "jojoban-simm5.2", 0x00000, 0x200000, CRC(b7815bfa) SHA1(0b5a3a2ffe1b3c0ca765dcedc297e78e5928302b) )
+ ROM_REGION( 0x200000, "simm5.3", 0 )
+ ROM_LOAD( "jojoban-simm5.3", 0x00000, 0x200000, CRC(9bfec049) SHA1(62cc9a1920047863205544b77344ee18f310f084) )
+ ROM_REGION( 0x200000, "simm5.4", 0 )
+ ROM_LOAD( "jojoban-simm5.4", 0x00000, 0x200000, CRC(d167536b) SHA1(e2637d3486f168ce44e0a00413d38960cb86db4c) )
+ ROM_REGION( 0x200000, "simm5.5", 0 )
+ ROM_LOAD( "jojoban-simm5.5", 0x00000, 0x200000, CRC(55e7a042) SHA1(c18bda61fa005d9174a27b7b7d324004262a4525) )
+ ROM_REGION( 0x200000, "simm5.6", 0 )
+ ROM_LOAD( "jojoban-simm5.6", 0x00000, 0x200000, CRC(4fb32906) SHA1(3a5965b3197517932c8aa4c07a6ea6a190a338d7) )
+ ROM_REGION( 0x200000, "simm5.7", 0 )
+ ROM_LOAD( "jojoban-simm5.7", 0x00000, 0x200000, CRC(8c8be520) SHA1(c461f3f76a83592b36b29afb316679a7c8972404) )
ROM_END
@@ -2847,14 +3276,53 @@ ROM_START( redeartn )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "redearth_nocd.bios", 0x000000, 0x080000, NO_DUMP )
- ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "10", 0x000000, 0x800000, CRC(68188016) SHA1(93aaac08cb5566c33aabc16457085b0a36048019) )
- ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
- ROM_LOAD( "30", 0x0000000, 0x800000, CRC(074cab4d) SHA1(4cb6cc9cce3b1a932b07058a5d723b3effa23fcf) )
- ROM_LOAD( "31", 0x0800000, 0x800000, CRC(14e2cad4) SHA1(9958a4e315e4476e4791a6219b93495413c7b751) )
- ROM_LOAD( "40", 0x1000000, 0x800000, CRC(72d98890) SHA1(f40926c52cb7a71b0ef0027a0ea38bbc7e8b31b0) )
- ROM_LOAD( "41", 0x1800000, 0x800000, CRC(88ccb33c) SHA1(1e7af35d186d0b4e45b6c27458ddb9cfddd7c9bc) )
- ROM_LOAD( "50", 0x2000000, 0x400000, CRC(2f5b44bd) SHA1(7ffdbed5b6899b7e31414a0828e04543d07435e4) )
+ ROM_REGION( 0x200000, "simm1.0", 0 )
+ ROM_LOAD( "redeartn-simm1.0", 0x00000, 0x200000, CRC(cad468f8) SHA1(b3aa4f7d3fae84e8821417ccde9528d3eda2b7a6) )
+ ROM_REGION( 0x200000, "simm1.1", 0 )
+ ROM_LOAD( "redeartn-simm1.1", 0x00000, 0x200000, CRC(e9721d89) SHA1(5c63d10bdbce52d50b6dde14d4a0f1369383d656) )
+ ROM_REGION( 0x200000, "simm1.2", 0 )
+ ROM_LOAD( "redeartn-simm1.2", 0x00000, 0x200000, CRC(2889ec98) SHA1(a94310eb4777f908d87e9d90969db8504b4140ff) )
+ ROM_REGION( 0x200000, "simm1.3", 0 )
+ ROM_LOAD( "redeartn-simm1.3", 0x00000, 0x200000, CRC(5a6cd148) SHA1(d65c6e8378a91828474a16a3bbcd13c4b3b15f13) )
+
+ ROM_REGION( 0x200000, "simm3.0", 0 )
+ ROM_LOAD( "redeartn-simm3.0", 0x00000, 0x200000, CRC(83350cc5) SHA1(922b1abf80a4a89f35279b66311a7369d3965bd0) )
+ ROM_REGION( 0x200000, "simm3.1", 0 )
+ ROM_LOAD( "redeartn-simm3.1", 0x00000, 0x200000, CRC(56734de6) SHA1(75699fa6efe5bec335e4b02e15b3c45726b68fa8) )
+ ROM_REGION( 0x200000, "simm3.2", 0 )
+ ROM_LOAD( "redeartn-simm3.2", 0x00000, 0x200000, CRC(800ea0f1) SHA1(33871ab56dc1cd24441389d53e43fb8e43b149d9) )
+ ROM_REGION( 0x200000, "simm3.3", 0 )
+ ROM_LOAD( "redeartn-simm3.3", 0x00000, 0x200000, CRC(97e9146c) SHA1(ab7744709615081440bee72f4080d6fd5b938668) )
+ ROM_REGION( 0x200000, "simm3.4", 0 )
+ ROM_LOAD( "redeartn-simm3.4", 0x00000, 0x200000, CRC(0cb1d648) SHA1(7042a590c2b7ec55323062127e254da3cdc790a1) )
+ ROM_REGION( 0x200000, "simm3.5", 0 )
+ ROM_LOAD( "redeartn-simm3.5", 0x00000, 0x200000, CRC(7a1099f0) SHA1(c6a92ec86eb24485f1db530e0e78f647e8432231) )
+ ROM_REGION( 0x200000, "simm3.6", 0 )
+ ROM_LOAD( "redeartn-simm3.6", 0x00000, 0x200000, CRC(aeff8f54) SHA1(fd760e237c2e5fb2da45e32a1c12fd3defb4c3e4) )
+ ROM_REGION( 0x200000, "simm3.7", 0 )
+ ROM_LOAD( "redeartn-simm3.7", 0x00000, 0x200000, CRC(f770acd0) SHA1(4b3ccb6f91568f95f04ede6c574144918d131201) )
+
+ ROM_REGION( 0x200000, "simm4.0", 0 )
+ ROM_LOAD( "redeartn-simm4.0", 0x00000, 0x200000, CRC(301e56f2) SHA1(4847d971bff70a2aeed4599e1201c7ec9677da60) )
+ ROM_REGION( 0x200000, "simm4.1", 0 )
+ ROM_LOAD( "redeartn-simm4.1", 0x00000, 0x200000, CRC(2048e103) SHA1(b21f95b05cd99749bd3f25cc71b2671c2026847b) )
+ ROM_REGION( 0x200000, "simm4.2", 0 )
+ ROM_LOAD( "redeartn-simm4.2", 0x00000, 0x200000, CRC(c9433455) SHA1(63a269d76bac332c2e991d0f6a20c35e0e88680a) )
+ ROM_REGION( 0x200000, "simm4.3", 0 )
+ ROM_LOAD( "redeartn-simm4.3", 0x00000, 0x200000, CRC(c02171a8) SHA1(2e9228729b27a6113d9f2e42af310a834979f714) )
+ ROM_REGION( 0x200000, "simm4.4", 0 )
+ ROM_LOAD( "redeartn-simm4.4", 0x00000, 0x200000, CRC(2ddbf276) SHA1(b232baaa8edc8db18f8a3bdcc2d38fe984a94a34) )
+ ROM_REGION( 0x200000, "simm4.5", 0 )
+ ROM_LOAD( "redeartn-simm4.5", 0x00000, 0x200000, CRC(fea820a6) SHA1(55ee8ef95751f5a509fb126513e1b2a70a3414e5) )
+ ROM_REGION( 0x200000, "simm4.6", 0 )
+ ROM_LOAD( "redeartn-simm4.6", 0x00000, 0x200000, CRC(c7528df1) SHA1(aa312f80c2d7759d18d1aa8d416cf932b2850824) )
+ ROM_REGION( 0x200000, "simm4.7", 0 )
+ ROM_LOAD( "redeartn-simm4.7", 0x00000, 0x200000, CRC(2449cf3b) SHA1(c60d8042136d74e547f668ad787cae529c42eed9) )
+
+ ROM_REGION( 0x200000, "simm5.0", 0 )
+ ROM_LOAD( "redeartn-simm5.0", 0x00000, 0x200000, CRC(424451b9) SHA1(250fb92254c9e7ff5bc8dbeea5872f8a771dc9bd) )
+ ROM_REGION( 0x200000, "simm5.1", 0 )
+ ROM_LOAD( "redeartn-simm5.1", 0x00000, 0x200000, CRC(9b8cb56b) SHA1(2ff1081dc99bb7c2f1e036f4c112137c96b83d23) )
ROM_END
@@ -3003,37 +3471,37 @@ ROM_END
/* todo: use BIOS for the bios roms, having clones only for CD / No CD */
-GAME( 1997, sfiii, 0, cps3, cps3, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (USA, 970204)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1997, sfiiij, sfiii, cps3, cps3, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Japan, 970204)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiii, 0, sfiii, cps3, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (USA, 970204)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiiij, sfiii, sfiii, cps3, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Japan, 970204)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1997, sfiii2, 0, cps3, cps3, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (USA, 970930)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1997, sfiii2j, sfiii2, cps3, cps3, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Japan, 970930)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiii2, 0, sfiii2, cps3, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (USA, 970930)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiii2j, sfiii2, sfiii2, cps3, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Japan, 970930)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, sfiii3, 0, cps3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA, 990608)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, sfiii3a, sfiii3, cps3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA, 990512)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, sfiii3, 0, sfiii3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA, 990608)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, sfiii3a, sfiii3, sfiii3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA, 990512)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, jojo, 0, cps3, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Japan, 990108)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, jojoa, jojo, cps3, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Japan, 981202)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1998, jojo, 0, jojo, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Japan, 990108)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1998, jojoa, jojo, jojo, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Japan, 981202)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, jojoba, 0, cps3, cps3, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Japan, 990913)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, jojoba, 0, jojoba, cps3, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Japan, 990913)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1996, redearth,0, cps3, cps3, redearth, ROT0, "Capcom", "Red Earth (Euro, 961121)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1996, warzard, redearth, cps3, cps3, redearth, ROT0, "Capcom", "Warzard (Japan, 961121)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1996, redearth,0, warzard, cps3, redearth, ROT0, "Capcom", "Red Earth (Euro, 961121)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1996, warzard, redearth, warzard, cps3, redearth, ROT0, "Capcom", "Warzard (Japan, 961121)", GAME_IMPERFECT_GRAPHICS )
/* NO-CD sets */
-GAME( 1997, sfiiin, sfiii, cps3, cps3, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia, 970204, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiiin, sfiii, sfiii, cps3, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia, 970204, NO CD)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1997, sfiii2n, sfiii2, cps3, cps3, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Asia, 970930, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiii2n, sfiii2, sfiii2, cps3, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Asia, 970930, NO CD)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, sfiii3n, sfiii3, cps3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan, 990608, NO CD)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, sfiii3an,sfiii3, cps3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan, 990512, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, sfiii3n, sfiii3, sfiii3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan, 990608, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, sfiii3an,sfiii3, sfiii3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan, 990512, NO CD)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, jojon, jojo, cps3, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Asia, 990108, NO CD)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, jojoan, jojo, cps3, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Asia, 981202, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1998, jojon, jojo, jojo, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Asia, 990108, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1998, jojoan, jojo, jojo, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Asia, 981202, NO CD)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, jojoban, jojoba, cps3, cps3, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Japan, 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, jojobane,jojoba, cps3, cps3, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Euro, 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, jojoban, jojoba, jojoba, cps3, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Japan, 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, jojobane,jojoba, jojoba, cps3, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Euro, 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
// We don't have any actual warzard / red earth no cd bios sets, but keep this here anyway
-GAME( 1996, redeartn,redearth, cps3, cps3, redearth, ROT0, "Capcom", "Red Earth (961121, NO CD)", GAME_NOT_WORKING )
+GAME( 1996, redeartn,redearth, warzard, cps3, redearth, ROT0, "Capcom", "Red Earth (961121, NO CD)", GAME_NOT_WORKING )