summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--.gitattributes4
-rw-r--r--src/emu/addrmap.h4
-rw-r--r--src/mame/drivers/chihiro.c4
-rw-r--r--src/mame/drivers/naomi.c2521
-rw-r--r--src/mame/drivers/triforce.c4
-rw-r--r--src/mame/includes/naomi.h2
-rw-r--r--src/mame/includes/naomibd.h101
-rw-r--r--src/mame/machine/awboard.c330
-rw-r--r--src/mame/machine/awboard.h61
-rw-r--r--src/mame/machine/dc.c65
-rw-r--r--src/mame/machine/gdcrypt.c383
-rw-r--r--src/mame/machine/maple-dc.c1
-rw-r--r--src/mame/machine/naomibd.c2187
-rw-r--r--src/mame/machine/naomibd.h57
-rw-r--r--src/mame/machine/naomig1.c257
-rw-r--r--src/mame/machine/naomig1.h67
-rw-r--r--src/mame/machine/naomigd.c515
-rw-r--r--src/mame/machine/naomigd.h61
-rw-r--r--src/mame/machine/naomim1.c223
-rw-r--r--src/mame/machine/naomim1.h56
-rw-r--r--src/mame/machine/naomim2.c839
-rw-r--r--src/mame/machine/naomim2.h73
-rw-r--r--src/mame/machine/naomim4.c165
-rw-r--r--src/mame/machine/naomim4.h47
-rwxr-xr-xsrc/mame/machine/naomim4decoder.c73
-rwxr-xr-xsrc/mame/machine/naomim4decoder.h46
-rw-r--r--src/mame/machine/naomirom.c40
-rw-r--r--src/mame/machine/naomirom.h28
-rw-r--r--src/mame/mame.mak6
29 files changed, 4115 insertions, 4105 deletions
diff --git a/.gitattributes b/.gitattributes
index b298073ad42..c77c8ed881f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3323,7 +3323,6 @@ src/mame/includes/namcos21.h svneol=native#text/plain
src/mame/includes/namcos22.h svneol=native#text/plain
src/mame/includes/namcos86.h svneol=native#text/plain
src/mame/includes/naomi.h svneol=native#text/plain
-src/mame/includes/naomibd.h svneol=native#text/plain
src/mame/includes/naughtyb.h svneol=native#text/plain
src/mame/includes/nb1413m3.h svneol=native#text/plain
src/mame/includes/nb1414m4.h svneol=native#text/plain
@@ -3861,7 +3860,6 @@ src/mame/machine/gaelco3d.h svneol=native#text/plain
src/mame/machine/gaelcrpt.c svneol=native#text/plain
src/mame/machine/galaxold.c svneol=native#text/plain
src/mame/machine/gaplus.c svneol=native#text/plain
-src/mame/machine/gdcrypt.c svneol=native#text/plain
src/mame/machine/gdrom.c svneol=native#text/plain
src/mame/machine/gdrom.h svneol=native#text/plain
src/mame/machine/harddriv.c svneol=native#text/plain
@@ -3944,8 +3942,6 @@ src/mame/machine/naomim2.c svneol=native#text/plain
src/mame/machine/naomim2.h svneol=native#text/plain
src/mame/machine/naomim4.c svneol=native#text/plain
src/mame/machine/naomim4.h svneol=native#text/plain
-src/mame/machine/naomim4decoder.c svneol=native#text/plain
-src/mame/machine/naomim4decoder.h svneol=native#text/plain
src/mame/machine/naomirom.c svneol=native#text/plain
src/mame/machine/naomirom.h svneol=native#text/plain
src/mame/machine/nb1413m3.c svneol=native#text/plain
diff --git a/src/emu/addrmap.h b/src/emu/addrmap.h
index ae9e1de27ff..846bbba0066 100644
--- a/src/emu/addrmap.h
+++ b/src/emu/addrmap.h
@@ -804,6 +804,10 @@ void _class :: _name(address_map &map, const device_t &device) \
#define AM_IMPORT_FROM(_name) \
ADDRESS_MAP_NAME(_name)(map, device); \
+// importing data from inherited address maps
+#define AM_INHERIT_FROM(_name) \
+ _name(map, device); \
+
// address ranges
#define AM_RANGE(_start, _end) \
diff --git a/src/mame/drivers/chihiro.c b/src/mame/drivers/chihiro.c
index 3c17a9cc015..fc82e82dc7a 100644
--- a/src/mame/drivers/chihiro.c
+++ b/src/mame/drivers/chihiro.c
@@ -362,7 +362,7 @@ Thanks to Alex, Mr Mudkips, and Philip Burke for this info.
#include "emu.h"
#include "cpu/i386/i386.h"
#include "machine/pci.h"
-#include "includes/naomibd.h"
+#include "machine/naomigd.h"
#include "debug/debugcon.h"
#include "debug/debugcmd.h"
@@ -661,7 +661,7 @@ static MACHINE_CONFIG_START( chihiro_base, driver_device )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( chihirogd, chihiro_base )
- MCFG_NAOMI_DIMM_BOARD_ADD("rom_board", "gdrom", NULL, 512, "picreturn")
+ MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", "gdrom", "picreturn", NULL, "maincpu", NULL)
MACHINE_CONFIG_END
#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \
diff --git a/src/mame/drivers/naomi.c b/src/mame/drivers/naomi.c
index 9f34d2aef4a..c3a0180e87d 100644
--- a/src/mame/drivers/naomi.c
+++ b/src/mame/drivers/naomi.c
@@ -1386,7 +1386,12 @@ Sega Bass Fishing Challenge
#include "machine/maple-dc.h"
#include "machine/dc-ctrl.h"
#include "machine/mie.h"
-#include "includes/naomibd.h"
+#include "machine/naomirom.h"
+#include "machine/naomigd.h"
+#include "machine/naomim1.h"
+#include "machine/naomim2.h"
+#include "machine/naomim4.h"
+#include "machine/awboard.h"
#include "includes/naomi.h"
#include "cpu/sh4/sh4.h"
#include "cpu/arm7/arm7core.h"
@@ -1540,8 +1545,8 @@ static ADDRESS_MAP_START( naomi_map, AS_PROGRAM, 64 )
AM_RANGE(0x00200000, 0x00207fff) AM_MIRROR(0x02000000) AM_RAM // bios uses it (battery backed ram ?)
AM_RANGE(0x005f6800, 0x005f69ff) AM_MIRROR(0x02000000) AM_READWRITE( dc_sysctrl_r, dc_sysctrl_w )
AM_RANGE(0x005f6c00, 0x005f6cff) AM_MIRROR(0x02000000) AM_DEVICE32( "maple_dc", maple_dc_device, amap, U64(0xffffffffffffffff) )
- AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVREADWRITE("rom_board", naomibd_r, naomibd_w)
- AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_READWRITE( dc_g1_ctrl_r, dc_g1_ctrl_w )
+ AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVICE16( "rom_board", naomi_board, submap, U64(0x0000ffff0000ffff) )
+ AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_DEVICE32( "rom_board", naomi_g1_device, amap, U64(0xffffffffffffffff) )
AM_RANGE(0x005f7800, 0x005f78ff) AM_MIRROR(0x02000000) AM_READWRITE( dc_g2_ctrl_r, dc_g2_ctrl_w )
AM_RANGE(0x005f7c00, 0x005f7cff) AM_MIRROR(0x02000000) AM_READWRITE( pvr_ctrl_r, pvr_ctrl_w )
AM_RANGE(0x005f8000, 0x005f9fff) AM_MIRROR(0x02000000) AM_READWRITE( pvr_ta_r, pvr_ta_w )
@@ -1590,14 +1595,10 @@ static ADDRESS_MAP_START( naomi2_map, AS_PROGRAM, 64 )
AM_RANGE(0x00000000, 0x001fffff) AM_MIRROR(0xa2000000) AM_ROM AM_REGION("maincpu", 0) // BIOS
AM_RANGE(0x00200000, 0x00207fff) AM_MIRROR(0x02000000) AM_RAM // bios uses it (battery backed ram ?)
- AM_RANGE(0x005f6800, 0x005f69ff) AM_READWRITE( dc_sysctrl_r, dc_sysctrl_w )
- AM_RANGE(0x005f6c00, 0x005f6c07) AM_MIRROR(0x02000000) AM_DEVREADWRITE32_MODERN( "maple_dc", maple_dc_device, sb_mdstar_r, sb_mdstar_w, U64(0xffffffff00000000) )
- AM_RANGE(0x005f6c10, 0x005f6c17) AM_MIRROR(0x02000000) AM_DEVREADWRITE32_MODERN( "maple_dc", maple_dc_device, sb_mden_r, sb_mden_w, U64(0xffffffff00000000) )
- AM_RANGE(0x005f6c18, 0x005f6c1f) AM_MIRROR(0x02000000) AM_DEVREADWRITE32_MODERN( "maple_dc", maple_dc_device, sb_mdst_r, sb_mdst_w, U64(0x00000000ffffffff) )
- AM_RANGE(0x005f6c80, 0x005f6c87) AM_MIRROR(0x02000000) AM_DEVREADWRITE32_MODERN( "maple_dc", maple_dc_device, sb_msys_r, sb_msys_w, U64(0x00000000ffffffff) )
- AM_RANGE(0x005f6c88, 0x005f6c8f) AM_MIRROR(0x02000000) AM_DEVWRITE32_MODERN( "maple_dc", maple_dc_device, sb_mdapro_w, U64(0xffffffff00000000) )
- AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVREADWRITE("rom_board", naomibd_r, naomibd_w)
- AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_READWRITE( dc_g1_ctrl_r, dc_g1_ctrl_w )
+ AM_RANGE(0x005f6800, 0x005f69ff) AM_MIRROR(0x02000000) AM_READWRITE( dc_sysctrl_r, dc_sysctrl_w )
+ AM_RANGE(0x005f6c00, 0x005f6cff) AM_MIRROR(0x02000000) AM_DEVICE32( "maple_dc", maple_dc_device, amap, U64(0xffffffffffffffff) )
+ AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVICE16( "rom_board", naomi_board, submap, U64(0x0000ffff0000ffff) )
+ AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_DEVICE32( "rom_board", naomi_g1_device, amap, U64(0xffffffffffffffff) )
AM_RANGE(0x005f7800, 0x005f78ff) AM_MIRROR(0x02000000) AM_READWRITE( dc_g2_ctrl_r, dc_g2_ctrl_w )
AM_RANGE(0x005f7c00, 0x005f7cff) AM_READWRITE( pvr_ctrl_r, pvr_ctrl_w )
AM_RANGE(0x005f8000, 0x005f9fff) AM_READWRITE( pvr_ta_r, pvr_ta_w )
@@ -1647,6 +1648,7 @@ static ADDRESS_MAP_START( naomi2_map, AS_PROGRAM, 64 )
//AM_RANGE(0x1c000000, 0x1fffffff) AM_NOP // SH4 Internal
ADDRESS_MAP_END
+
static ADDRESS_MAP_START( naomi_port, AS_IO, 64 )
AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("main_eeprom", eeprom_93c46a_r, eeprom_93c46a_w)
ADDRESS_MAP_END
@@ -1748,8 +1750,8 @@ static ADDRESS_MAP_START( aw_map, AS_PROGRAM, 64 )
AM_RANGE(0x00200000, 0x0021ffff) AM_RAM // battery backed up RAM
AM_RANGE(0x005f6800, 0x005f69ff) AM_READWRITE( dc_sysctrl_r, dc_sysctrl_w )
AM_RANGE(0x005f6c00, 0x005f6cff) AM_MIRROR(0x02000000) AM_DEVICE32( "maple_dc", maple_dc_device, amap, U64(0xffffffffffffffff) )
- AM_RANGE(0x005f7000, 0x005f70ff) AM_DEVREADWRITE("rom_board", naomibd_r, naomibd_w)
- AM_RANGE(0x005f7400, 0x005f74ff) AM_READWRITE( dc_g1_ctrl_r, dc_g1_ctrl_w )
+ AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVICE16( "rom_board", aw_rom_board, submap, U64(0x0000ffff0000ffff) )
+ AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_DEVICE32( "rom_board", naomi_g1_device, amap, U64(0xffffffffffffffff) )
AM_RANGE(0x005f7800, 0x005f78ff) AM_READWRITE( dc_g2_ctrl_r, dc_g2_ctrl_w )
AM_RANGE(0x005f7c00, 0x005f7cff) AM_READWRITE( pvr_ctrl_r, pvr_ctrl_w )
AM_RANGE(0x005f8000, 0x005f9fff) AM_READWRITE( pvr_ta_r, pvr_ta_w )
@@ -2485,7 +2487,7 @@ static MACHINE_RESET( naomi )
* Common for Naomi 1, Naomi GD-Rom, Naomi 2, Atomiswave ...
*/
-static MACHINE_CONFIG_START( naomi_base, driver_device )
+static MACHINE_CONFIG_START( naomi_aw_base, driver_device )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", SH4, CPU_CLOCK) // SH4!!!
MCFG_CPU_CONFIG(sh4cpu_config)
@@ -2523,30 +2525,52 @@ static MACHINE_CONFIG_START( naomi_base, driver_device )
MCFG_SOUND_ROUTE(1, "rspeaker", 2.0)
MACHINE_CONFIG_END
-/*
- * Naomi 1
- */
-
-static MACHINE_CONFIG_DERIVED( naomi, naomi_base )
+static MACHINE_CONFIG_DERIVED( naomi_base, naomi_aw_base )
MCFG_MIE_ADD("mie", 4000000, "maple_dc", 0, 0, 0, 0, "MIE:3", 0, "MIE:5", 0, 0) // Actual frequency unknown
MCFG_SEGA_837_13551_DEVICE_ADD("837_13551", "mie", "TILT", "P1", "P2", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "OUTPUT")
MCFG_EEPROM_93C46_8BIT_ADD("mie_eeprom")
- MCFG_NAOMI_ROM_BOARD_ADD("rom_board", "user1")
MCFG_X76F100_ADD("naomibd_eeprom")
MACHINE_CONFIG_END
/*
+ * Naomi 1, unprotected ROM sub-board
+ */
+
+static MACHINE_CONFIG_DERIVED( naomi, naomi_base )
+ MCFG_NAOMI_ROM_BOARD_ADD("rom_board", "naomibd_eeprom", "maincpu", naomi_g1_irq)
+MACHINE_CONFIG_END
+
+/*
* Naomi 1 GD-Rom
*/
static MACHINE_CONFIG_DERIVED( naomigd, naomi_base )
- MCFG_MIE_ADD("mie", 4000000, "maple_dc", 0, 0, 0, 0, "MIE:3", 0, "MIE:5", 0, 0) // Actual frequency unknown
- MCFG_SEGA_837_13551_DEVICE_ADD("837_13551", "mie", "TILT", "P1", "P2", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "OUTPUT")
- MCFG_EEPROM_93C46_8BIT_ADD("mie_eeprom")
+ MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", "gdrom", "pic", "naomibd_eeprom", "maincpu", naomi_g1_irq)
+MACHINE_CONFIG_END
- MCFG_NAOMI_DIMM_BOARD_ADD("rom_board", "gdrom", NULL, 512, "picreturn")
- MCFG_X76F100_ADD("naomibd_eeprom")
+/*
+ * Naomi 1, M1 sub-board
+ */
+
+static MACHINE_CONFIG_DERIVED( naomim1, naomi_base )
+ MCFG_NAOMI_M1_BOARD_ADD("rom_board", "rom_key", "naomibd_eeprom", "maincpu", naomi_g1_irq)
+MACHINE_CONFIG_END
+
+/*
+ * Naomi 1, M2/3 sub-board
+ */
+
+static MACHINE_CONFIG_DERIVED( naomim2, naomi_base )
+ MCFG_NAOMI_M2_BOARD_ADD("rom_board", "rom_key", "naomibd_eeprom", "maincpu", naomi_g1_irq)
+MACHINE_CONFIG_END
+
+/*
+ * Naomi 1, M4 sub-board
+ */
+
+static MACHINE_CONFIG_DERIVED( naomim4, naomi_base )
+ MCFG_NAOMI_M4_BOARD_ADD("rom_board", "rom_key", "naomibd_eeprom", "maincpu", naomi_g1_irq)
MACHINE_CONFIG_END
/*
@@ -2568,16 +2592,32 @@ static MACHINE_CONFIG_DERIVED( naomi2gd, naomigd )
MACHINE_CONFIG_END
/*
+ * Naomi 2, M1 sub-board
+ */
+
+static MACHINE_CONFIG_DERIVED( naomi2m1, naomim1 )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(naomi2_map)
+MACHINE_CONFIG_END
+
+/*
+ * Naomi 2, M2/3 sub-board
+ */
+
+static MACHINE_CONFIG_DERIVED( naomi2m2, naomim2 )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(naomi2_map)
+MACHINE_CONFIG_END
+
+/*
* Atomiswave
*/
-static MACHINE_CONFIG_DERIVED( aw_base, naomi_base )
-// MCFG_DEVICE_REMOVE("main_eeprom")
+static MACHINE_CONFIG_DERIVED( aw_base, naomi_aw_base )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(aw_map)
MCFG_MACRONIX_29L001MC_ADD("awflash")
- MCFG_AW_ROM_BOARD_ADD("rom_board", "user1")
- MCFG_X76F100_ADD("naomibd_eeprom")
+ MCFG_AW_ROM_BOARD_ADD("rom_board", "rom_key", "maincpu", naomi_g1_irq)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( aw1c, aw_base )
@@ -2674,6 +2714,7 @@ Scan ROM for the text string "LOADING TEST MODE NOW" back up four (4) bytes for
// game specific bios roms quite clearly don't belong in here.
// Japan bios is default, because most games require it.
#define NAOMI_BIOS \
+ ROM_REGION( 0x200000, "maincpu", 0) \
ROM_SYSTEM_BIOS( 0, "bios0", "epr-21576h (Japan)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-21576h.ic27", 0x000000, 0x200000, CRC(d4895685) SHA1(91424d481ff99a8d3f4c45cea6d3f0eada049a6d) ) \
ROM_SYSTEM_BIOS( 1, "bios1", "epr-21576g (Japan)" ) \
@@ -2707,18 +2748,21 @@ Scan ROM for the text string "LOADING TEST MODE NOW" back up four (4) bytes for
// bios for House of the Dead 2
#define HOTD2_BIOS \
+ ROM_REGION( 0x200000, "maincpu", 0) \
ROM_SYSTEM_BIOS( 0, "bios0", "HOTD2 (Export)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-21331.ic27", 0x000000, 0x200000, CRC(065f8500) SHA1(49a3881e8d76f952ef5e887200d77b4a415d47fe) ) \
ROM_SYSTEM_BIOS( 1, "bios1", "HOTD2 (USA)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-21330.ic27", 0x000000, 0x200000, CRC(9e3bfa1b) SHA1(b539d38c767b0551b8e7956c1ff795de8bbe2fbc) )
#define F355_BIOS \
+ ROM_REGION( 0x200000, "maincpu", 0) \
ROM_SYSTEM_BIOS( 0, "bios0", "Ferrari F355 (Export)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-22851.ic27", 0x000000, 0x200000, CRC(62483677) SHA1(3e3bcacf5f972c376b569f45307ee7fd0b5031b7) ) \
ROM_SYSTEM_BIOS( 1, "bios1", "Ferrari F355 (USA)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-22850.ic27", 0x000000, 0x200000, CRC(28aa539d) SHA1(14485368656af80504b212da620179c49f84c1a2) )
#define AIRLINE_BIOS \
+ ROM_REGION( 0x200000, "maincpu", 0) \
ROM_SYSTEM_BIOS( 0, "bios0", "Airline Pilots Deluxe (Export)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-21802.ic27", 0x000000, 0x200000, CRC(a77c6b1c) SHA1(bd50a6bb8fa9bac121b076e21ea048a83a240a48) ) \
ROM_SYSTEM_BIOS( 1, "bios1", "Airline Pilots Deluxe (USA)" ) \
@@ -2807,6 +2851,7 @@ Region byte encoding is as follows:
/* First half is BIOS, second half is game settings and is blanked/reprogrammed by the BIOS as necessary */
#define AW_BIOS \
+ ROM_REGION( 0x200000, "awflash", 0) \
ROM_SYSTEM_BIOS( 0, "bios0", "Atomiswave BIOS" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 0, "bios.ic23_l", 0x000000, 0x010000, BAD_DUMP CRC(e5693ce3) SHA1(1bde3ed87af64b0f675ebd47f12a53e1fc5709c1) ) /* Might be bad.. especially. bytes 0x0000, 0x6000, 0x8000 which gave different reads */ \
@@ -2823,56 +2868,51 @@ Region byte encoding is as follows:
ROM_LOAD16_WORD("eeprom-naomi-main-default.bin", 0x0000, 0x0080, CRC(fea29cbb) SHA1(4099f1747aafa07db34f6e072cd9bfaa83bae10e) )
ROM_START( naomi )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8400000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x8400000, "rom_board", ROMREGION_ERASE)
ROM_END
ROM_START( naomigd )
NAOMIGD_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8400000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x8400000, "rom_board", ROMREGION_ERASE)
ROM_END
ROM_START( hod2bios )
- ROM_REGION( 0x200000, "maincpu", 0)
HOTD2_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8400000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x8400000, "rom_board", ROMREGION_ERASE)
ROM_END
ROM_START( f355bios )
- ROM_REGION( 0x200000, "maincpu", 0)
F355_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8400000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x8400000, "rom_board", ROMREGION_ERASE)
ROM_END
ROM_START( airlbios )
- ROM_REGION( 0x200000, "maincpu", 0)
AIRLINE_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8400000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x8400000, "rom_board", ROMREGION_ERASE)
ROM_END
ROM_START( naomi2 )
NAOMI2_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8400000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x8400000, "rom_board", ROMREGION_ERASE)
ROM_END
ROM_START( awbios )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8400000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x8400000, "rom_board", ROMREGION_ERASE)
ROM_END
@@ -2899,7 +2939,7 @@ IC3 64M F60D 69E5
IC4 64M FBD4 AE40
IC5 64M 1717 F3EC
IC6 64M A622 1D3D
-IC7 64M 33A3 4480
+C7 64M 33A3 4480
IC8 64M FC26 A49D
IC9 64M 528D 5206
IC10 64M 7C94 8779
@@ -2909,11 +2949,10 @@ IC12 64M BA24 102F
*/
ROM_START( cspike )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x6800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x6800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23210.ic22", 0x0000000, 0x0400000, CRC(a15c54b5) SHA1(5c7872244d3d648e4c04751f120d0e9d47239921) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-23198.ic1", 0x0800000, 0x0800000, CRC(ce8d3edf) SHA1(1df5bb4eb440c221b8f1e5f019b02accc235fc28) )
@@ -2928,6 +2967,9 @@ ROM_START( cspike )
ROM_LOAD("mpr-23207.ic10", 0x5000000, 0x0800000, CRC(39f692a1) SHA1(14bc86b48a995378b4dd3609d38b90cddf2d7483) )
ROM_LOAD("mpr-23208.ic11", 0x5800000, 0x0800000, CRC(b9494f4b) SHA1(2f35b25edf5210a82d4b67e639eeae11440d065a) )
ROM_LOAD("mpr-23209.ic12s",0x6000000, 0x0800000, CRC(560188c0) SHA1(77f14c9a031c6e5414ffa854d20c40115361d715) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "cspike-key.bin", 0, 4, CRC(a3e9c6d0) SHA1(c098eae7aee716fbdca39f0eb1f55bd54d398394) )
ROM_END
/*
@@ -2957,36 +2999,40 @@ IC13 64M A12E 8DE4
// ver 000904
ROM_START( capsnk )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x7800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x7800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "epr-23511c.ic22", 0x000000, 0x400000, CRC(3dbf8eb2) SHA1(1f7b89ba99e018cc85022fa852d56d4e345e1bd2) )
- ROM_LOAD( "mpr-23504.ic1", 0x0800000, 0x1000000, CRC(e01a31d2) SHA1(e00e138f6a20175c7aadb6500f6d7541b91def14) )
- ROM_LOAD( "mpr-23505.ic2", 0x1800000, 0x1000000, CRC(3a34d5fe) SHA1(f3c5f6fcbaa7004d371923eb412ea1fcf3fa461a) )
- ROM_LOAD( "mpr-23506.ic3", 0x2800000, 0x1000000, CRC(9cbab27d) SHA1(f166352355a03c9ccafbc15f926330b3622ec040) )
- ROM_LOAD( "mpr-23507.ic4", 0x3800000, 0x1000000, CRC(363c1734) SHA1(16b0485f1aacc8925b3c6d6152680139748e6df8) )
- ROM_LOAD( "mpr-23508.ic5", 0x4800000, 0x1000000, CRC(0a3590aa) SHA1(84c0e1853f069b003d09b268caee97e58c4dacb6) )
- ROM_LOAD( "mpr-23509.ic6", 0x5800000, 0x1000000, CRC(281d633d) SHA1(d773be8e95f7bf9212ee1061f3076220d4fce9e0) )
- ROM_LOAD( "mpr-23510.ic7", 0x6800000, 0x1000000, CRC(b856fef5) SHA1(0634f86740c438b40286256a0269570d24cb845a) )
+ ROM_LOAD( "mpr-23504.ic1", 0x0800000, 0x1000000, CRC(e01a31d2) SHA1(e00e138f6a20175c7aadb6500f6d7541b91def14) )
+ ROM_LOAD( "mpr-23505.ic2", 0x1800000, 0x1000000, CRC(3a34d5fe) SHA1(f3c5f6fcbaa7004d371923eb412ea1fcf3fa461a) )
+ ROM_LOAD( "mpr-23506.ic3", 0x2800000, 0x1000000, CRC(9cbab27d) SHA1(f166352355a03c9ccafbc15f926330b3622ec040) )
+ ROM_LOAD( "mpr-23507.ic4", 0x3800000, 0x1000000, CRC(363c1734) SHA1(16b0485f1aacc8925b3c6d6152680139748e6df8) )
+ ROM_LOAD( "mpr-23508.ic5", 0x4800000, 0x1000000, CRC(0a3590aa) SHA1(84c0e1853f069b003d09b268caee97e58c4dacb6) )
+ ROM_LOAD( "mpr-23509.ic6", 0x5800000, 0x1000000, CRC(281d633d) SHA1(d773be8e95f7bf9212ee1061f3076220d4fce9e0) )
+ ROM_LOAD( "mpr-23510.ic7", 0x6800000, 0x1000000, CRC(b856fef5) SHA1(0634f86740c438b40286256a0269570d24cb845a) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "capsnk-key.bin", 0, 4, CRC(2144df1c) SHA1(9069ca78e7450a285173431b3e52c5c25299e473) )
ROM_END
// ver 000804
ROM_START( capsnka )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x7800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr23511a.ic22", 0x000000, 0x400000, CRC(fe00650f) SHA1(ca8e9e9178ed2b6598bdea83be1bf0dd7aa509f9) )
- ROM_LOAD( "mpr-23504.ic1", 0x0800000, 0x1000000, CRC(e01a31d2) SHA1(e00e138f6a20175c7aadb6500f6d7541b91def14) )
- ROM_LOAD( "mpr-23505.ic2", 0x1800000, 0x1000000, CRC(3a34d5fe) SHA1(f3c5f6fcbaa7004d371923eb412ea1fcf3fa461a) )
- ROM_LOAD( "mpr-23506.ic3", 0x2800000, 0x1000000, CRC(9cbab27d) SHA1(f166352355a03c9ccafbc15f926330b3622ec040) )
- ROM_LOAD( "mpr-23507.ic4", 0x3800000, 0x1000000, CRC(363c1734) SHA1(16b0485f1aacc8925b3c6d6152680139748e6df8) )
- ROM_LOAD( "mpr-23508.ic5", 0x4800000, 0x1000000, CRC(0a3590aa) SHA1(84c0e1853f069b003d09b268caee97e58c4dacb6) )
- ROM_LOAD( "mpr-23509.ic6", 0x5800000, 0x1000000, CRC(281d633d) SHA1(d773be8e95f7bf9212ee1061f3076220d4fce9e0) )
- ROM_LOAD( "mpr-23510.ic7", 0x6800000, 0x1000000, CRC(b856fef5) SHA1(0634f86740c438b40286256a0269570d24cb845a) )
+ ROM_REGION( 0x7800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr23511a.ic22", 0x000000, 0x400000, CRC(fe00650f) SHA1(ca8e9e9178ed2b6598bdea83be1bf0dd7aa509f9) )
+ ROM_LOAD( "mpr-23504.ic1", 0x0800000, 0x1000000, CRC(e01a31d2) SHA1(e00e138f6a20175c7aadb6500f6d7541b91def14) )
+ ROM_LOAD( "mpr-23505.ic2", 0x1800000, 0x1000000, CRC(3a34d5fe) SHA1(f3c5f6fcbaa7004d371923eb412ea1fcf3fa461a) )
+ ROM_LOAD( "mpr-23506.ic3", 0x2800000, 0x1000000, CRC(9cbab27d) SHA1(f166352355a03c9ccafbc15f926330b3622ec040) )
+ ROM_LOAD( "mpr-23507.ic4", 0x3800000, 0x1000000, CRC(363c1734) SHA1(16b0485f1aacc8925b3c6d6152680139748e6df8) )
+ ROM_LOAD( "mpr-23508.ic5", 0x4800000, 0x1000000, CRC(0a3590aa) SHA1(84c0e1853f069b003d09b268caee97e58c4dacb6) )
+ ROM_LOAD( "mpr-23509.ic6", 0x5800000, 0x1000000, CRC(281d633d) SHA1(d773be8e95f7bf9212ee1061f3076220d4fce9e0) )
+ ROM_LOAD( "mpr-23510.ic7", 0x6800000, 0x1000000, CRC(b856fef5) SHA1(0634f86740c438b40286256a0269570d24cb845a) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "capsnka-key.bin", 0, 4, CRC(2144df1c) SHA1(9069ca78e7450a285173431b3e52c5c25299e473) )
ROM_END
/*
@@ -3012,11 +3058,10 @@ Serial: BCHE-01A0803
*/
ROM_START( csmash )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x4800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x4800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23428a.ic22", 0x0000000, 0x400000, CRC(d628dbce) SHA1(91ec1296ead572a64c37f8ac2c1a96742f19d50b) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-23420.ic1", 0x0800000, 0x0800000, CRC(9d5991f2) SHA1(c75871db314b01935d1daaacf1a762e73e5fd411) )
@@ -3027,14 +3072,16 @@ ROM_START( csmash )
ROM_LOAD("mpr-23425.ic6", 0x3000000, 0x0800000, CRC(47f51da2) SHA1(af5ecd460114caed3a00157ffd3a2df0fbf348c0) )
ROM_LOAD("mpr-23426.ic7", 0x3800000, 0x0800000, CRC(7f91b13f) SHA1(2d534f77291ebfedc011bf0e803a1b9243fb477f) )
ROM_LOAD("mpr-23427.ic8", 0x4000000, 0x0800000, CRC(5851d525) SHA1(1cb1073542d75a3bcc0d363ed31d49bcaf1fd494) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "csmash-key.bin", 0, 4, CRC(21b1cd6f) SHA1(a74eef5e3475cc6952f4ffe31579769a854b62a9) )
ROM_END
ROM_START( csmasho )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x4800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x4800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23428.ic22", 0x0000000, 0x400000, CRC(f8597496) SHA1(2bb9f25b63b7410934ae4b1e052e1308a5c5a57f) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-23420.ic1", 0x0800000, 0x0800000, CRC(9d5991f2) SHA1(c75871db314b01935d1daaacf1a762e73e5fd411) )
@@ -3045,6 +3092,9 @@ ROM_START( csmasho )
ROM_LOAD("mpr-23425.ic6", 0x3000000, 0x0800000, CRC(47f51da2) SHA1(af5ecd460114caed3a00157ffd3a2df0fbf348c0) )
ROM_LOAD("mpr-23426.ic7", 0x3800000, 0x0800000, CRC(7f91b13f) SHA1(2d534f77291ebfedc011bf0e803a1b9243fb477f) )
ROM_LOAD("mpr-23427.ic8", 0x4000000, 0x0800000, CRC(5851d525) SHA1(1cb1073542d75a3bcc0d363ed31d49bcaf1fd494) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "csmasho-key.bin", 0, 4, CRC(21b1cd6f) SHA1(a74eef5e3475cc6952f4ffe31579769a854b62a9) )
ROM_END
/*
@@ -3057,11 +3107,10 @@ EXP: DEATH CRIMSON OX
*/
ROM_START( deathcox )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x5800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x5800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23524.ic22",0x0000000, 0x0400000, CRC(edc20e44) SHA1(6167ee86624f5b78b3ced0dd82259e83053f4f9d) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-23514.ic1", 0x0800000, 0x0800000, CRC(1f2b090e) SHA1(f2863d306512112cd3025c9ce3300ac0a396ee2d) )
@@ -3074,6 +3123,9 @@ ROM_START( deathcox )
ROM_LOAD("mpr-23521.ic8", 0x4000000, 0x0800000, CRC(cf8674b8) SHA1(bdd2a0ef98138021707b3dd06b1d9855308ed3ec) )
ROM_LOAD("mpr-23522.ic9", 0x4800000, 0x0800000, CRC(7ae6716e) SHA1(658b794ae6e3898885524582a207faa1076a65ca) )
ROM_LOAD("mpr-23523.ic10",0x5000000, 0x0800000, CRC(c91efb67) SHA1(3d79870551310da7a641858ffec3840714e9cc22) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "deathcox-key.bin", 0, 4, CRC(aa534c8a) SHA1(fcc45e477c646b51afe7c4168d7246964a1f23b5) )
ROM_END
/*
@@ -3110,11 +3162,10 @@ IC21 64M 002C 8ECA
*/
ROM_START( doa2 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM_NO_BD
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22121.ic22",0x0000000, 0x0400000, CRC(30f93b5e) SHA1(0e33383e7ab9a721dab4708b063598f2e9c9f2e7) ) // partially encrypted
ROM_LOAD("mpr-22100.ic1", 0x0800000, 0x0800000, CRC(92a53e5e) SHA1(87fcdeee9c4e65a3eb6eb345eed85d4f2df26c3c) )
@@ -3139,6 +3190,9 @@ ROM_START( doa2 )
ROM_LOAD("mpr-22119.ic20",0xa000000, 0x0800000, CRC(d608fa86) SHA1(54c8107cccec8cbb536f13cda5b220b7972190b7) )
ROM_LOAD("mpr-22120.ic21",0xa800000, 0x0800000, CRC(a30facb4) SHA1(70415ca34095c795297486bce1f956f6a8d4817f) )
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "doa2-key.bin", 0, 4, CRC(43f97c96) SHA1(7d1e6fcca3ca936f33d59d57834c3e4ff74f587d) )
+
// on-cart X76F100 eeprom contents
ROM_REGION( 0x84, "naomibd_eeprom", 0 )
ROM_LOAD( "841-0003.sf", 0x000000, 0x000084, CRC(3a119a17) SHA1(d37a092cca7c9cfc5f2637b355af90a65d04013e) )
@@ -3180,11 +3234,10 @@ Serial: BALH-13A0175
*/
ROM_START( doa2m )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM_NO_BD
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("doa2verm.ic22", 0x0000000, 0x0400000, CRC(94b16f08) SHA1(225cd3e5dd5f21facf0a1d5e66fa17db8497573d) )
ROM_LOAD("mpr-22100.ic1", 0x0800000, 0x0800000, CRC(92a53e5e) SHA1(87fcdeee9c4e65a3eb6eb345eed85d4f2df26c3c) )
@@ -3209,6 +3262,9 @@ ROM_START( doa2m )
ROM_LOAD("mpr-22119.ic20",0xa000000, 0x0800000, CRC(d608fa86) SHA1(54c8107cccec8cbb536f13cda5b220b7972190b7) )
ROM_LOAD("mpr-22120.ic21",0xa800000, 0x0800000, CRC(a30facb4) SHA1(70415ca34095c795297486bce1f956f6a8d4817f) )
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "doa2m-key.bin", 0, 4, CRC(43f97c96) SHA1(7d1e6fcca3ca936f33d59d57834c3e4ff74f587d) )
+
// on-cart X76F100 eeprom contents
ROM_REGION( 0x84, "naomibd_eeprom", 0 )
ROM_LOAD( "841-0003.sf", 0x000000, 0x000084, CRC(3a119a17) SHA1(d37a092cca7c9cfc5f2637b355af90a65d04013e) )
@@ -3243,11 +3299,10 @@ Serial: BAXE-02A1386
*/
ROM_START( derbyoc )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x7800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x7800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22099b.ic22", 0x0000000, 0x0400000, CRC(5e708879) SHA1(fada4f4bf29fc8f77f354167f8db4f904610fe1a) )
ROM_LOAD("mpr-22085.ic1", 0x0800000, 0x0800000, CRC(fffe9cc5) SHA1(ce6082fc648718b3831f709ba8b6212946c72d70) )
ROM_LOAD("mpr-22086.ic2", 0x1000000, 0x0800000, CRC(610fe214) SHA1(c982d9e4722c2b6cb87f2bc3e2ac0f764f0bae79) )
@@ -3263,38 +3318,39 @@ ROM_START( derbyoc )
ROM_LOAD("mpr-22096.ic12", 0x6000000, 0x0800000, CRC(d8c41648) SHA1(d465f4b841164da0738336e203c5bc6e1e799a76) )
ROM_LOAD("mpr-22097.ic13", 0x6800000, 0x0800000, CRC(f1dedac5) SHA1(9d4499cbafe80dd0b36be617de7994a96e1e9a01) )
ROM_LOAD("mpr-22098.ic14", 0x7000000, 0x0800000, CRC(f9824d2e) SHA1(f20f8cc2b1bef9077ede1cb874da8f2a335d39de) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "derbyoc-key.bin", 0, 4, CRC(bc568260) SHA1(6dc4923a730bc0380490519c82f1443226365c3a) )
ROM_END
ROM_START( derbyocw )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x7800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-22336d.ic22",0x000000, 0x0400000, CRC(e6c0cb0c) SHA1(b8c7fe62cb370793fd5ed0af27c18d36e9c0ce54) )
- ROM_LOAD( "mpr-22328.ic1", 0x0800000, 0x1000000, CRC(179cec02) SHA1(cbaba86082370a082d2e9f18427691d5cfa0e4f0) )
- ROM_LOAD( "mpr-22329.ic2", 0x1800000, 0x1000000, CRC(e0d5b98c) SHA1(5bf1ac0d895fd7725d170a54f01cd717a5e54110) )
- ROM_LOAD( "mpr-22330.ic3", 0x2800000, 0x1000000, CRC(6737cd62) SHA1(08429ca39fef3b36cb491813ddcd0feef3b24372) )
- ROM_LOAD( "mpr-22331.ic4", 0x3800000, 0x1000000, CRC(8fb5cbcf) SHA1(c4e6cbbe7d3549e1841654b41b1946b9bc356e74) )
- ROM_LOAD( "mpr-22332.ic5", 0x4800000, 0x1000000, CRC(c5e365a8) SHA1(5839ea24b8fd02552931175d35e2ceca75fca089) )
- ROM_LOAD( "mpr-22337.ic6", 0x5800000, 0x1000000, CRC(87ca3a2f) SHA1(2ffc01597107eb60dfa7aa49d51f203b51a44334) )
- ROM_LOAD( "mpr-22338.ic7", 0x6800000, 0x1000000, CRC(4bda7303) SHA1(db27d91ef811d741cfdb5c0196e61be722c2f5bd) )
+ ROM_REGION( 0x7800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-22336d.ic22",0x000000, 0x0400000, CRC(e6c0cb0c) SHA1(b8c7fe62cb370793fd5ed0af27c18d36e9c0ce54) )
+ ROM_LOAD( "mpr-22328.ic1", 0x0800000, 0x1000000, CRC(179cec02) SHA1(cbaba86082370a082d2e9f18427691d5cfa0e4f0) )
+ ROM_LOAD( "mpr-22329.ic2", 0x1800000, 0x1000000, CRC(e0d5b98c) SHA1(5bf1ac0d895fd7725d170a54f01cd717a5e54110) )
+ ROM_LOAD( "mpr-22330.ic3", 0x2800000, 0x1000000, CRC(6737cd62) SHA1(08429ca39fef3b36cb491813ddcd0feef3b24372) )
+ ROM_LOAD( "mpr-22331.ic4", 0x3800000, 0x1000000, CRC(8fb5cbcf) SHA1(c4e6cbbe7d3549e1841654b41b1946b9bc356e74) )
+ ROM_LOAD( "mpr-22332.ic5", 0x4800000, 0x1000000, CRC(c5e365a8) SHA1(5839ea24b8fd02552931175d35e2ceca75fca089) )
+ ROM_LOAD( "mpr-22337.ic6", 0x5800000, 0x1000000, CRC(87ca3a2f) SHA1(2ffc01597107eb60dfa7aa49d51f203b51a44334) )
+ ROM_LOAD( "mpr-22338.ic7", 0x6800000, 0x1000000, CRC(4bda7303) SHA1(db27d91ef811d741cfdb5c0196e61be722c2f5bd) )
ROM_END
ROM_START( drbyocwc )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x7800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-22336c.ic22", 0x000000, 0x400000, CRC(50053f82) SHA1(5b31abb480043ece3645b2479ba566ac6592acd8) )
- ROM_LOAD( "mpr-22328.ic1", 0x0800000, 0x1000000, CRC(179cec02) SHA1(cbaba86082370a082d2e9f18427691d5cfa0e4f0) )
- ROM_LOAD( "mpr-22329.ic2", 0x1800000, 0x1000000, CRC(e0d5b98c) SHA1(5bf1ac0d895fd7725d170a54f01cd717a5e54110) )
- ROM_LOAD( "mpr-22330.ic3", 0x2800000, 0x1000000, CRC(6737cd62) SHA1(08429ca39fef3b36cb491813ddcd0feef3b24372) )
- ROM_LOAD( "mpr-22331.ic4", 0x3800000, 0x1000000, CRC(8fb5cbcf) SHA1(c4e6cbbe7d3549e1841654b41b1946b9bc356e74) )
- ROM_LOAD( "mpr-22332.ic5", 0x4800000, 0x1000000, CRC(c5e365a8) SHA1(5839ea24b8fd02552931175d35e2ceca75fca089) )
- ROM_LOAD( "mpr-22333.ic6", 0x5800000, 0x1000000, CRC(96f324aa) SHA1(bc41e2097c1841771d786ba9ad1a31df1494a856) )
- ROM_LOAD( "mpr-22334.ic7", 0x6800000, 0x1000000, CRC(5389b05a) SHA1(e206e4d82d7b1a59c33043ec0812eb69be08d9b3) )
+ ROM_REGION( 0x7800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-22336c.ic22", 0x000000, 0x400000, CRC(50053f82) SHA1(5b31abb480043ece3645b2479ba566ac6592acd8) )
+ ROM_LOAD( "mpr-22328.ic1", 0x0800000, 0x1000000, CRC(179cec02) SHA1(cbaba86082370a082d2e9f18427691d5cfa0e4f0) )
+ ROM_LOAD( "mpr-22329.ic2", 0x1800000, 0x1000000, CRC(e0d5b98c) SHA1(5bf1ac0d895fd7725d170a54f01cd717a5e54110) )
+ ROM_LOAD( "mpr-22330.ic3", 0x2800000, 0x1000000, CRC(6737cd62) SHA1(08429ca39fef3b36cb491813ddcd0feef3b24372) )
+ ROM_LOAD( "mpr-22331.ic4", 0x3800000, 0x1000000, CRC(8fb5cbcf) SHA1(c4e6cbbe7d3549e1841654b41b1946b9bc356e74) )
+ ROM_LOAD( "mpr-22332.ic5", 0x4800000, 0x1000000, CRC(c5e365a8) SHA1(5839ea24b8fd02552931175d35e2ceca75fca089) )
+ ROM_LOAD( "mpr-22333.ic6", 0x5800000, 0x1000000, CRC(96f324aa) SHA1(bc41e2097c1841771d786ba9ad1a31df1494a856) )
+ ROM_LOAD( "mpr-22334.ic7", 0x6800000, 0x1000000, CRC(5389b05a) SHA1(e206e4d82d7b1a59c33043ec0812eb69be08d9b3) )
ROM_END
/*
@@ -3305,23 +3361,22 @@ EXP: DERBY OWNERS CLUB II-IN EXPORT
*/
ROM_START( derbyoc2 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22306b.ic22", 0x0000000, 0x0400000, CRC(fcac20eb) SHA1(26cec9f615cd18ce7fccfc5e273e42c58dea1995) )
- ROM_LOAD( "mpr-22295.ic1", 0x0800000, 0x1000000, CRC(1085001b) SHA1(096ac0ecc7d5324f04514d24eb338de591926a3d) )
- ROM_LOAD( "mpr-22296.ic2", 0x1800000, 0x1000000, CRC(f18cb28b) SHA1(e7f253a35e15f62e178a1ff565f8a94102eea057) )
- ROM_LOAD( "mpr-22297.ic3", 0x2800000, 0x1000000, CRC(a78a527b) SHA1(7d4e7bd93519377a8676f7ca6f72c4d0de2a0475) )
- ROM_LOAD( "mpr-22298.ic4", 0x3800000, 0x1000000, CRC(cd76c7ea) SHA1(2db200c8853d1bc9da31da6c197c6b55e570dc69) )
- ROM_LOAD( "mpr-22299.ic5", 0x4800000, 0x1000000, CRC(ffb96da5) SHA1(bfe8f4a455d3eeec0fa9728fc1bb52cebd13b2a8) )
- ROM_LOAD( "mpr-22300.ic6", 0x5800000, 0x1000000, CRC(6fb05214) SHA1(9cececc46ac463bc5df3c3f5fb9268d5ced31837) )
- ROM_LOAD( "mpr-22301.ic7", 0x6800000, 0x1000000, CRC(52eb076d) SHA1(a79bb286594cc5d196a37a17147ad1770db5cd67) )
- ROM_LOAD( "mpr-22302.ic8", 0x7800000, 0x1000000, CRC(86767b0b) SHA1(54ed418cef78506fb824e3d16cadefdb684f2b34) )
- ROM_LOAD( "mpr-22303.ic9", 0x8800000, 0x1000000, CRC(73a80bd5) SHA1(d607f1d993af4b78d3609991e47e9540664380fd) )
- ROM_LOAD( "mpr-22304.ic10", 0x9800000, 0x1000000, CRC(46c1fb1f) SHA1(6daca76a75df3501f77e473eb065d48804fcc64a) )
- ROM_LOAD( "mpr-22305.ic11", 0xa800000, 0x1000000, CRC(027d0e7b) SHA1(e3c874e60cabb6f9ce686696d9055a0c0d5289ae) )
+ ROM_LOAD( "mpr-22295.ic1", 0x0800000, 0x1000000, CRC(1085001b) SHA1(096ac0ecc7d5324f04514d24eb338de591926a3d) )
+ ROM_LOAD( "mpr-22296.ic2", 0x1800000, 0x1000000, CRC(f18cb28b) SHA1(e7f253a35e15f62e178a1ff565f8a94102eea057) )
+ ROM_LOAD( "mpr-22297.ic3", 0x2800000, 0x1000000, CRC(a78a527b) SHA1(7d4e7bd93519377a8676f7ca6f72c4d0de2a0475) )
+ ROM_LOAD( "mpr-22298.ic4", 0x3800000, 0x1000000, CRC(cd76c7ea) SHA1(2db200c8853d1bc9da31da6c197c6b55e570dc69) )
+ ROM_LOAD( "mpr-22299.ic5", 0x4800000, 0x1000000, CRC(ffb96da5) SHA1(bfe8f4a455d3eeec0fa9728fc1bb52cebd13b2a8) )
+ ROM_LOAD( "mpr-22300.ic6", 0x5800000, 0x1000000, CRC(6fb05214) SHA1(9cececc46ac463bc5df3c3f5fb9268d5ced31837) )
+ ROM_LOAD( "mpr-22301.ic7", 0x6800000, 0x1000000, CRC(52eb076d) SHA1(a79bb286594cc5d196a37a17147ad1770db5cd67) )
+ ROM_LOAD( "mpr-22302.ic8", 0x7800000, 0x1000000, CRC(86767b0b) SHA1(54ed418cef78506fb824e3d16cadefdb684f2b34) )
+ ROM_LOAD( "mpr-22303.ic9", 0x8800000, 0x1000000, CRC(73a80bd5) SHA1(d607f1d993af4b78d3609991e47e9540664380fd) )
+ ROM_LOAD( "mpr-22304.ic10", 0x9800000, 0x1000000, CRC(46c1fb1f) SHA1(6daca76a75df3501f77e473eb065d48804fcc64a) )
+ ROM_LOAD( "mpr-22305.ic11", 0xa800000, 0x1000000, CRC(027d0e7b) SHA1(e3c874e60cabb6f9ce686696d9055a0c0d5289ae) )
ROM_END
/*
@@ -3372,11 +3427,10 @@ Protection notes (same code snippet seen in Zombie Revenge):
*/
ROM_START( dybbnao )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-21575.ic22",0x0000000, 0x0200000, CRC(ba61e248) SHA1(3cce5d8b307038515d7da7ec567bfa2e3aafc274) )
ROM_LOAD("mpr-21554.ic1", 0x0800000, 0x0800000, CRC(6eb29c37) SHA1(3548a93f9efa3bd548f9e30223a9b3570031f126) )
ROM_LOAD("mpr-21555.ic2", 0x1000000, 0x0800000, CRC(3ff79959) SHA1(abd5407fcfa5556fc3f0c56892daad0c741a681f) )
@@ -3435,11 +3489,10 @@ Serial: BBDE-01A0097
*/
ROM_START( dybb99 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xa000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xa000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22141b.ic22",0x0000000, 0x0200000, CRC(6d0e0785) SHA1(aa19e7bac4c266771d1e65cffa534a49d7566f51) )
ROM_LOAD("mpr-22122.ic1", 0x0800000, 0x0800000, CRC(403da794) SHA1(321bc5b8966d05e60110bc0b17d0f37fe1facc56) )
ROM_LOAD("mpr-22123.ic2", 0x1000000, 0x0800000, CRC(14cfeab8) SHA1(593d006bc2e6f4d1602d7045dc51d974fc5bbd4c) )
@@ -3460,36 +3513,41 @@ ROM_START( dybb99 )
ROM_LOAD("mpr-22138.ic17", 0x8800000, 0x0800000, CRC(59557b9f) SHA1(beda44c65c69110bdf8afb7542ae39913dab54f2) )
ROM_LOAD("mpr-22139.ic18", 0x9000000, 0x0800000, CRC(92faa2ca) SHA1(4953f0219c3ae62de0a89473cb7b9dd30b33fcfb) )
ROM_LOAD("mpr-22140.ic19", 0x9800000, 0x0800000, CRC(4cb54893) SHA1(a99b39cc3c82c3cf90f794bb8c8ba60638a6f921) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "dybb99-key.bin", 0, 4, CRC(90263797) SHA1(83649c8b3e562bee1f08663e59c5ba8f404ed36c) )
ROM_END
ROM_START( smlg99 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-22059.ic22", 0x0000000, 0x200000, CRC(5784f970) SHA1(e9ec692206a95cc260521154305693f6022190bc) )
- ROM_LOAD( "mpr-22038.ic1", 0x0800000, 0x800000, CRC(0a59fc5b) SHA1(efcbe2f847927fba173d333c889dd7df329d6df6) )
- ROM_LOAD( "mpr-22039.ic2", 0x1000000, 0x800000, CRC(4de79b52) SHA1(c63a3ce88db316e882948baf121fa96242010c8d) )
- ROM_LOAD( "mpr-22040.ic3", 0x1800000, 0x800000, CRC(b993fd90) SHA1(609de1509f393f884813ca4bcac533e10088ca84) )
- ROM_LOAD( "mpr-22041.ic4", 0x2000000, 0x800000, CRC(ddadfabd) SHA1(64531e68b10635415d49c0304a8ba550a3a9cef1) )
- ROM_LOAD( "mpr-22042.ic5", 0x2800000, 0x800000, CRC(136c101e) SHA1(a35d8d574b263d672a08963a992a7b507c838b70) )
- ROM_LOAD( "mpr-22043.ic6", 0x3000000, 0x800000, CRC(7f15a0a5) SHA1(5c36fa580f7eef448fb32d050078843470fafb31) )
- ROM_LOAD( "mpr-22044.ic7", 0x3800000, 0x800000, CRC(94376002) SHA1(8c4b954da69a079d9a73b8f34a9f1a94cceee9cc) )
- ROM_LOAD( "mpr-22045.ic8", 0x4000000, 0x800000, CRC(e520e2d9) SHA1(c7a9306b2dafb20baaa8bd6708fb5ece775c37f0) )
- ROM_LOAD( "mpr-22046.ic9", 0x4800000, 0x800000, CRC(976edfc8) SHA1(340b701b9e1d256963a8fe056ec975d8cbfec3d8) )
- ROM_LOAD( "mpr-22047.ic10", 0x5000000, 0x800000, CRC(32b136de) SHA1(4019e9836174b47135d7e1bbc02c23dd3ab52904) )
- ROM_LOAD( "mpr-22048.ic11", 0x5800000, 0x800000, CRC(32a9488a) SHA1(70c11fbcb1e24ed120f74aa455806e7dfbfa75b5) )
- ROM_LOAD( "mpr-22049.ic12", 0x6000000, 0x800000, CRC(8295696d) SHA1(5820cac054070aa35a64abc5bf8c6f45fe9be03f) )
- ROM_LOAD( "mpr-22050.ic13", 0x6800000, 0x800000, CRC(1cfebe44) SHA1(24415f723cd6c1efaa2513f6b52e076364eb0875) )
- ROM_LOAD( "mpr-22051.ic14", 0x7000000, 0x800000, CRC(58b9dbef) SHA1(1021d4dfbd5bcf6e1703ce608560c76d60dac71c) )
- ROM_LOAD( "mpr-22052.ic15", 0x7800000, 0x800000, CRC(95b87c1d) SHA1(bf0a89703fea7bd37e4d0fd10c7729d2cfe848d6) )
- ROM_LOAD( "mpr-22053.ic16", 0x8000000, 0x800000, CRC(666589a1) SHA1(130477f247661e87bdc4f2370788ca676336f563) )
- ROM_LOAD( "mpr-22054.ic17", 0x8800000, 0x800000, CRC(9d8c82e9) SHA1(13ebf9ffac9e1e960fa9662800c5e682284a5cdd) )
- ROM_LOAD( "mpr-22055.ic18", 0x9000000, 0x800000, CRC(fa865125) SHA1(04e0d77287f4e29df514875683992ede1e385dbc) )
- ROM_LOAD( "mpr-22056.ic19", 0x9800000, 0x800000, CRC(45a23d29) SHA1(2499637a4b389cda7cc9a7aa21014696bd1dafe2) )
- ROM_LOAD( "mpr-22057.ic20", 0xa000000, 0x800000, CRC(a056c109) SHA1(637e80c2d605851265430b0fa771a4ad5233be8a) )
- ROM_LOAD( "mpr-22058.ic21", 0xa800000, 0x800000, CRC(f16edaa0) SHA1(e093f5594df43c592a9acd45002ecc65035c2435) )
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-22059.ic22", 0x0000000, 0x200000, CRC(5784f970) SHA1(e9ec692206a95cc260521154305693f6022190bc) )
+ ROM_LOAD( "mpr-22038.ic1", 0x0800000, 0x800000, CRC(0a59fc5b) SHA1(efcbe2f847927fba173d333c889dd7df329d6df6) )
+ ROM_LOAD( "mpr-22039.ic2", 0x1000000, 0x800000, CRC(4de79b52) SHA1(c63a3ce88db316e882948baf121fa96242010c8d) )
+ ROM_LOAD( "mpr-22040.ic3", 0x1800000, 0x800000, CRC(b993fd90) SHA1(609de1509f393f884813ca4bcac533e10088ca84) )
+ ROM_LOAD( "mpr-22041.ic4", 0x2000000, 0x800000, CRC(ddadfabd) SHA1(64531e68b10635415d49c0304a8ba550a3a9cef1) )
+ ROM_LOAD( "mpr-22042.ic5", 0x2800000, 0x800000, CRC(136c101e) SHA1(a35d8d574b263d672a08963a992a7b507c838b70) )
+ ROM_LOAD( "mpr-22043.ic6", 0x3000000, 0x800000, CRC(7f15a0a5) SHA1(5c36fa580f7eef448fb32d050078843470fafb31) )
+ ROM_LOAD( "mpr-22044.ic7", 0x3800000, 0x800000, CRC(94376002) SHA1(8c4b954da69a079d9a73b8f34a9f1a94cceee9cc) )
+ ROM_LOAD( "mpr-22045.ic8", 0x4000000, 0x800000, CRC(e520e2d9) SHA1(c7a9306b2dafb20baaa8bd6708fb5ece775c37f0) )
+ ROM_LOAD( "mpr-22046.ic9", 0x4800000, 0x800000, CRC(976edfc8) SHA1(340b701b9e1d256963a8fe056ec975d8cbfec3d8) )
+ ROM_LOAD( "mpr-22047.ic10", 0x5000000, 0x800000, CRC(32b136de) SHA1(4019e9836174b47135d7e1bbc02c23dd3ab52904) )
+ ROM_LOAD( "mpr-22048.ic11", 0x5800000, 0x800000, CRC(32a9488a) SHA1(70c11fbcb1e24ed120f74aa455806e7dfbfa75b5) )
+ ROM_LOAD( "mpr-22049.ic12", 0x6000000, 0x800000, CRC(8295696d) SHA1(5820cac054070aa35a64abc5bf8c6f45fe9be03f) )
+ ROM_LOAD( "mpr-22050.ic13", 0x6800000, 0x800000, CRC(1cfebe44) SHA1(24415f723cd6c1efaa2513f6b52e076364eb0875) )
+ ROM_LOAD( "mpr-22051.ic14", 0x7000000, 0x800000, CRC(58b9dbef) SHA1(1021d4dfbd5bcf6e1703ce608560c76d60dac71c) )
+ ROM_LOAD( "mpr-22052.ic15", 0x7800000, 0x800000, CRC(95b87c1d) SHA1(bf0a89703fea7bd37e4d0fd10c7729d2cfe848d6) )
+ ROM_LOAD( "mpr-22053.ic16", 0x8000000, 0x800000, CRC(666589a1) SHA1(130477f247661e87bdc4f2370788ca676336f563) )
+ ROM_LOAD( "mpr-22054.ic17", 0x8800000, 0x800000, CRC(9d8c82e9) SHA1(13ebf9ffac9e1e960fa9662800c5e682284a5cdd) )
+ ROM_LOAD( "mpr-22055.ic18", 0x9000000, 0x800000, CRC(fa865125) SHA1(04e0d77287f4e29df514875683992ede1e385dbc) )
+ ROM_LOAD( "mpr-22056.ic19", 0x9800000, 0x800000, CRC(45a23d29) SHA1(2499637a4b389cda7cc9a7aa21014696bd1dafe2) )
+ ROM_LOAD( "mpr-22057.ic20", 0xa000000, 0x800000, CRC(a056c109) SHA1(637e80c2d605851265430b0fa771a4ad5233be8a) )
+ ROM_LOAD( "mpr-22058.ic21", 0xa800000, 0x800000, CRC(f16edaa0) SHA1(e093f5594df43c592a9acd45002ecc65035c2435) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "smlg99-key.bin", 0, 4, CRC(90263797) SHA1(83649c8b3e562bee1f08663e59c5ba8f404ed36c) )
ROM_END
/*
@@ -3502,11 +3560,10 @@ EXP: F355 CHALLENGE EXPORT
*/
ROM_START( f355 )
- ROM_REGION( 0x200000, "maincpu", 0)
F355_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-21902.ic22",0x0000000, 0x0400000, CRC(04e8acec) SHA1(82e20f99876b13b77c0393ef545316f9eeb2c29c) )
ROM_LOAD("mpr-21881.ic1", 0x0800000, 0x0800000, CRC(00bf0d58) SHA1(cf2c58168501c77318e946a4a4d4663993a7913c) )
@@ -3533,71 +3590,74 @@ ROM_START( f355 )
ROM_END // ROM reads different each time and fails test mode on real h/w, need a new cart
ROM_START( f355twin )
- ROM_REGION( 0x200000, "maincpu", 0)
F355_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-22848.ic22", 0x0000000, 0x800000, CRC(54de0bd5) SHA1(5f6be36d2d39eea681ecac14358b92eaf4bf6c1e) )
- ROM_LOAD( "mpr-22827.ic1", 0x0800000, 0x800000, CRC(eeb1b975) SHA1(929f453eaf5565ae3e660dbbb8f406ff8aa7897d) )
- ROM_LOAD( "mpr-22828.ic2", 0x1000000, 0x800000, CRC(691d246a) SHA1(a2d538bc2e0d592a4f18d65f52fea035e1d4c625) )
- ROM_LOAD( "mpr-22829.ic3", 0x1800000, 0x800000, CRC(00719c9c) SHA1(f0f19af4ebe2720bd822a9ea7e0004db163c706a) )
- ROM_LOAD( "mpr-22830.ic4", 0x2000000, 0x800000, CRC(bfeb0e95) SHA1(a2dac7887dec722bd4b90a526bbcb9910b636618) )
- ROM_LOAD( "mpr-22831.ic5", 0x2800000, 0x800000, CRC(697e60a8) SHA1(805dd3fb7b86d1ad8afadba58c7c026444e62e32) )
- ROM_LOAD( "mpr-22832.ic6", 0x3000000, 0x800000, CRC(78e146a0) SHA1(cb6f1313ae51addbc84f78b3fb1e5d3adbe9af7c) )
- ROM_LOAD( "mpr-22834.ic7", 0x3800000, 0x800000, CRC(cbd847ea) SHA1(7c54f909d9bc10fda12bf28d5d4b83052a0583d4) )
- ROM_LOAD( "mpr-22834.ic8", 0x4000000, 0x800000, CRC(3bfc6571) SHA1(c3d7e1a75a8a2490c3b9b6f475ec948c40c84085) )
- ROM_LOAD( "mpr-22835.ic9", 0x4800000, 0x800000, CRC(c0a14f8e) SHA1(811d95d3741a14a215f34b3dc465e4944d746568) )
- ROM_LOAD( "mpr-22836.ic10", 0x5000000, 0x800000, CRC(ee68d756) SHA1(319f5633c3a377461fcedcf4b01edac41a26ad4b) )
- ROM_LOAD( "mpr-22837.ic11", 0x5800000, 0x800000, CRC(3b53f0c9) SHA1(b9be9c3de9af3eefb16b77eb0ee8d2f144d66919) )
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-22848.ic22", 0x0000000, 0x800000, CRC(54de0bd5) SHA1(5f6be36d2d39eea681ecac14358b92eaf4bf6c1e) )
+ ROM_LOAD( "mpr-22827.ic1", 0x0800000, 0x800000, CRC(eeb1b975) SHA1(929f453eaf5565ae3e660dbbb8f406ff8aa7897d) )
+ ROM_LOAD( "mpr-22828.ic2", 0x1000000, 0x800000, CRC(691d246a) SHA1(a2d538bc2e0d592a4f18d65f52fea035e1d4c625) )
+ ROM_LOAD( "mpr-22829.ic3", 0x1800000, 0x800000, CRC(00719c9c) SHA1(f0f19af4ebe2720bd822a9ea7e0004db163c706a) )
+ ROM_LOAD( "mpr-22830.ic4", 0x2000000, 0x800000, CRC(bfeb0e95) SHA1(a2dac7887dec722bd4b90a526bbcb9910b636618) )
+ ROM_LOAD( "mpr-22831.ic5", 0x2800000, 0x800000, CRC(697e60a8) SHA1(805dd3fb7b86d1ad8afadba58c7c026444e62e32) )
+ ROM_LOAD( "mpr-22832.ic6", 0x3000000, 0x800000, CRC(78e146a0) SHA1(cb6f1313ae51addbc84f78b3fb1e5d3adbe9af7c) )
+ ROM_LOAD( "mpr-22834.ic7", 0x3800000, 0x800000, CRC(cbd847ea) SHA1(7c54f909d9bc10fda12bf28d5d4b83052a0583d4) )
+ ROM_LOAD( "mpr-22834.ic8", 0x4000000, 0x800000, CRC(3bfc6571) SHA1(c3d7e1a75a8a2490c3b9b6f475ec948c40c84085) )
+ ROM_LOAD( "mpr-22835.ic9", 0x4800000, 0x800000, CRC(c0a14f8e) SHA1(811d95d3741a14a215f34b3dc465e4944d746568) )
+ ROM_LOAD( "mpr-22836.ic10", 0x5000000, 0x800000, CRC(ee68d756) SHA1(319f5633c3a377461fcedcf4b01edac41a26ad4b) )
+ ROM_LOAD( "mpr-22837.ic11", 0x5800000, 0x800000, CRC(3b53f0c9) SHA1(b9be9c3de9af3eefb16b77eb0ee8d2f144d66919) )
ROM_LOAD( "mpr-22838.ic12", 0x6000000, 0x800000, CRC(c17a2228) SHA1(0fcea748f5bacfdc784275e6f810001897f07bf5) )
- ROM_LOAD( "mpr-22839.ic13", 0x6800000, 0x800000, CRC(31ab7352) SHA1(3a5b5a04172d4d32c2fcff540dd71ddb99bf662c) )
- ROM_LOAD( "mpr-22840.ic14", 0x7000000, 0x800000, CRC(af4c757b) SHA1(b17722fa1f762c38e777ba36ffaf967062f86eb9) )
- ROM_LOAD( "mpr-22841.ic15", 0x7800000, 0x800000, CRC(7adceb6b) SHA1(17e1833d3d22a244cd16ba93c74bd25bbaa1018d) )
- ROM_LOAD( "mpr-22842.ic16", 0x8000000, 0x800000, CRC(1ce2ec11) SHA1(279464955f3b10c71aef1e41c68337f85d871739) )
- ROM_LOAD( "mpr-22843.ic17", 0x8800000, 0x800000, CRC(1c659384) SHA1(4c5ca20c9924c56e5f7a51ecaaafac3c5c6f91c8) )
- ROM_LOAD( "mpr-22844.ic18", 0x9000000, 0x800000, CRC(361ea725) SHA1(b2d17b2f09b9ae1e19bdc395189fa966ba462c06) )
- ROM_LOAD( "mpr-22845.ic19", 0x9800000, 0x800000, CRC(3327aed1) SHA1(8bd81aa79ffe764da5810fe79a317530a4f3c191) )
- ROM_LOAD( "mpr-22846.ic20", 0xa000000, 0x800000, CRC(d4148f39) SHA1(b6598ce52bcaa42805c581de326c953d27c1b2b4) )
- ROM_LOAD( "mpr-22847.ic21", 0xa800000, 0x800000, CRC(955ad42e) SHA1(e396ca02b5786557434632c4fac56af3a4a9f8ce) )
+ ROM_LOAD( "mpr-22839.ic13", 0x6800000, 0x800000, CRC(31ab7352) SHA1(3a5b5a04172d4d32c2fcff540dd71ddb99bf662c) )
+ ROM_LOAD( "mpr-22840.ic14", 0x7000000, 0x800000, CRC(af4c757b) SHA1(b17722fa1f762c38e777ba36ffaf967062f86eb9) )
+ ROM_LOAD( "mpr-22841.ic15", 0x7800000, 0x800000, CRC(7adceb6b) SHA1(17e1833d3d22a244cd16ba93c74bd25bbaa1018d) )
+ ROM_LOAD( "mpr-22842.ic16", 0x8000000, 0x800000, CRC(1ce2ec11) SHA1(279464955f3b10c71aef1e41c68337f85d871739) )
+ ROM_LOAD( "mpr-22843.ic17", 0x8800000, 0x800000, CRC(1c659384) SHA1(4c5ca20c9924c56e5f7a51ecaaafac3c5c6f91c8) )
+ ROM_LOAD( "mpr-22844.ic18", 0x9000000, 0x800000, CRC(361ea725) SHA1(b2d17b2f09b9ae1e19bdc395189fa966ba462c06) )
+ ROM_LOAD( "mpr-22845.ic19", 0x9800000, 0x800000, CRC(3327aed1) SHA1(8bd81aa79ffe764da5810fe79a317530a4f3c191) )
+ ROM_LOAD( "mpr-22846.ic20", 0xa000000, 0x800000, CRC(d4148f39) SHA1(b6598ce52bcaa42805c581de326c953d27c1b2b4) )
+ ROM_LOAD( "mpr-22847.ic21", 0xa800000, 0x800000, CRC(955ad42e) SHA1(e396ca02b5786557434632c4fac56af3a4a9f8ce) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "f355twin-key.bin", 0, 4, CRC(7d915a40) SHA1(ea441c10673b79237a4e7368948cfad31ed45a26) )
ROM_END
ROM_START( f355twn2 )
- ROM_REGION( 0x200000, "maincpu", 0)
F355_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23399.ic22", 0x0000000, 0x400000, CRC(36de514c) SHA1(1c32064169c233156921fdf170c1958dc0f8a750) )
- ROM_LOAD( "mpr-23378.ic1", 0x0800000, 0x800000, CRC(1ad80f12) SHA1(415a021987e07bb298e43eacb54ff898619837b1) )
- ROM_LOAD( "mpr-23379.ic2", 0x1000000, 0x800000, CRC(a198f0a8) SHA1(7025adfd26f80087fa405acb49797d5c77a55e98) )
- ROM_LOAD( "mpr-23380.ic3", 0x1800000, 0x800000, CRC(b1993286) SHA1(01ddc81ba3542f37dd2dadac972114ec254059a1) )
- ROM_LOAD( "mpr-23381.ic4", 0x2000000, 0x800000, CRC(1204d518) SHA1(5b272be2ff7d48ee8005194d03ae79a01cea1b92) )
- ROM_LOAD( "mpr-23382.ic5", 0x2800000, 0x800000, CRC(f2f3f7ab) SHA1(3e662197d7cc0b606706a2edb9433093d2bcd2d9) )
- ROM_LOAD( "mpr-23383.ic6", 0x3000000, 0x800000, CRC(f19069c1) SHA1(ccec4008d95f8305e9d77a5b34a3de8aec3606dc) )
- ROM_LOAD( "mpr-23384.ic7", 0x3800000, 0x800000, CRC(5150bb17) SHA1(9fab19f02e6f79e68e8e10aad78e47135081957d) )
- ROM_LOAD( "mpr-23385.ic8", 0x4000000, 0x800000, CRC(747e4025) SHA1(ad3ee65ac473fda8c82c5e3dd349abaa9312bd35) )
- ROM_LOAD( "mpr-23386.ic9", 0x4800000, 0x800000, CRC(28e22914) SHA1(e57d627de314dd13c229de91d061588df53b2164) )
- ROM_LOAD( "mpr-23387.ic10", 0x5000000, 0x800000, CRC(3b5c0fe4) SHA1(cbe93bf95d6386e5a0d44e27e6953e259f8667bd) )
- ROM_LOAD( "mpr-23388.ic11", 0x5800000, 0x800000, CRC(35d55060) SHA1(7c566f2ee82478aa63689f96088138902d9ee710) )
- ROM_LOAD( "mpr-23389.ic12", 0x6000000, 0x800000, CRC(360b9078) SHA1(26160273848d4f9c3992ea125b0d36bed58add49) )
- ROM_LOAD( "mpr-23390.ic13", 0x6800000, 0x800000, CRC(d5878f2d) SHA1(d918a37198033c74dadc1c531889f61c88ef94a8) )
- ROM_LOAD( "mpr-23391.ic14", 0x7000000, 0x800000, CRC(eef8b0c6) SHA1(0339a094cbecf97c785bb1071b2b598c1ab60e40) )
- ROM_LOAD( "mpr-23392.ic15", 0x7800000, 0x800000, CRC(df16126b) SHA1(b932afe38dd8e5f96412807743f44043fe450f14) )
- ROM_LOAD( "mpr-23393.ic16", 0x8000000, 0x800000, CRC(e6d383a3) SHA1(6a77318f718171fe998a8e18d542dd43b8a9b87d) )
- ROM_LOAD( "mpr-23394.ic17", 0x8800000, 0x800000, CRC(045235c4) SHA1(f1c4e09847840769d26719a26bdcf3c9241280a5) )
- ROM_LOAD( "mpr-23395.ic18", 0x9000000, 0x800000, CRC(ed645203) SHA1(b621c96c9ca49a7582a50bf5c513b910dead4e13) )
- ROM_LOAD( "mpr-23396.ic19", 0x9800000, 0x800000, CRC(42826956) SHA1(386eca3cda2bddb1825dbae850f0c17d1374eb41) )
- ROM_LOAD( "mpr-23397.ic20", 0xa000000, 0x800000, CRC(28d2caf6) SHA1(67a3bc19abccf7f211c3aae67e751815857bd564) )
- ROM_LOAD( "mpr-23398.ic21", 0xa800000, 0x800000, CRC(ea4d4d2a) SHA1(3dc9c7164516ae7f3b988c088ab819d8fd40d75e) )
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23399.ic22", 0x0000000, 0x400000, CRC(36de514c) SHA1(1c32064169c233156921fdf170c1958dc0f8a750) )
+ ROM_LOAD( "mpr-23378.ic1", 0x0800000, 0x800000, CRC(1ad80f12) SHA1(415a021987e07bb298e43eacb54ff898619837b1) )
+ ROM_LOAD( "mpr-23379.ic2", 0x1000000, 0x800000, CRC(a198f0a8) SHA1(7025adfd26f80087fa405acb49797d5c77a55e98) )
+ ROM_LOAD( "mpr-23380.ic3", 0x1800000, 0x800000, CRC(b1993286) SHA1(01ddc81ba3542f37dd2dadac972114ec254059a1) )
+ ROM_LOAD( "mpr-23381.ic4", 0x2000000, 0x800000, CRC(1204d518) SHA1(5b272be2ff7d48ee8005194d03ae79a01cea1b92) )
+ ROM_LOAD( "mpr-23382.ic5", 0x2800000, 0x800000, CRC(f2f3f7ab) SHA1(3e662197d7cc0b606706a2edb9433093d2bcd2d9) )
+ ROM_LOAD( "mpr-23383.ic6", 0x3000000, 0x800000, CRC(f19069c1) SHA1(ccec4008d95f8305e9d77a5b34a3de8aec3606dc) )
+ ROM_LOAD( "mpr-23384.ic7", 0x3800000, 0x800000, CRC(5150bb17) SHA1(9fab19f02e6f79e68e8e10aad78e47135081957d) )
+ ROM_LOAD( "mpr-23385.ic8", 0x4000000, 0x800000, CRC(747e4025) SHA1(ad3ee65ac473fda8c82c5e3dd349abaa9312bd35) )
+ ROM_LOAD( "mpr-23386.ic9", 0x4800000, 0x800000, CRC(28e22914) SHA1(e57d627de314dd13c229de91d061588df53b2164) )
+ ROM_LOAD( "mpr-23387.ic10", 0x5000000, 0x800000, CRC(3b5c0fe4) SHA1(cbe93bf95d6386e5a0d44e27e6953e259f8667bd) )
+ ROM_LOAD( "mpr-23388.ic11", 0x5800000, 0x800000, CRC(35d55060) SHA1(7c566f2ee82478aa63689f96088138902d9ee710) )
+ ROM_LOAD( "mpr-23389.ic12", 0x6000000, 0x800000, CRC(360b9078) SHA1(26160273848d4f9c3992ea125b0d36bed58add49) )
+ ROM_LOAD( "mpr-23390.ic13", 0x6800000, 0x800000, CRC(d5878f2d) SHA1(d918a37198033c74dadc1c531889f61c88ef94a8) )
+ ROM_LOAD( "mpr-23391.ic14", 0x7000000, 0x800000, CRC(eef8b0c6) SHA1(0339a094cbecf97c785bb1071b2b598c1ab60e40) )
+ ROM_LOAD( "mpr-23392.ic15", 0x7800000, 0x800000, CRC(df16126b) SHA1(b932afe38dd8e5f96412807743f44043fe450f14) )
+ ROM_LOAD( "mpr-23393.ic16", 0x8000000, 0x800000, CRC(e6d383a3) SHA1(6a77318f718171fe998a8e18d542dd43b8a9b87d) )
+ ROM_LOAD( "mpr-23394.ic17", 0x8800000, 0x800000, CRC(045235c4) SHA1(f1c4e09847840769d26719a26bdcf3c9241280a5) )
+ ROM_LOAD( "mpr-23395.ic18", 0x9000000, 0x800000, CRC(ed645203) SHA1(b621c96c9ca49a7582a50bf5c513b910dead4e13) )
+ ROM_LOAD( "mpr-23396.ic19", 0x9800000, 0x800000, CRC(42826956) SHA1(386eca3cda2bddb1825dbae850f0c17d1374eb41) )
+ ROM_LOAD( "mpr-23397.ic20", 0xa000000, 0x800000, CRC(28d2caf6) SHA1(67a3bc19abccf7f211c3aae67e751815857bd564) )
+ ROM_LOAD( "mpr-23398.ic21", 0xa800000, 0x800000, CRC(ea4d4d2a) SHA1(3dc9c7164516ae7f3b988c088ab819d8fd40d75e) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "f355twn2-key.bin", 0, 4, CRC(784fab7a) SHA1(5d9687876b390d35309c0b1404f5717daa533286) )
ROM_END
ROM_START( alpiltdx )
- ROM_REGION( 0x200000, "maincpu", 0)
AIRLINE_BIOS
NAOMI_DEFAULT_EEPROM_NO_BD
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "epr-21787b.ic22", 0x0000000, 0x400000, CRC(56893156) SHA1(8e56e0633f92b1f50105421b7eb8428f51a78b27) )
ROM_LOAD( "mpr-21728.ic1", 0x0800000, 0x800000, CRC(872338d4) SHA1(04857b300196c0ec51361d7cf7bb57274a15a326) )
ROM_LOAD( "mpr-21729.ic2", 0x1000000, 0x800000, CRC(9a9b72ad) SHA1(ce96da7904dd82abaa448df45e954521dd834ed8) )
@@ -3611,17 +3671,19 @@ ROM_START( alpiltdx )
ROM_LOAD( "mpr-21737.ic10", 0x5000000, 0x800000, CRC(260aaa98) SHA1(d1082587afe9d79f286df8b107a553ee51c27643) )
ROM_LOAD( "mpr-21738.ic11", 0x5800000, 0x800000, CRC(95a592e8) SHA1(862dce467e8805381bab001df68262f1baf3c498) )
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "alpiltdx-key.bin", 0, 4, CRC(bb539511) SHA1(dea206e7db23fdabf7b957104ddd1499eff509ff) )
+
// on-cart X76F100 eeprom contents
ROM_REGION( 0x84, "naomibd_eeprom", 0 )
ROM_LOAD( "airlinepdx.sf", 0x000000, 0x000084, CRC(404b2add) SHA1(540c8474806775646ace111a2993397b1419fee3) )
ROM_END
ROM_START( alpilota )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "epr-21739a.ic22", 0x000000, 0x400000, CRC(08f22bab) SHA1(fedc80eef7c824381fd834cc04202383c9340c4f) )
ROM_LOAD( "mpr-21728.ic1", 0x0800000, 0x800000, CRC(872338d4) SHA1(04857b300196c0ec51361d7cf7bb57274a15a326) )
ROM_LOAD( "mpr-21729.ic2", 0x1000000, 0x800000, CRC(9a9b72ad) SHA1(ce96da7904dd82abaa448df45e954521dd834ed8) )
@@ -3634,70 +3696,71 @@ ROM_START( alpilota )
ROM_LOAD( "mpr-21736.ic9", 0x4800000, 0x800000, CRC(d74eda63) SHA1(d6794fa433cea9f06dc0a20dc9e10388162e7fd8) )
ROM_LOAD( "mpr-21737.ic10", 0x5000000, 0x800000, CRC(260aaa98) SHA1(d1082587afe9d79f286df8b107a553ee51c27643) )
ROM_LOAD( "mpr-21738.ic11", 0x5800000, 0x800000, CRC(95a592e8) SHA1(862dce467e8805381bab001df68262f1baf3c498) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "alpilota-key.bin", 0, 4, CRC(bb539511) SHA1(dea206e7db23fdabf7b957104ddd1499eff509ff) )
ROM_END
ROM_START( hotd2 )
- ROM_REGION( 0x200000, "maincpu", 0)
HOTD2_BIOS
NAOMI_DEFAULT_EEPROM
ROM_REGION( 0x10000, "gunboard", ROMREGION_ERASEFF ) // ROM on the lightgun i/o board, near a D78213 ROM-less MCU
ROM_LOAD( "tg12.ic2", 0x00000, 0x10000, CRC(2c9600b1) SHA1(91813a43851c48d400fde41b1198dabf55bade2d) )
- ROM_REGION( 0xa800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-21585.ic22", 0x0000000, 0x200000, CRC(b23d1a0c) SHA1(9e77980d1aa980c879886e53cc76a16d7a9d43a1) )
- ROM_LOAD( "mpr-21386.ic1", 0x0800000, 0x800000, CRC(88fb0562) SHA1(185a0eab68d86617cb6325d64c48a2dd4854622b) )
- ROM_LOAD( "mpr-21387.ic2", 0x1000000, 0x800000, CRC(5f4dd576) SHA1(5483c3949e587bbcca7e8fc7db9aff4cd2a33f02) )
- ROM_LOAD( "mpr-21388.ic3", 0x1800000, 0x800000, CRC(3e62fca4) SHA1(8cdebdebabc88160f458e1e779d9ebb4e6a14523) )
- ROM_LOAD( "mpr-21389.ic4", 0x2000000, 0x800000, CRC(6f73a852) SHA1(d5fd4c0800b3a1ea04231018fcaba79184fa1d87) )
- ROM_LOAD( "mpr-21390.ic5", 0x2800000, 0x800000, CRC(c7950445) SHA1(4f56768f07703452ef92d183e4ee654ab9711283) )
- ROM_LOAD( "mpr-21391.ic6", 0x3000000, 0x800000, CRC(5a812247) SHA1(7636661da0cc9bd5a1a2062f9f3ef65889c86fd5) )
- ROM_LOAD( "mpr-21392.ic7", 0x3800000, 0x800000, CRC(17e9414a) SHA1(9f291c4dd9a049eeed88d80867f7fca1d15c6095) )
- ROM_LOAD( "mpr-21393.ic8", 0x4000000, 0x800000, CRC(5d2d8134) SHA1(a2941b6afd0302822133d932064d1aad873b1c04) )
- ROM_LOAD( "mpr-21394.ic9", 0x4800000, 0x800000, CRC(eacaf26d) SHA1(21e35def0ed998a70cc982f373feb50b7974612a) )
- ROM_LOAD( "mpr-21395.ic10", 0x5000000, 0x800000, CRC(1e3686be) SHA1(7ec1b3c9c94882c5fe7b6ba6ffe9220e90824870) )
- ROM_LOAD( "mpr-21396.ic11", 0x5800000, 0x800000, CRC(5ada00a2) SHA1(981c65310c89e7a26e2b2c3e57623e78f6ad33d0) )
- ROM_LOAD( "mpr-21397.ic12", 0x6000000, 0x800000, CRC(9eff6247) SHA1(9257492fc3e48516897002dd3ff247093af27d87) )
- ROM_LOAD( "mpr-21398.ic13", 0x6800000, 0x800000, CRC(8a80b16a) SHA1(ffeb061b31027ac322c14b9050c686b2b844d2e1) )
- ROM_LOAD( "mpr-21399.ic14", 0x7000000, 0x800000, CRC(7ae20daf) SHA1(b36d8e490ac477db178b8df08f7997448308d3fd) )
- ROM_LOAD( "mpr-21400.ic15", 0x7800000, 0x800000, CRC(fbb8641b) SHA1(6cb44f0a3f80eb68a218bba97b2395961c596b9c) )
- ROM_LOAD( "mpr-21401.ic16", 0x8000000, 0x800000, CRC(3881ec23) SHA1(e4b87a6c6fd6a2eeda8e0e5ae7bed01b18386e54) )
- ROM_LOAD( "mpr-21402.ic17", 0x8800000, 0x800000, CRC(66bff6e4) SHA1(f87d618231b71b65952fc7ea7ccabdd208622a00) )
- ROM_LOAD( "mpr-21403.ic18", 0x9000000, 0x800000, CRC(8cd2f654) SHA1(77eb7061caaf0288aad04ed88c4247d27617f338) )
- ROM_LOAD( "mpr-21404.ic19", 0x9800000, 0x800000, CRC(6cf6e705) SHA1(68d7e9becefe27b556e0c5d7ba00efd2d1fb71ca) )
- ROM_LOAD( "mpr-21405.ic20", 0xa000000, 0x800000, CRC(495e6265) SHA1(57936367fec0000691641525682fb8aefc4e4f56) )
+ ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-21585.ic22", 0x0000000, 0x200000, CRC(b23d1a0c) SHA1(9e77980d1aa980c879886e53cc76a16d7a9d43a1) )
+ ROM_LOAD( "mpr-21386.ic1", 0x0800000, 0x800000, CRC(88fb0562) SHA1(185a0eab68d86617cb6325d64c48a2dd4854622b) )
+ ROM_LOAD( "mpr-21387.ic2", 0x1000000, 0x800000, CRC(5f4dd576) SHA1(5483c3949e587bbcca7e8fc7db9aff4cd2a33f02) )
+ ROM_LOAD( "mpr-21388.ic3", 0x1800000, 0x800000, CRC(3e62fca4) SHA1(8cdebdebabc88160f458e1e779d9ebb4e6a14523) )
+ ROM_LOAD( "mpr-21389.ic4", 0x2000000, 0x800000, CRC(6f73a852) SHA1(d5fd4c0800b3a1ea04231018fcaba79184fa1d87) )
+ ROM_LOAD( "mpr-21390.ic5", 0x2800000, 0x800000, CRC(c7950445) SHA1(4f56768f07703452ef92d183e4ee654ab9711283) )
+ ROM_LOAD( "mpr-21391.ic6", 0x3000000, 0x800000, CRC(5a812247) SHA1(7636661da0cc9bd5a1a2062f9f3ef65889c86fd5) )
+ ROM_LOAD( "mpr-21392.ic7", 0x3800000, 0x800000, CRC(17e9414a) SHA1(9f291c4dd9a049eeed88d80867f7fca1d15c6095) )
+ ROM_LOAD( "mpr-21393.ic8", 0x4000000, 0x800000, CRC(5d2d8134) SHA1(a2941b6afd0302822133d932064d1aad873b1c04) )
+ ROM_LOAD( "mpr-21394.ic9", 0x4800000, 0x800000, CRC(eacaf26d) SHA1(21e35def0ed998a70cc982f373feb50b7974612a) )
+ ROM_LOAD( "mpr-21395.ic10", 0x5000000, 0x800000, CRC(1e3686be) SHA1(7ec1b3c9c94882c5fe7b6ba6ffe9220e90824870) )
+ ROM_LOAD( "mpr-21396.ic11", 0x5800000, 0x800000, CRC(5ada00a2) SHA1(981c65310c89e7a26e2b2c3e57623e78f6ad33d0) )
+ ROM_LOAD( "mpr-21397.ic12", 0x6000000, 0x800000, CRC(9eff6247) SHA1(9257492fc3e48516897002dd3ff247093af27d87) )
+ ROM_LOAD( "mpr-21398.ic13", 0x6800000, 0x800000, CRC(8a80b16a) SHA1(ffeb061b31027ac322c14b9050c686b2b844d2e1) )
+ ROM_LOAD( "mpr-21399.ic14", 0x7000000, 0x800000, CRC(7ae20daf) SHA1(b36d8e490ac477db178b8df08f7997448308d3fd) )
+ ROM_LOAD( "mpr-21400.ic15", 0x7800000, 0x800000, CRC(fbb8641b) SHA1(6cb44f0a3f80eb68a218bba97b2395961c596b9c) )
+ ROM_LOAD( "mpr-21401.ic16", 0x8000000, 0x800000, CRC(3881ec23) SHA1(e4b87a6c6fd6a2eeda8e0e5ae7bed01b18386e54) )
+ ROM_LOAD( "mpr-21402.ic17", 0x8800000, 0x800000, CRC(66bff6e4) SHA1(f87d618231b71b65952fc7ea7ccabdd208622a00) )
+ ROM_LOAD( "mpr-21403.ic18", 0x9000000, 0x800000, CRC(8cd2f654) SHA1(77eb7061caaf0288aad04ed88c4247d27617f338) )
+ ROM_LOAD( "mpr-21404.ic19", 0x9800000, 0x800000, CRC(6cf6e705) SHA1(68d7e9becefe27b556e0c5d7ba00efd2d1fb71ca) )
+ ROM_LOAD( "mpr-21405.ic20", 0xa000000, 0x800000, CRC(495e6265) SHA1(57936367fec0000691641525682fb8aefc4e4f56) )
ROM_END
ROM_START( hotd2o )
- ROM_REGION( 0x200000, "maincpu", 0)
HOTD2_BIOS
NAOMI_DEFAULT_EEPROM
ROM_REGION( 0x10000, "gunboard", ROMREGION_ERASEFF ) // ROM on the lightgun i/o board, near a D78213 ROM-less MCU
ROM_LOAD( "tg12.ic2", 0x00000, 0x10000, CRC(2c9600b1) SHA1(91813a43851c48d400fde41b1198dabf55bade2d) )
- ROM_REGION( 0xa800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-21385.ic22", 0x0000000, 0x200000, CRC(dedffe5f) SHA1(98b2a4c67ecb30cb096b9cea9061d904cf495937) )
- ROM_LOAD( "mpr-21386.ic1", 0x0800000, 0x800000, CRC(88fb0562) SHA1(185a0eab68d86617cb6325d64c48a2dd4854622b) )
- ROM_LOAD( "mpr-21387.ic2", 0x1000000, 0x800000, CRC(5f4dd576) SHA1(5483c3949e587bbcca7e8fc7db9aff4cd2a33f02) )
- ROM_LOAD( "mpr-21388.ic3", 0x1800000, 0x800000, CRC(3e62fca4) SHA1(8cdebdebabc88160f458e1e779d9ebb4e6a14523) )
- ROM_LOAD( "mpr-21389.ic4", 0x2000000, 0x800000, CRC(6f73a852) SHA1(d5fd4c0800b3a1ea04231018fcaba79184fa1d87) )
- ROM_LOAD( "mpr-21390.ic5", 0x2800000, 0x800000, CRC(c7950445) SHA1(4f56768f07703452ef92d183e4ee654ab9711283) )
- ROM_LOAD( "mpr-21391.ic6", 0x3000000, 0x800000, CRC(5a812247) SHA1(7636661da0cc9bd5a1a2062f9f3ef65889c86fd5) )
- ROM_LOAD( "mpr-21392.ic7", 0x3800000, 0x800000, CRC(17e9414a) SHA1(9f291c4dd9a049eeed88d80867f7fca1d15c6095) )
- ROM_LOAD( "mpr-21393.ic8", 0x4000000, 0x800000, CRC(5d2d8134) SHA1(a2941b6afd0302822133d932064d1aad873b1c04) )
- ROM_LOAD( "mpr-21394.ic9", 0x4800000, 0x800000, CRC(eacaf26d) SHA1(21e35def0ed998a70cc982f373feb50b7974612a) )
- ROM_LOAD( "mpr-21395.ic10", 0x5000000, 0x800000, CRC(1e3686be) SHA1(7ec1b3c9c94882c5fe7b6ba6ffe9220e90824870) )
- ROM_LOAD( "mpr-21396.ic11", 0x5800000, 0x800000, CRC(5ada00a2) SHA1(981c65310c89e7a26e2b2c3e57623e78f6ad33d0) )
- ROM_LOAD( "mpr-21397.ic12", 0x6000000, 0x800000, CRC(9eff6247) SHA1(9257492fc3e48516897002dd3ff247093af27d87) )
- ROM_LOAD( "mpr-21398.ic13", 0x6800000, 0x800000, CRC(8a80b16a) SHA1(ffeb061b31027ac322c14b9050c686b2b844d2e1) )
- ROM_LOAD( "mpr-21399.ic14", 0x7000000, 0x800000, CRC(7ae20daf) SHA1(b36d8e490ac477db178b8df08f7997448308d3fd) )
- ROM_LOAD( "mpr-21400.ic15", 0x7800000, 0x800000, CRC(fbb8641b) SHA1(6cb44f0a3f80eb68a218bba97b2395961c596b9c) )
- ROM_LOAD( "mpr-21401.ic16", 0x8000000, 0x800000, CRC(3881ec23) SHA1(e4b87a6c6fd6a2eeda8e0e5ae7bed01b18386e54) )
- ROM_LOAD( "mpr-21402.ic17", 0x8800000, 0x800000, CRC(66bff6e4) SHA1(f87d618231b71b65952fc7ea7ccabdd208622a00) )
- ROM_LOAD( "mpr-21403.ic18", 0x9000000, 0x800000, CRC(8cd2f654) SHA1(77eb7061caaf0288aad04ed88c4247d27617f338) )
- ROM_LOAD( "mpr-21404.ic19", 0x9800000, 0x800000, CRC(6cf6e705) SHA1(68d7e9becefe27b556e0c5d7ba00efd2d1fb71ca) )
- ROM_LOAD( "mpr-21405.ic20", 0xa000000, 0x800000, CRC(495e6265) SHA1(57936367fec0000691641525682fb8aefc4e4f56) )
+ ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-21385.ic22", 0x0000000, 0x200000, CRC(dedffe5f) SHA1(98b2a4c67ecb30cb096b9cea9061d904cf495937) )
+ ROM_LOAD( "mpr-21386.ic1", 0x0800000, 0x800000, CRC(88fb0562) SHA1(185a0eab68d86617cb6325d64c48a2dd4854622b) )
+ ROM_LOAD( "mpr-21387.ic2", 0x1000000, 0x800000, CRC(5f4dd576) SHA1(5483c3949e587bbcca7e8fc7db9aff4cd2a33f02) )
+ ROM_LOAD( "mpr-21388.ic3", 0x1800000, 0x800000, CRC(3e62fca4) SHA1(8cdebdebabc88160f458e1e779d9ebb4e6a14523) )
+ ROM_LOAD( "mpr-21389.ic4", 0x2000000, 0x800000, CRC(6f73a852) SHA1(d5fd4c0800b3a1ea04231018fcaba79184fa1d87) )
+ ROM_LOAD( "mpr-21390.ic5", 0x2800000, 0x800000, CRC(c7950445) SHA1(4f56768f07703452ef92d183e4ee654ab9711283) )
+ ROM_LOAD( "mpr-21391.ic6", 0x3000000, 0x800000, CRC(5a812247) SHA1(7636661da0cc9bd5a1a2062f9f3ef65889c86fd5) )
+ ROM_LOAD( "mpr-21392.ic7", 0x3800000, 0x800000, CRC(17e9414a) SHA1(9f291c4dd9a049eeed88d80867f7fca1d15c6095) )
+ ROM_LOAD( "mpr-21393.ic8", 0x4000000, 0x800000, CRC(5d2d8134) SHA1(a2941b6afd0302822133d932064d1aad873b1c04) )
+ ROM_LOAD( "mpr-21394.ic9", 0x4800000, 0x800000, CRC(eacaf26d) SHA1(21e35def0ed998a70cc982f373feb50b7974612a) )
+ ROM_LOAD( "mpr-21395.ic10", 0x5000000, 0x800000, CRC(1e3686be) SHA1(7ec1b3c9c94882c5fe7b6ba6ffe9220e90824870) )
+ ROM_LOAD( "mpr-21396.ic11", 0x5800000, 0x800000, CRC(5ada00a2) SHA1(981c65310c89e7a26e2b2c3e57623e78f6ad33d0) )
+ ROM_LOAD( "mpr-21397.ic12", 0x6000000, 0x800000, CRC(9eff6247) SHA1(9257492fc3e48516897002dd3ff247093af27d87) )
+ ROM_LOAD( "mpr-21398.ic13", 0x6800000, 0x800000, CRC(8a80b16a) SHA1(ffeb061b31027ac322c14b9050c686b2b844d2e1) )
+ ROM_LOAD( "mpr-21399.ic14", 0x7000000, 0x800000, CRC(7ae20daf) SHA1(b36d8e490ac477db178b8df08f7997448308d3fd) )
+ ROM_LOAD( "mpr-21400.ic15", 0x7800000, 0x800000, CRC(fbb8641b) SHA1(6cb44f0a3f80eb68a218bba97b2395961c596b9c) )
+ ROM_LOAD( "mpr-21401.ic16", 0x8000000, 0x800000, CRC(3881ec23) SHA1(e4b87a6c6fd6a2eeda8e0e5ae7bed01b18386e54) )
+ ROM_LOAD( "mpr-21402.ic17", 0x8800000, 0x800000, CRC(66bff6e4) SHA1(f87d618231b71b65952fc7ea7ccabdd208622a00) )
+ ROM_LOAD( "mpr-21403.ic18", 0x9000000, 0x800000, CRC(8cd2f654) SHA1(77eb7061caaf0288aad04ed88c4247d27617f338) )
+ ROM_LOAD( "mpr-21404.ic19", 0x9800000, 0x800000, CRC(6cf6e705) SHA1(68d7e9becefe27b556e0c5d7ba00efd2d1fb71ca) )
+ ROM_LOAD( "mpr-21405.ic20", 0xa000000, 0x800000, CRC(495e6265) SHA1(57936367fec0000691641525682fb8aefc4e4f56) )
ROM_END
/*
@@ -3714,11 +3777,10 @@ Serial: BAJE-01A0021
*/
ROM_START( ggram2 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x6000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x6000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-21820.ic22", 0x0000000, 0x0200000, CRC(0a198278) SHA1(0df5fc8b56ddafc66d92cb3923b851a5717b551d) )
ROM_RELOAD( 0x200000, 0x200000 )
ROM_RELOAD( 0x400000, 0x200000 )
@@ -3734,6 +3796,9 @@ ROM_START( ggram2 )
ROM_LOAD("mpr-21829.ic9", 0x4800000, 0x0800000, CRC(c5553df2) SHA1(b97a82ac9133dab4bfd87392f803754b6d00389f) )
ROM_LOAD("mpr-21830.ic10", 0x5000000, 0x0800000, CRC(e01ceb86) SHA1(dd5703d7712cfc0053bddfff63e78dda372b6ff2) )
ROM_LOAD("mpr-21831.ic11", 0x5800000, 0x0800000, CRC(751848d0) SHA1(9c2267fd3c6f9ea5f2679bb2ca20d511a49b2845) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ggram2-key.bin", 0, 4, CRC(14283fd8) SHA1(c928382e512e9fb685436020f88b8245b7c60d41) )
ROM_END
/*
@@ -3772,11 +3837,10 @@ Serial: BCCG-21A0451
*/
ROM_START( gram2000 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23377.ic11", 0x0000000, 0x0400000, CRC(4ca3149c) SHA1(9d25fc659658b416202b033754669be2f3abcdbe) )
// the 0x0800000 - 0x0ffffff space mirrors part of roms 17/18, see ROM_COPY below, gets tested as 'IC1' if actel_id is 0xffff
ROM_LOAD32_WORD("mpr-23357.ic17", 0x1000000, 0x0800000, CRC(eaf77487) SHA1(bdfc4666a6724441c11b31d89fa30c4bd11cbdd1) ) //ic 2
@@ -3800,57 +3864,64 @@ ROM_START( gram2000 )
ROM_LOAD32_WORD("mpr-23375.ic35", 0xa000000, 0x0800000, CRC(7d4043db) SHA1(cadf22419e5b63c33a179bb6b0742035fc9d8028) ) //ic 20
ROM_LOAD32_WORD("mpr-23376.ic36", 0xa000002, 0x0800000, CRC(e09cb473) SHA1(c3ec980f1a56142a0e06bae9594d6038acf0690d) ) //ic 21
- ROM_COPY( "user1", 0x1400000, 0x0800000, 0x0800000 ) // mirror data so IC1 check can pass
- //ROM_COPY( "user1", 0x1000000, 0x0400000, 0x0c00000 ) // or does it mirror the start of 17/18 from 0x0400000 upwards like this, check on real hw
+ ROM_COPY( "rom_board", 0x1400000, 0x0800000, 0x0800000 ) // mirror data so IC1 check can pass
+ //ROM_COPY( "rom_board", 0x1000000, 0x0400000, 0x0c00000 ) // or does it mirror the start of 17/18 from 0x0400000 upwards like this, check on real hw
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "gram2000-key.bin", 0, 4, CRC(179314d9) SHA1(3dbbc04e9ff62800d08c4a239af3a83252a28dc0) )
ROM_END
ROM_START( crackndj )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xa800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23450.ic22", 0x0000000, 0x400000, CRC(ba0ee505) SHA1(7777f532ace9032a25fc949316c07bd70dd03851) )
- ROM_LOAD( "mpr-23525.ic1", 0x0800000, 0x1000000, CRC(01996526) SHA1(1080305424989593e606f8195d295e0fb822ae43) )
- ROM_LOAD( "mpr-23526.ic2", 0x1800000, 0x1000000, CRC(d7a0d52e) SHA1(64a03c6da70c64fc62dbb0f9a4b0fb35de59c72f) )
- ROM_LOAD( "mpr-23527.ic3", 0x2800000, 0x1000000, CRC(9361afd9) SHA1(fee55341b623cc1928d8f95acd53e20759db725f) )
- ROM_LOAD( "mpr-23528.ic4", 0x3800000, 0x1000000, CRC(e40b7970) SHA1(6467463994f2b4535f822357ff2c8ca2dd4450c8) )
- ROM_LOAD( "mpr-23529.ic5", 0x4800000, 0x1000000, CRC(5920e6e5) SHA1(eec207dba99ca541f2abc98674e8dcaef506af3b) )
- ROM_LOAD( "mpr-23530.ic6", 0x5800000, 0x1000000, CRC(2bb0aefc) SHA1(8e5e90a4b8780411a41f14f1ca16dd049aefcd4b) )
- ROM_LOAD( "mpr-23531.ic7", 0x6800000, 0x1000000, CRC(43592459) SHA1(1b69ce3c54ad2c054ea72547afba6ef55a2daf63) )
- ROM_LOAD( "mpr-23532.ic8", 0x7800000, 0x1000000, CRC(bbcddeee) SHA1(8649da1411e404953d5ebd4e459d407eb79b61b1) )
- ROM_LOAD( "mpr-23533.ic9", 0x8800000, 0x1000000, CRC(fc909c00) SHA1(9cf22a97ea272c4586f3942aefdb803bd0e6ede7) )
- ROM_LOAD( "mpr-23534.ic10", 0x9800000, 0x1000000, CRC(62ed85b6) SHA1(b88336bc6115c92a839981cb0c0d0a67b1f7eda5) )
+ ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23450.ic22", 0x0000000, 0x400000, CRC(ba0ee505) SHA1(7777f532ace9032a25fc949316c07bd70dd03851) )
+ ROM_LOAD( "mpr-23525.ic1", 0x0800000, 0x1000000, CRC(01996526) SHA1(1080305424989593e606f8195d295e0fb822ae43) )
+ ROM_LOAD( "mpr-23526.ic2", 0x1800000, 0x1000000, CRC(d7a0d52e) SHA1(64a03c6da70c64fc62dbb0f9a4b0fb35de59c72f) )
+ ROM_LOAD( "mpr-23527.ic3", 0x2800000, 0x1000000, CRC(9361afd9) SHA1(fee55341b623cc1928d8f95acd53e20759db725f) )
+ ROM_LOAD( "mpr-23528.ic4", 0x3800000, 0x1000000, CRC(e40b7970) SHA1(6467463994f2b4535f822357ff2c8ca2dd4450c8) )
+ ROM_LOAD( "mpr-23529.ic5", 0x4800000, 0x1000000, CRC(5920e6e5) SHA1(eec207dba99ca541f2abc98674e8dcaef506af3b) )
+ ROM_LOAD( "mpr-23530.ic6", 0x5800000, 0x1000000, CRC(2bb0aefc) SHA1(8e5e90a4b8780411a41f14f1ca16dd049aefcd4b) )
+ ROM_LOAD( "mpr-23531.ic7", 0x6800000, 0x1000000, CRC(43592459) SHA1(1b69ce3c54ad2c054ea72547afba6ef55a2daf63) )
+ ROM_LOAD( "mpr-23532.ic8", 0x7800000, 0x1000000, CRC(bbcddeee) SHA1(8649da1411e404953d5ebd4e459d407eb79b61b1) )
+ ROM_LOAD( "mpr-23533.ic9", 0x8800000, 0x1000000, CRC(fc909c00) SHA1(9cf22a97ea272c4586f3942aefdb803bd0e6ede7) )
+ ROM_LOAD( "mpr-23534.ic10", 0x9800000, 0x1000000, CRC(62ed85b6) SHA1(b88336bc6115c92a839981cb0c0d0a67b1f7eda5) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "crackndj-key.bin", 0, 4, CRC(6269265a) SHA1(e2ab31b0058eb130d8f54d30e86d569687f9a068) )
ROM_END
ROM_START( samba2k )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23600.ic22", 0x0000000, 0x400000, CRC(8b6fed00) SHA1(72842f266ad272e4c02be42a6529c2462fd8b63f) )
- ROM_LOAD( "mpr-23579.ic1", 0x0800000, 0x800000, CRC(ded76d71) SHA1(9187434587173f2fcc50af817222121703c253b7) )
- ROM_LOAD( "mpr-23580.ic2", 0x1000000, 0x800000, CRC(a9b29be1) SHA1(4f71b37b21623d87d805cb8d7b9da73bca1d22f3) )
- ROM_LOAD( "mpr-23581.ic3", 0x1800000, 0x800000, CRC(7c44d4c9) SHA1(a2c6e7392a2b52c1b5c0b133bb95fbe53736ca3e) )
- ROM_LOAD( "mpr-23582.ic4", 0x2000000, 0x800000, CRC(99b1af20) SHA1(598abe358d6c97a0ad6d68f5273cea1b96f73237) )
- ROM_LOAD( "mpr-23583.ic5", 0x2800000, 0x800000, CRC(7a81bbd1) SHA1(e36895d8964d1cdd3f316f0ec27356faa3d3f6e0) )
- ROM_LOAD( "mpr-23584.ic6", 0x3000000, 0x800000, CRC(e478b1df) SHA1(5b316feb618a0a61974c3fb5b4c5527873055a5b) )
- ROM_LOAD( "mpr-23585.ic7", 0x3800000, 0x800000, CRC(2f378c38) SHA1(881c6001c173c1ef8ddbb3ae15667e45fac11f96) )
- ROM_LOAD( "mpr-23586.ic8", 0x4000000, 0x800000, CRC(23bec2a7) SHA1(960a6613966bedf20c19454bbc5ec52d14c3f308) )
- ROM_LOAD( "mpr-23587.ic9", 0x4800000, 0x800000, CRC(f52a356b) SHA1(4e3783f5e8d02d09f474cc5ece457af5c4296508) )
- ROM_LOAD( "mpr-23588.ic10", 0x5000000, 0x800000, CRC(4bae020b) SHA1(e3750f87309c7ac9ab6fc504a9377971451ccb5a) )
- ROM_LOAD( "mpr-23589.ic11", 0x5800000, 0x800000, CRC(f6a09854) SHA1(d4ae9d7ddc349e353196cb145f732798a692e560) )
- ROM_LOAD( "mpr-23590.ic12s", 0x6000000, 0x800000, CRC(88e29d52) SHA1(42b66f13302772729920b9af546123c771ecec6b) )
- ROM_LOAD( "mpr-23591.ic13s", 0x6800000, 0x800000, CRC(8736d9b1) SHA1(d829d499dc147f0d14413554ff33187c7df9134f) )
- ROM_LOAD( "mpr-23592.ic14s", 0x7000000, 0x800000, CRC(c7dbeefd) SHA1(7b84d2f5532668936f60314fb3e112b1350bcc51) )
- ROM_LOAD( "mpr-23593.ic15s", 0x7800000, 0x800000, CRC(c8d63355) SHA1(64b06027ebbcfb72ead1d2041423ffd2fe4dcd97) )
- ROM_LOAD( "mpr-23594.ic16s", 0x8000000, 0x800000, CRC(30a04934) SHA1(5b3e5226b1eef9f2d9a64b89307380e2b347547e) )
- ROM_LOAD( "mpr-23595.ic17s", 0x8800000, 0x800000, CRC(1fea68ad) SHA1(d4615f6ea0b9ce6483cb688810ef7ae287aef082) )
- ROM_LOAD( "mpr-23596.ic18s", 0x9000000, 0x800000, CRC(2e57f934) SHA1(9231d3b881e210fa83dda8f03a1702166eb48750) )
- ROM_LOAD( "mpr-23597.ic19s", 0x9800000, 0x800000, CRC(fb50cfdb) SHA1(2e95407b1c8660ae8e85b2d06c13bdc474b93d6e) )
- ROM_LOAD( "mpr-23598.ic20s", 0xa000000, 0x800000, CRC(897c2304) SHA1(e21b68fd935092b5bd019e3087647e9612be1169) )
- ROM_LOAD( "mpr-23599.ic21s", 0xa800000, 0x800000, CRC(f2d1f73f) SHA1(40ac3ef9b1c3797e986fc4a0c593dd4e49df8892) )
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23600.ic22", 0x0000000, 0x400000, CRC(8b6fed00) SHA1(72842f266ad272e4c02be42a6529c2462fd8b63f) )
+ ROM_LOAD( "mpr-23579.ic1", 0x0800000, 0x800000, CRC(ded76d71) SHA1(9187434587173f2fcc50af817222121703c253b7) )
+ ROM_LOAD( "mpr-23580.ic2", 0x1000000, 0x800000, CRC(a9b29be1) SHA1(4f71b37b21623d87d805cb8d7b9da73bca1d22f3) )
+ ROM_LOAD( "mpr-23581.ic3", 0x1800000, 0x800000, CRC(7c44d4c9) SHA1(a2c6e7392a2b52c1b5c0b133bb95fbe53736ca3e) )
+ ROM_LOAD( "mpr-23582.ic4", 0x2000000, 0x800000, CRC(99b1af20) SHA1(598abe358d6c97a0ad6d68f5273cea1b96f73237) )
+ ROM_LOAD( "mpr-23583.ic5", 0x2800000, 0x800000, CRC(7a81bbd1) SHA1(e36895d8964d1cdd3f316f0ec27356faa3d3f6e0) )
+ ROM_LOAD( "mpr-23584.ic6", 0x3000000, 0x800000, CRC(e478b1df) SHA1(5b316feb618a0a61974c3fb5b4c5527873055a5b) )
+ ROM_LOAD( "mpr-23585.ic7", 0x3800000, 0x800000, CRC(2f378c38) SHA1(881c6001c173c1ef8ddbb3ae15667e45fac11f96) )
+ ROM_LOAD( "mpr-23586.ic8", 0x4000000, 0x800000, CRC(23bec2a7) SHA1(960a6613966bedf20c19454bbc5ec52d14c3f308) )
+ ROM_LOAD( "mpr-23587.ic9", 0x4800000, 0x800000, CRC(f52a356b) SHA1(4e3783f5e8d02d09f474cc5ece457af5c4296508) )
+ ROM_LOAD( "mpr-23588.ic10", 0x5000000, 0x800000, CRC(4bae020b) SHA1(e3750f87309c7ac9ab6fc504a9377971451ccb5a) )
+ ROM_LOAD( "mpr-23589.ic11", 0x5800000, 0x800000, CRC(f6a09854) SHA1(d4ae9d7ddc349e353196cb145f732798a692e560) )
+ ROM_LOAD( "mpr-23590.ic12s", 0x6000000, 0x800000, CRC(88e29d52) SHA1(42b66f13302772729920b9af546123c771ecec6b) )
+ ROM_LOAD( "mpr-23591.ic13s", 0x6800000, 0x800000, CRC(8736d9b1) SHA1(d829d499dc147f0d14413554ff33187c7df9134f) )
+ ROM_LOAD( "mpr-23592.ic14s", 0x7000000, 0x800000, CRC(c7dbeefd) SHA1(7b84d2f5532668936f60314fb3e112b1350bcc51) )
+ ROM_LOAD( "mpr-23593.ic15s", 0x7800000, 0x800000, CRC(c8d63355) SHA1(64b06027ebbcfb72ead1d2041423ffd2fe4dcd97) )
+ ROM_LOAD( "mpr-23594.ic16s", 0x8000000, 0x800000, CRC(30a04934) SHA1(5b3e5226b1eef9f2d9a64b89307380e2b347547e) )
+ ROM_LOAD( "mpr-23595.ic17s", 0x8800000, 0x800000, CRC(1fea68ad) SHA1(d4615f6ea0b9ce6483cb688810ef7ae287aef082) )
+ ROM_LOAD( "mpr-23596.ic18s", 0x9000000, 0x800000, CRC(2e57f934) SHA1(9231d3b881e210fa83dda8f03a1702166eb48750) )
+ ROM_LOAD( "mpr-23597.ic19s", 0x9800000, 0x800000, CRC(fb50cfdb) SHA1(2e95407b1c8660ae8e85b2d06c13bdc474b93d6e) )
+ ROM_LOAD( "mpr-23598.ic20s", 0xa000000, 0x800000, CRC(897c2304) SHA1(e21b68fd935092b5bd019e3087647e9612be1169) )
+ ROM_LOAD( "mpr-23599.ic21s", 0xa800000, 0x800000, CRC(f2d1f73f) SHA1(40ac3ef9b1c3797e986fc4a0c593dd4e49df8892) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "samba2k-key.bin", 0, 4, CRC(01c0d74a) SHA1(4461cfd761919ba4bc6f1d1839a880f11eaf8d0f) )
ROM_END
@@ -3862,11 +3933,10 @@ EXP: DISABLE
*/
ROM_START( ggx )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x7800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x7800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23356.ic22", 0x0000000, 0x0400000, CRC(ed2d289f) SHA1(d4f73c6cd25f320616e21f1ff0cdc0a566185dcb) )
ROM_LOAD("mpr-23342.ic1", 0x0800000, 0x0800000, CRC(4fd89557) SHA1(3a687393d38e890acb0d1b0edc3ea585773c0222) )
ROM_LOAD("mpr-23343.ic2", 0x1000000, 0x0800000, CRC(2e4417b6) SHA1(0f87fa92f01116b0acfae5f1b5a148c1a12a487f) )
@@ -3882,6 +3952,9 @@ ROM_START( ggx )
ROM_LOAD("mpr-23353.ic12", 0x6000000, 0x0800000, CRC(daa0ca24) SHA1(afce14e213e79add7fded838e71bb4447425906a) )
ROM_LOAD("mpr-23354.ic13", 0x6800000, 0x0800000, CRC(cea127f7) SHA1(11f12472ebfc93eb72b764c780e30afd4812dbe9) )
ROM_LOAD("mpr-23355.ic14", 0x7000000, 0x0800000, CRC(e809685f) SHA1(dc052b4eb4fdcfdc22c4807316ce34ee7a0d58a6) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ggx-key.bin", 0, 4, CRC(455a831b) SHA1(1834fc714224ac990a0677e8925493e92a4b5e5e) )
ROM_END
/*
@@ -3909,11 +3982,10 @@ IC11 64M 4F77 EEFE
ROM_START( hmgeo )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x6000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x6000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23716a.ic22", 0x0000000, 0x0400000, CRC(c5cb0d3b) SHA1(20de8f5ee183e996ccde77b10564a302939662db) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-23705.ic1", 0x0800000, 0x0800000, CRC(2549b57d) SHA1(02c04c8ccb0de680171d06700ca9a40208286894) )
@@ -3926,7 +3998,10 @@ ROM_START( hmgeo )
ROM_LOAD("mpr-23712.ic8", 0x4000000, 0x0800000, CRC(154f10ce) SHA1(67f6ff297f77632efe1965a81ed9f5c7dfa7a6b3) )
ROM_LOAD("mpr-23713.ic9", 0x4800000, 0x0800000, CRC(2969bac7) SHA1(5f1cf6ac726c2fe183d66e4022962e44592f9ccd) )
ROM_LOAD("mpr-23714.ic10",0x5000000, 0x0800000, CRC(da462c44) SHA1(ca450b6c07f939f96eba7b44c45b4e38abd598aa) )
- ROM_LOAD("mpr-23715.ic11",0x5800000, 0x0800000, CRC(c750abbd) SHA1(2a5bedc2b21cd3f991c7145ccfd8c7a9e7f647ae) )
+ ROM_LOAD("mpr-23715.ic11",0x5800000, 0x0800000, CRC(c750abbd) SHA1(2a5bedc2b21cd3f991c7145ccfd8c7a9e7f647ae) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "hmgeo-key.bin", 0, 4, CRC(78411d2f) SHA1(9809ef35406ea48639cf78d5d366069a06a411f0) )
ROM_END
/*
@@ -3952,17 +4027,19 @@ IC10 64M 1E43 0F1A
*/
ROM_START( gwing2 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x5800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x5800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22270.ic22",0x0000000, 0x0200000, CRC(876b3c97) SHA1(eb171d4a0521c3bea42b4aae3607faec63e10581) )
- ROM_LOAD("mpr-22271.ic1", 0x0800000, 0x1000000, CRC(9a072af5) SHA1(d5edff43d180346ba4d4f214c08f2db290a72def) )
- ROM_LOAD("mpr-22272.ic2", 0x1800000, 0x1000000, CRC(1e816ab1) SHA1(6e1fd47a21f5da7d2145caaf68094445f122a239) )
- ROM_LOAD("mpr-22273.ic3", 0x2800000, 0x1000000, CRC(cd633dcf) SHA1(f044d93802a4ba29d0e70c597d3fbe65da591335) )
- ROM_LOAD("mpr-22274.ic4", 0x3800000, 0x1000000, CRC(f8daaaf3) SHA1(8854d3f8e3d55715ede33ee918b641e251f752b4) )
- ROM_LOAD("mpr-22275.ic5", 0x4800000, 0x1000000, CRC(61aa1521) SHA1(7d9f5790e72a9151d128ac7887e236526fdf72a0) )
+ ROM_LOAD("mpr-22271.ic1", 0x0800000, 0x1000000, CRC(9a072af5) SHA1(d5edff43d180346ba4d4f214c08f2db290a72def) )
+ ROM_LOAD("mpr-22272.ic2", 0x1800000, 0x1000000, CRC(1e816ab1) SHA1(6e1fd47a21f5da7d2145caaf68094445f122a239) )
+ ROM_LOAD("mpr-22273.ic3", 0x2800000, 0x1000000, CRC(cd633dcf) SHA1(f044d93802a4ba29d0e70c597d3fbe65da591335) )
+ ROM_LOAD("mpr-22274.ic4", 0x3800000, 0x1000000, CRC(f8daaaf3) SHA1(8854d3f8e3d55715ede33ee918b641e251f752b4) )
+ ROM_LOAD("mpr-22275.ic5", 0x4800000, 0x1000000, CRC(61aa1521) SHA1(7d9f5790e72a9151d128ac7887e236526fdf72a0) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "gwing2-key.bin", 0, 4, CRC(433132ce) SHA1(27f6e6ba2dd28c777317ff085432c2d43b93a603) )
ROM_END
/*
@@ -3990,11 +4067,10 @@ IC14 32M 81F9 DA1B
*/
ROM_START( suchie3 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x7800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x7800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-21979.ic22",0x0000000, 0x0200000, CRC(335c9e25) SHA1(476790fdd99a8c13336e795b4a39b071ed86a97c) )
ROM_LOAD("mpr-21980.ic1", 0x0800000, 0x0800000, CRC(2b5f958a) SHA1(609585dda27c5e111378a92f04fa03ae11d42540) )
ROM_LOAD("mpr-21981.ic2", 0x1000000, 0x0800000, CRC(b4fff4ee) SHA1(333fb5a662775662881154b654233f207782a8aa) )
@@ -4010,6 +4086,9 @@ ROM_START( suchie3 )
ROM_LOAD("mpr-21991.ic12",0x6000000, 0x0800000, CRC(d82f834a) SHA1(06902713bdf6f68182749916cacc9ae6528dc355) )
ROM_LOAD("mpr-21992.ic13",0x6800000, 0x0800000, CRC(599a2fb8) SHA1(2a0007064ad2ee1e1a0fda1d5676df4ff19a9f2f) )
ROM_LOAD("mpr-21993.ic14",0x7000000, 0x0400000, CRC(fb28cf0a) SHA1(d51b1d4514a93074d1f77bd1bc5995739604cf56) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "suchie3-key.bin", 0, 4, CRC(592b5204) SHA1(ba18a5302ea271f58617a9793dfb85a0123080c8) )
ROM_END
/*
@@ -4020,11 +4099,10 @@ EXP: SHANGRI-LA
*/
ROM_START( shangril )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x6800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x6800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22060.ic22", 0x0000000, 0x0400000, CRC(5ae18595) SHA1(baaf8fd948b07ab9970571fecebc3c4fab5d4897) )
ROM_LOAD("mpr-22061.ic1", 0x0800000, 0x0800000, CRC(4d760b34) SHA1(ba7dce0ab7961a77622a41c3f50c112a7e9904aa) )
ROM_LOAD("mpr-22062.ic2", 0x1000000, 0x0800000, CRC(f713c59f) SHA1(75d8559f1b847fd6a51009fe9333b9627adcbd75) )
@@ -4052,11 +4130,10 @@ So the Naomi regular board test item is unreliable in this circumstance.
*/
ROM_START( mvsc2 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8900000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x8900000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23085a.ic11", 0x0000000, 0x0400000, CRC(5d5b7ad1) SHA1(f58c31b245fc33fa541f9f074548402a63f7c3d3) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-23048.ic17", 0x0800000, 0x0800000, CRC(93d7a63a) SHA1(c50d10b4a3f9db51eae5749f5b665d7c8ab6c898) )
@@ -4075,16 +4152,18 @@ ROM_START( mvsc2 )
ROM_LOAD("mpr-23061.ic30", 0x7000000, 0x0800000, CRC(fb1844c4) SHA1(1d1571516a6dbed0c4ded3b80efde9cc9281f66f) )
ROM_LOAD("mpr-23083.ic31", 0x7800000, 0x0400000, CRC(c61d2dfe) SHA1(a05fb979ed7c8040de91716fc8814e6bd995efa2) )
ROM_LOAD("mpr-23084.ic32", 0x8000000, 0x0400000, CRC(e228cdfd) SHA1(d02a2e3557bd24cf34c5ddb42d41ca15e78ae885) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "mvsc2-key.bin", 0, 4, CRC(76f095b4) SHA1(773fd67e1eb471a989b3ee6e969a3d33bf61e779) )
ROM_END
/* toy fighter - 1999 sega */
ROM_START( toyfight )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22035.ic22",0x0000000, 0x0400000, CRC(dbc76493) SHA1(a9772bdb62610a39adf2b9f397781bcddda3e635) )
ROM_LOAD("mpr-22025.ic1", 0x0800000, 0x0800000, CRC(30237202) SHA1(e229a7671b3a34b26a461716bd7b437da100e1c8) )
@@ -4097,134 +4176,147 @@ ROM_START( toyfight )
ROM_LOAD("mpr-22032.ic8", 0x4000000, 0x0800000, CRC(3c48c9ba) SHA1(00be199b23040f8e81db2ec489ba98cbf615652c) )
ROM_LOAD("mpr-22033.ic9", 0x4800000, 0x0800000, CRC(5fe5586e) SHA1(3ff41ae1f81469597684faadd88e62b5e0634352) )
ROM_LOAD("mpr-22034.ic10",0x5000000, 0x0800000, CRC(3aa5ce5e) SHA1(f00a906235e4522d6fc2ac771324114346875314) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "toyfight-key.bin", 0, 4, CRC(8e074319) SHA1(b1b88bc57b81c08853d4aa77a5da48e293da4f42) )
ROM_END
/* Crazy Taxi */
ROM_START( crzytaxi )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-21684.ic22", 0x0000000, 0x400000, CRC(f1de77b7) SHA1(4490b828534db6676b2d0129498fd7694eb9e5ff) )
- ROM_LOAD( "mpr-21671.ic1", 0x0800000, 0x800000, CRC(2d362137) SHA1(ed6eb45eadb784910eee44d0273534ab68ad6937) )
- ROM_LOAD( "mpr-21672.ic2", 0x1000000, 0x800000, CRC(72c7da8e) SHA1(0ed3d71c052a2cccbbf0f7b20e2ec688316c7247) )
- ROM_LOAD( "mpr-21673.ic3", 0x1800000, 0x800000, CRC(27481c0d) SHA1(08779e33eda1a45cb06319327cb4254dc3e4460f) )
- ROM_LOAD( "mpr-21674.ic4", 0x2000000, 0x800000, CRC(c2e2a98c) SHA1(9a40456ca025c2a6314cef705f7d147bbf95c0f0) )
- ROM_LOAD( "mpr-21675.ic5", 0x2800000, 0x800000, CRC(6b755510) SHA1(3fa967587e05c5bd45db3fe8a2cbc56f44166ef6) )
- ROM_LOAD( "mpr-21676.ic6", 0x3000000, 0x800000, CRC(f33d1f39) SHA1(b1d589a9ab7ec4988e63bfb458ef006308e1de70) )
- ROM_LOAD( "mpr-21677.ic7", 0x3800000, 0x800000, CRC(ab4dc61b) SHA1(d92ff434e7a2b9d3598f9d7004aa717b9bd21980) )
- ROM_LOAD( "mpr-21678.ic10", 0x5000000, 0x800000, CRC(297c778a) SHA1(67e5685cd03a3aaaac1c47f15c7b3f3e341d34b1) )
- ROM_LOAD( "mpr-21679.ic11", 0x5800000, 0x800000, CRC(6b540c4a) SHA1(9877c31b41110230182c0ee8d40753907981c7f9) )
- ROM_LOAD( "mpr-21680.ic12s", 0x6000000, 0x800000, CRC(e76f03f9) SHA1(ea20aa86d02a77315cca8cb6be75ca4ca9cc7484) )
- ROM_LOAD( "mpr-21681.ic13s", 0x6800000, 0x800000, CRC(e5dcde7d) SHA1(8a90d9fb4ce0d2ceb609fcf4c54cf5b55c266c50) )
- ROM_LOAD( "mpr-21682.ic14s", 0x7000000, 0x800000, CRC(54c0290e) SHA1(6e07ab6e95c29a2aabed0ba1a7af0d7d605e0309) )
- ROM_LOAD( "mpr-21683.ic15s", 0x7800000, 0x800000, CRC(ac8a27e0) SHA1(8e71d853a102dd6c164d5326e6d157ccfb8c7b36) )
+ ROM_REGION( 0x8800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-21684.ic22", 0x0000000, 0x400000, CRC(f1de77b7) SHA1(4490b828534db6676b2d0129498fd7694eb9e5ff) )
+ ROM_LOAD( "mpr-21671.ic1", 0x0800000, 0x800000, CRC(2d362137) SHA1(ed6eb45eadb784910eee44d0273534ab68ad6937) )
+ ROM_LOAD( "mpr-21672.ic2", 0x1000000, 0x800000, CRC(72c7da8e) SHA1(0ed3d71c052a2cccbbf0f7b20e2ec688316c7247) )
+ ROM_LOAD( "mpr-21673.ic3", 0x1800000, 0x800000, CRC(27481c0d) SHA1(08779e33eda1a45cb06319327cb4254dc3e4460f) )
+ ROM_LOAD( "mpr-21674.ic4", 0x2000000, 0x800000, CRC(c2e2a98c) SHA1(9a40456ca025c2a6314cef705f7d147bbf95c0f0) )
+ ROM_LOAD( "mpr-21675.ic5", 0x2800000, 0x800000, CRC(6b755510) SHA1(3fa967587e05c5bd45db3fe8a2cbc56f44166ef6) )
+ ROM_LOAD( "mpr-21676.ic6", 0x3000000, 0x800000, CRC(f33d1f39) SHA1(b1d589a9ab7ec4988e63bfb458ef006308e1de70) )
+ ROM_LOAD( "mpr-21677.ic7", 0x3800000, 0x800000, CRC(ab4dc61b) SHA1(d92ff434e7a2b9d3598f9d7004aa717b9bd21980) )
+ ROM_LOAD( "mpr-21678.ic10", 0x5000000, 0x800000, CRC(297c778a) SHA1(67e5685cd03a3aaaac1c47f15c7b3f3e341d34b1) )
+ ROM_LOAD( "mpr-21679.ic11", 0x5800000, 0x800000, CRC(6b540c4a) SHA1(9877c31b41110230182c0ee8d40753907981c7f9) )
+ ROM_LOAD( "mpr-21680.ic12s", 0x6000000, 0x800000, CRC(e76f03f9) SHA1(ea20aa86d02a77315cca8cb6be75ca4ca9cc7484) )
+ ROM_LOAD( "mpr-21681.ic13s", 0x6800000, 0x800000, CRC(e5dcde7d) SHA1(8a90d9fb4ce0d2ceb609fcf4c54cf5b55c266c50) )
+ ROM_LOAD( "mpr-21682.ic14s", 0x7000000, 0x800000, CRC(54c0290e) SHA1(6e07ab6e95c29a2aabed0ba1a7af0d7d605e0309) )
+ ROM_LOAD( "mpr-21683.ic15s", 0x7800000, 0x800000, CRC(ac8a27e0) SHA1(8e71d853a102dd6c164d5326e6d157ccfb8c7b36) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "crzytaxi-key.bin", 0, 4, CRC(3d36c13d) SHA1(746e82e7f1d6f4629dde00fb6b32943741b6ec70) )
ROM_END
/* Jambo! Safari */
ROM_START( jambo )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-22826a.ic22", 0x0000000, 0x400000, CRC(18f8f3bc) SHA1(417f2282c9970775e51b56d2eeb671a50ca293a7) )
- ROM_LOAD( "mpr-22818.ic1", 0x0800000, 0x800000, CRC(3a709e11) SHA1(e7dd71dd244e872c35595456bd428dd79a81f081) )
- ROM_LOAD( "mpr-22819.ic2", 0x1000000, 0x800000, CRC(57b2d565) SHA1(be5e6404c8187dc75cd6f033a36af413bf28bdee) )
- ROM_LOAD( "mpr-22820.ic3", 0x1800000, 0x800000, CRC(3284e16b) SHA1(bdf9249f19c0a444a9f00e831563e91c576a7cca) )
- ROM_LOAD( "mpr-22821.ic4", 0x2000000, 0x800000, CRC(5ca54154) SHA1(7bb1ba3fae71368145fd68d31bdce0588f641f78) )
- ROM_LOAD( "mpr-22822.ic5", 0x2800000, 0x800000, CRC(8bc0c4d5) SHA1(b250ddeaab904b15737f1348b62d7b3f11103609) )
- ROM_LOAD( "mpr-22823.ic6", 0x3000000, 0x800000, CRC(00c33e51) SHA1(c55646a146ed259e6c61fd912c93fa784b5e6910) )
- ROM_LOAD( "mpr-22824.ic7", 0x3800000, 0x800000, CRC(cc55304a) SHA1(e548d8de83469e5816c55dbbb00afbb894282fd6) )
- ROM_LOAD( "mpr-22825.ic8", 0x4000000, 0x800000, CRC(85bada10) SHA1(b6e15d8f1d6bca12ffa4816ed0393c04ca500fba) )
+ ROM_REGION( 0x8800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-22826a.ic22", 0x0000000, 0x400000, CRC(18f8f3bc) SHA1(417f2282c9970775e51b56d2eeb671a50ca293a7) )
+ ROM_LOAD( "mpr-22818.ic1", 0x0800000, 0x800000, CRC(3a709e11) SHA1(e7dd71dd244e872c35595456bd428dd79a81f081) )
+ ROM_LOAD( "mpr-22819.ic2", 0x1000000, 0x800000, CRC(57b2d565) SHA1(be5e6404c8187dc75cd6f033a36af413bf28bdee) )
+ ROM_LOAD( "mpr-22820.ic3", 0x1800000, 0x800000, CRC(3284e16b) SHA1(bdf9249f19c0a444a9f00e831563e91c576a7cca) )
+ ROM_LOAD( "mpr-22821.ic4", 0x2000000, 0x800000, CRC(5ca54154) SHA1(7bb1ba3fae71368145fd68d31bdce0588f641f78) )
+ ROM_LOAD( "mpr-22822.ic5", 0x2800000, 0x800000, CRC(8bc0c4d5) SHA1(b250ddeaab904b15737f1348b62d7b3f11103609) )
+ ROM_LOAD( "mpr-22823.ic6", 0x3000000, 0x800000, CRC(00c33e51) SHA1(c55646a146ed259e6c61fd912c93fa784b5e6910) )
+ ROM_LOAD( "mpr-22824.ic7", 0x3800000, 0x800000, CRC(cc55304a) SHA1(e548d8de83469e5816c55dbbb00afbb894282fd6) )
+ ROM_LOAD( "mpr-22825.ic8", 0x4000000, 0x800000, CRC(85bada10) SHA1(b6e15d8f1d6bca12ffa4816ed0393c04ca500fba) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "jambo-key.bin", 0, 4, CRC(e78e9ac8) SHA1(677d7f21c238e12362ad65d6496f285d688fc3a9) )
ROM_END
/* 18 Wheeler DELUXE (Rev A) */
ROM_START( 18wheelr )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xa800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-22185.ic22", 0x0000000, 0x400000, CRC(219b29b0) SHA1(2f32caf3906fc1408fd8126a500e74c682ff20fa) )
- ROM_LOAD( "mpr-22164.ic1", 0x0800000, 0x800000, CRC(ca045315) SHA1(0c5becb5220659fa86f1e7901032f8c9a1329a51) )
- ROM_LOAD( "mpr-22165.ic2", 0x1000000, 0x800000, CRC(e43f4ba8) SHA1(768159bccae6a72c809e9f374538df304c92fbfe) )
- ROM_LOAD( "mpr-22166.ic3", 0x1800000, 0x800000, CRC(ea67edb1) SHA1(1214fdbfd8ce9f7a2b33e97f7c4e22ebb3eee988) )
- ROM_LOAD( "mpr-22167.ic4", 0x2000000, 0x800000, CRC(df6125e2) SHA1(7244278cf89b88dbc7b8b1e3a537bf0b3f521c3a) )
- ROM_LOAD( "mpr-22168.ic5", 0x2800000, 0x800000, CRC(8a919f9c) SHA1(28f1f9d8943e0a0b7bc186808cdab5d21d914e05) )
- ROM_LOAD( "mpr-22169.ic6", 0x3000000, 0x800000, CRC(a0fa7d68) SHA1(010fc87f0df3cf9e3d01a5ca4d4aa7e84728652d) )
- ROM_LOAD( "mpr-22170.ic7", 0x3800000, 0x800000, CRC(1f407049) SHA1(3c11b25168715d200f8d78a3db7bfc8cb3c29897) )
- ROM_LOAD( "mpr-22171.ic8", 0x4000000, 0x800000, CRC(03ce8dcd) SHA1(9bf1eb0a2628317bea5d8899e34f6f4363729c52) )
- ROM_LOAD( "mpr-22172.ic9", 0x4800000, 0x800000, CRC(c3e8c978) SHA1(96cbaa0f13e22365b04818cb5cad2ddc2027e38a) )
- ROM_LOAD( "mpr-22173.ic10", 0x5000000, 0x800000, CRC(3caec8fc) SHA1(88ee6b0a1735788570d0a6507eec14a31ebabb9a) )
- ROM_LOAD( "mpr-22174.ic11", 0x5800000, 0x800000, CRC(17245a27) SHA1(b3701155b1bbdbcbfb5ea686470c3c432d2573b7) )
- ROM_LOAD( "mpr-22175.ic12s", 0x6000000, 0x800000, CRC(4d984682) SHA1(60270d6caa3bbc0025a0c01cf4d7b10783216e0b) )
- ROM_LOAD( "mpr-22176.ic13s", 0x6800000, 0x800000, CRC(3ea2403f) SHA1(efde74c621a8fe17d8aa3a24da35e2ca6bc0bd9a) )
- ROM_LOAD( "mpr-22177.ic14s", 0x7000000, 0x800000, CRC(15514cbc) SHA1(0171d67560b8d72ca3f718dcce301acc60dee1fa) )
- ROM_LOAD( "mpr-22178.ic15s", 0x7800000, 0x800000, CRC(9ea0552f) SHA1(4b282110ef9f60f942518f3849acfff4a5faf4bd) )
- ROM_LOAD( "mpr-22179.ic16s", 0x8000000, 0x800000, CRC(6915c4e6) SHA1(b44d49edcfdc0f2958bf1a3856b09b5442e8f1a3) )
- ROM_LOAD( "mpr-22180.ic17s", 0x8800000, 0x800000, CRC(744c3a40) SHA1(56fba6ebc45d542ba6e4f4dd205194344f127ac2) )
- ROM_LOAD( "mpr-22181.ic18s", 0x9000000, 0x800000, CRC(5a39b68e) SHA1(0f81ed1116b1829262f320fc82f93df107b6f848) )
- ROM_LOAD( "mpr-22182.ic19s", 0x9800000, 0x800000, CRC(c5606c42) SHA1(5871104ff1c7acde0493e13b9a4d0abdf8a40728) )
- ROM_LOAD( "mpr-22183.ic20s", 0xa000000, 0x800000, CRC(776af308) SHA1(7d29cb4dce75d34c622549fea7e102868d0da60a) )
+ ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-22185.ic22", 0x0000000, 0x400000, CRC(219b29b0) SHA1(2f32caf3906fc1408fd8126a500e74c682ff20fa) )
+ ROM_LOAD( "mpr-22164.ic1", 0x0800000, 0x800000, CRC(ca045315) SHA1(0c5becb5220659fa86f1e7901032f8c9a1329a51) )
+ ROM_LOAD( "mpr-22165.ic2", 0x1000000, 0x800000, CRC(e43f4ba8) SHA1(768159bccae6a72c809e9f374538df304c92fbfe) )
+ ROM_LOAD( "mpr-22166.ic3", 0x1800000, 0x800000, CRC(ea67edb1) SHA1(1214fdbfd8ce9f7a2b33e97f7c4e22ebb3eee988) )
+ ROM_LOAD( "mpr-22167.ic4", 0x2000000, 0x800000, CRC(df6125e2) SHA1(7244278cf89b88dbc7b8b1e3a537bf0b3f521c3a) )
+ ROM_LOAD( "mpr-22168.ic5", 0x2800000, 0x800000, CRC(8a919f9c) SHA1(28f1f9d8943e0a0b7bc186808cdab5d21d914e05) )
+ ROM_LOAD( "mpr-22169.ic6", 0x3000000, 0x800000, CRC(a0fa7d68) SHA1(010fc87f0df3cf9e3d01a5ca4d4aa7e84728652d) )
+ ROM_LOAD( "mpr-22170.ic7", 0x3800000, 0x800000, CRC(1f407049) SHA1(3c11b25168715d200f8d78a3db7bfc8cb3c29897) )
+ ROM_LOAD( "mpr-22171.ic8", 0x4000000, 0x800000, CRC(03ce8dcd) SHA1(9bf1eb0a2628317bea5d8899e34f6f4363729c52) )
+ ROM_LOAD( "mpr-22172.ic9", 0x4800000, 0x800000, CRC(c3e8c978) SHA1(96cbaa0f13e22365b04818cb5cad2ddc2027e38a) )
+ ROM_LOAD( "mpr-22173.ic10", 0x5000000, 0x800000, CRC(3caec8fc) SHA1(88ee6b0a1735788570d0a6507eec14a31ebabb9a) )
+ ROM_LOAD( "mpr-22174.ic11", 0x5800000, 0x800000, CRC(17245a27) SHA1(b3701155b1bbdbcbfb5ea686470c3c432d2573b7) )
+ ROM_LOAD( "mpr-22175.ic12s", 0x6000000, 0x800000, CRC(4d984682) SHA1(60270d6caa3bbc0025a0c01cf4d7b10783216e0b) )
+ ROM_LOAD( "mpr-22176.ic13s", 0x6800000, 0x800000, CRC(3ea2403f) SHA1(efde74c621a8fe17d8aa3a24da35e2ca6bc0bd9a) )
+ ROM_LOAD( "mpr-22177.ic14s", 0x7000000, 0x800000, CRC(15514cbc) SHA1(0171d67560b8d72ca3f718dcce301acc60dee1fa) )
+ ROM_LOAD( "mpr-22178.ic15s", 0x7800000, 0x800000, CRC(9ea0552f) SHA1(4b282110ef9f60f942518f3849acfff4a5faf4bd) )
+ ROM_LOAD( "mpr-22179.ic16s", 0x8000000, 0x800000, CRC(6915c4e6) SHA1(b44d49edcfdc0f2958bf1a3856b09b5442e8f1a3) )
+ ROM_LOAD( "mpr-22180.ic17s", 0x8800000, 0x800000, CRC(744c3a40) SHA1(56fba6ebc45d542ba6e4f4dd205194344f127ac2) )
+ ROM_LOAD( "mpr-22181.ic18s", 0x9000000, 0x800000, CRC(5a39b68e) SHA1(0f81ed1116b1829262f320fc82f93df107b6f848) )
+ ROM_LOAD( "mpr-22182.ic19s", 0x9800000, 0x800000, CRC(c5606c42) SHA1(5871104ff1c7acde0493e13b9a4d0abdf8a40728) )
+ ROM_LOAD( "mpr-22183.ic20s", 0xa000000, 0x800000, CRC(776af308) SHA1(7d29cb4dce75d34c622549fea7e102868d0da60a) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "18wheelr-key.bin", 0, 4, CRC(046f97f5) SHA1(11eb5cffdd67d460718b63ddee8ff4dfa7d72314) )
// JVS I/O board 837-13844, code is for a Z80 of unknown type (it's inside the big Sega ASIC)
ROM_REGION( 0x20000, "jvsio", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-21868.ic7", 0x000000, 0x010000, CRC(c306a51f) SHA1(7833b73dc34c4c62401a30637968f46b949ceac0) )
+ ROM_LOAD( "epr-21868.ic7", 0x000000, 0x010000, CRC(c306a51f) SHA1(7833b73dc34c4c62401a30637968f46b949ceac0) )
// later version of the same I/O board (temporary, we'll handle this properly later)
- ROM_LOAD( "epr-22082.ic7", 0x010000, 0x010000, CRC(de26fc6c) SHA1(cf8ef7969770fff8697299c3e3152413b898a967) )
+ ROM_LOAD( "epr-22082.ic7", 0x010000, 0x010000, CRC(de26fc6c) SHA1(cf8ef7969770fff8697299c3e3152413b898a967) )
// 18 Wheeler motor controller 838-13992, code is for a TMPZ84C015 which is Z80 compatible
ROM_REGION( 0x10000, "motorio", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23000.ic8", 0x000000, 0x010000, CRC(e3b162f7) SHA1(52c7ad759c3c4a3148764e14d77ba5006bc8af48) )
+ ROM_LOAD( "epr-23000.ic8", 0x000000, 0x010000, CRC(e3b162f7) SHA1(52c7ad759c3c4a3148764e14d77ba5006bc8af48) )
ROM_END
/* Sega Strike Fighter */
ROM_START( sstrkfgt )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23323a.ic22", 0x0000000, 0x400000, CRC(f3fd304b) SHA1(012eefebd857200195d9e2d80c24a793b258d7e2) )
- ROM_LOAD( "mpr-23302.ic1", 0x0800000, 0x800000, CRC(3429321b) SHA1(6fc1be2ca71a690a2ceca9dc968183a1222177f7) )
- ROM_LOAD( "mpr-23303.ic2", 0x1000000, 0x800000, CRC(f7b3ada2) SHA1(d2caea852241cb0d91243d84d1c5523dfddac721) )
- ROM_LOAD( "mpr-23304.ic3", 0x1800000, 0x800000, CRC(3bf145e9) SHA1(a000e135ad640472418de418b92dbdb83dcf872b) )
- ROM_LOAD( "mpr-23305.ic4", 0x2000000, 0x800000, CRC(924ee9fd) SHA1(dd56f8cd7e9dda87968abb810694bddeeb31db5c) )
- ROM_LOAD( "mpr-23306.ic5", 0x2800000, 0x800000, CRC(4021e805) SHA1(75988ff8d710da6d90608cef87fc8b4408a617fb) )
- ROM_LOAD( "mpr-23307.ic6", 0x3000000, 0x800000, CRC(090c1812) SHA1(e3e32d5c1f42191e188f91dbd4a753030894aa6f) )
- ROM_LOAD( "mpr-23308.ic7", 0x3800000, 0x800000, CRC(f23d2198) SHA1(9775796a388ab903102126fb190867a0d192903e) )
- ROM_LOAD( "mpr-23309.ic8", 0x4000000, 0x800000, CRC(0d6a7c9d) SHA1(0df846289d598efdf5605ca8e09758eb8b5878f9) )
- ROM_LOAD( "mpr-23310.ic9", 0x4800000, 0x800000, CRC(f4ec4baa) SHA1(77e2ea1c5747ced4951286142bd429780f9d4115) )
- ROM_LOAD( "mpr-23311.ic10", 0x5000000, 0x800000, CRC(a1467573) SHA1(cf38527b0e812ba90e7402aa53e4557ce756cf43) )
- ROM_LOAD( "mpr-23312.ic11", 0x5800000, 0x800000, CRC(9b0ae703) SHA1(35f0e3cdbc206b91dad4a97feb3c533bc12a77f1) )
- ROM_LOAD( "mpr-23313.ic12s", 0x6000000, 0x800000, CRC(d309fea9) SHA1(2ba2da81976126f0a79b066d855706d800279150) )
- ROM_LOAD( "mpr-23314.ic13s", 0x6800000, 0x800000, CRC(0aeedeac) SHA1(5e5086a7a51a9576e786911a2c7f4b509d5bc2f4) )
- ROM_LOAD( "mpr-23315.ic14s", 0x7000000, 0x800000, CRC(88f22650) SHA1(3425433d233b458ae73e30cc0c7d25fca2a9d589) )
- ROM_LOAD( "mpr-23316.ic15s", 0x7800000, 0x800000, CRC(38ff3a9d) SHA1(56978183fe61fd2ad59ab2979cb61fbf2cde07e6) )
- ROM_LOAD( "mpr-23317.ic16s", 0x8000000, 0x800000, CRC(d6d45776) SHA1(102963243f6e127d4c35d150eeb09aa99a3738d4) )
- ROM_LOAD( "mpr-23318.ic17s", 0x8800000, 0x800000, CRC(5f33207e) SHA1(6eceb6bb9171da8634fcba9dd7409794447fe069) )
- ROM_LOAD( "mpr-23319.ic18s", 0x9000000, 0x800000, CRC(ff42857a) SHA1(adbc025c4e02ad3b15ead9340aee494c16005ad5) )
- ROM_LOAD( "mpr-23320.ic19s", 0x9800000, 0x800000, CRC(5ec75a45) SHA1(696e5d14678c794dec67246507bd580f7e5b5043) )
- ROM_LOAD( "mpr-23321.ic20s", 0xa000000, 0x800000, CRC(018627d4) SHA1(2519f39ad046d14f602648fed39bc3719185b55e) )
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23323a.ic22", 0x0000000, 0x400000, CRC(f3fd304b) SHA1(012eefebd857200195d9e2d80c24a793b258d7e2) )
+ ROM_LOAD( "mpr-23302.ic1", 0x0800000, 0x800000, CRC(3429321b) SHA1(6fc1be2ca71a690a2ceca9dc968183a1222177f7) )
+ ROM_LOAD( "mpr-23303.ic2", 0x1000000, 0x800000, CRC(f7b3ada2) SHA1(d2caea852241cb0d91243d84d1c5523dfddac721) )
+ ROM_LOAD( "mpr-23304.ic3", 0x1800000, 0x800000, CRC(3bf145e9) SHA1(a000e135ad640472418de418b92dbdb83dcf872b) )
+ ROM_LOAD( "mpr-23305.ic4", 0x2000000, 0x800000, CRC(924ee9fd) SHA1(dd56f8cd7e9dda87968abb810694bddeeb31db5c) )
+ ROM_LOAD( "mpr-23306.ic5", 0x2800000, 0x800000, CRC(4021e805) SHA1(75988ff8d710da6d90608cef87fc8b4408a617fb) )
+ ROM_LOAD( "mpr-23307.ic6", 0x3000000, 0x800000, CRC(090c1812) SHA1(e3e32d5c1f42191e188f91dbd4a753030894aa6f) )
+ ROM_LOAD( "mpr-23308.ic7", 0x3800000, 0x800000, CRC(f23d2198) SHA1(9775796a388ab903102126fb190867a0d192903e) )
+ ROM_LOAD( "mpr-23309.ic8", 0x4000000, 0x800000, CRC(0d6a7c9d) SHA1(0df846289d598efdf5605ca8e09758eb8b5878f9) )
+ ROM_LOAD( "mpr-23310.ic9", 0x4800000, 0x800000, CRC(f4ec4baa) SHA1(77e2ea1c5747ced4951286142bd429780f9d4115) )
+ ROM_LOAD( "mpr-23311.ic10", 0x5000000, 0x800000, CRC(a1467573) SHA1(cf38527b0e812ba90e7402aa53e4557ce756cf43) )
+ ROM_LOAD( "mpr-23312.ic11", 0x5800000, 0x800000, CRC(9b0ae703) SHA1(35f0e3cdbc206b91dad4a97feb3c533bc12a77f1) )
+ ROM_LOAD( "mpr-23313.ic12s", 0x6000000, 0x800000, CRC(d309fea9) SHA1(2ba2da81976126f0a79b066d855706d800279150) )
+ ROM_LOAD( "mpr-23314.ic13s", 0x6800000, 0x800000, CRC(0aeedeac) SHA1(5e5086a7a51a9576e786911a2c7f4b509d5bc2f4) )
+ ROM_LOAD( "mpr-23315.ic14s", 0x7000000, 0x800000, CRC(88f22650) SHA1(3425433d233b458ae73e30cc0c7d25fca2a9d589) )
+ ROM_LOAD( "mpr-23316.ic15s", 0x7800000, 0x800000, CRC(38ff3a9d) SHA1(56978183fe61fd2ad59ab2979cb61fbf2cde07e6) )
+ ROM_LOAD( "mpr-23317.ic16s", 0x8000000, 0x800000, CRC(d6d45776) SHA1(102963243f6e127d4c35d150eeb09aa99a3738d4) )
+ ROM_LOAD( "mpr-23318.ic17s", 0x8800000, 0x800000, CRC(5f33207e) SHA1(6eceb6bb9171da8634fcba9dd7409794447fe069) )
+ ROM_LOAD( "mpr-23319.ic18s", 0x9000000, 0x800000, CRC(ff42857a) SHA1(adbc025c4e02ad3b15ead9340aee494c16005ad5) )
+ ROM_LOAD( "mpr-23320.ic19s", 0x9800000, 0x800000, CRC(5ec75a45) SHA1(696e5d14678c794dec67246507bd580f7e5b5043) )
+ ROM_LOAD( "mpr-23321.ic20s", 0xa000000, 0x800000, CRC(018627d4) SHA1(2519f39ad046d14f602648fed39bc3719185b55e) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "sstrkfgt-key.bin", 0, 4, CRC(1884e4ee) SHA1(14ec026ed32825252987fed350f19f6e2565aa4d) )
ROM_END
/* Sega Tetris */
ROM_START( sgtetris )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x3800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-22909.ic22", 0x000000, 0x200000, CRC(486b2fdf) SHA1(da54fec42b7ac16f73b2b9f166b9b2ab45426fd7) )
- ROM_LOAD( "mpr-22910.ic1", 0x0800000, 0x800000, CRC(7968b67e) SHA1(4a83c22a30b3a3ce7d7167f703a11b78d3f6cea6) )
- ROM_LOAD( "mpr-22911.ic2", 0x1000000, 0x800000, CRC(4014aa6a) SHA1(86a9bd852c9fff70c0b902b7014c136a1d82e9a4) )
- ROM_LOAD( "mpr-22912.ic3", 0x1800000, 0x800000, CRC(67667a56) SHA1(89f3cab6c5db2f6ecac4e6a0dee085fa39cb5cbb) )
- ROM_LOAD( "mpr-22913.ic4", 0x2000000, 0x800000, CRC(1fbdc41a) SHA1(eb8b9577b7677b9e9aec05ae950dee516ae15bf5) )
- ROM_LOAD( "mpr-22914.ic5", 0x2800000, 0x800000, CRC(77844b60) SHA1(65d71febb8a160d00778ac7b53e082253cad9834) )
- ROM_LOAD( "mpr-22915.ic6", 0x3000000, 0x800000, CRC(e48148ac) SHA1(c1273353eeaf9bb6b185f133281d7d04271bc895) )
+ ROM_REGION( 0x3800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-22909.ic22", 0x000000, 0x200000, CRC(486b2fdf) SHA1(da54fec42b7ac16f73b2b9f166b9b2ab45426fd7) )
+ ROM_LOAD( "mpr-22910.ic1", 0x0800000, 0x800000, CRC(7968b67e) SHA1(4a83c22a30b3a3ce7d7167f703a11b78d3f6cea6) )
+ ROM_LOAD( "mpr-22911.ic2", 0x1000000, 0x800000, CRC(4014aa6a) SHA1(86a9bd852c9fff70c0b902b7014c136a1d82e9a4) )
+ ROM_LOAD( "mpr-22912.ic3", 0x1800000, 0x800000, CRC(67667a56) SHA1(89f3cab6c5db2f6ecac4e6a0dee085fa39cb5cbb) )
+ ROM_LOAD( "mpr-22913.ic4", 0x2000000, 0x800000, CRC(1fbdc41a) SHA1(eb8b9577b7677b9e9aec05ae950dee516ae15bf5) )
+ ROM_LOAD( "mpr-22914.ic5", 0x2800000, 0x800000, CRC(77844b60) SHA1(65d71febb8a160d00778ac7b53e082253cad9834) )
+ ROM_LOAD( "mpr-22915.ic6", 0x3000000, 0x800000, CRC(e48148ac) SHA1(c1273353eeaf9bb6b185f133281d7d04271bc895) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "sgtetris-key.bin", 0, 4, CRC(03bf7ea1) SHA1(0229c1f9a6eca65b09e3571768a1fbf3c1dad6b1) )
ROM_END
/*
@@ -4257,11 +4349,10 @@ IC17 64M 6586 1F3F
*/
ROM_START( slasho )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x9000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x9000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23341.ic22", 0x0000000, 0x0400000, CRC(477fa123) SHA1(d2474766dcd0b0e5fe317a858534829eb1c26789) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-23324.ic1", 0x0800000, 0x0800000, CRC(8624493a) SHA1(4fe940a889619f2a75c45e15efb2b8ed9020bc55) )
@@ -4281,6 +4372,9 @@ ROM_START( slasho )
ROM_LOAD("mpr-23338.ic15s",0x7800000, 0x0800000, CRC(323e4db2) SHA1(c5484589c1613110faef6cf8b8f4def8867a8226) )
ROM_LOAD("mpr-23339.ic16s",0x8000000, 0x0800000, CRC(fd8c2736) SHA1(34ae1a4e35b4aac6666719fb4fc0959bd64ff3d6) )
ROM_LOAD("mpr-23340.ic17s",0x8800000, 0x0800000, CRC(001604f8) SHA1(615ec027d383d44d4aadb1175be6320e4139d7d1) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "slasho-key.bin", 0, 4, CRC(78e31e35) SHA1(a0b06cb7fbb0b2f1734831fc3e6a8315c0e78edd) )
ROM_END
@@ -4320,23 +4414,25 @@ Serial: BCLE-01A2130
*/
ROM_START( pjustic )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23548a.ic22", 0x0000000, 0x0400000, CRC(f4ccf1ec) SHA1(97485b2a4b9452ffeea2501f42d20d718410e716) )
- ROM_LOAD( "mpr-23537.ic1", 0x0800000, 0x1000000, CRC(a2462770) SHA1(2d06f2efb686b2c45e5cc0b0776ba5fb1d392951) )
- ROM_LOAD( "mpr-23538.ic2", 0x1800000, 0x1000000, CRC(e4480832) SHA1(281700b10bd6b29e4d33b5230d085f9cc102fa01) )
- ROM_LOAD( "mpr-23539.ic3", 0x2800000, 0x1000000, CRC(97e3f7f5) SHA1(89ad30782ba148777ce3aad2d41e9dfda2dd0c5c) )
- ROM_LOAD( "mpr-23540.ic4", 0x3800000, 0x1000000, CRC(b9e92d21) SHA1(a9b465e83ecfbf47168f83ad4ae8ed4b802345ac) )
- ROM_LOAD( "mpr-23541.ic5", 0x4800000, 0x1000000, CRC(95b8a9c6) SHA1(2c9df93d9f599cf01d895a37d03ba0d86b9b3033) )
- ROM_LOAD( "mpr-23542.ic6", 0x5800000, 0x1000000, CRC(dfd490f5) SHA1(13fe0a11a75f1a7ebfe40433833241e656bb1511) )
- ROM_LOAD( "mpr-23543.ic7", 0x6800000, 0x1000000, CRC(66847ebd) SHA1(853d4fc7e53ac7b19b9ba616f756eb8a8fcd242d) )
- ROM_LOAD( "mpr-23544.ic8", 0x7800000, 0x1000000, CRC(d1f5b460) SHA1(f0789630871d728113abacceff21c6328a9fa9fc) )
- ROM_LOAD( "mpr-23545.ic9", 0x8800000, 0x1000000, CRC(60bd692f) SHA1(37b508f4a821d832eafff81574e7df3fe1c729f8) )
- ROM_LOAD( "mpr-23546.ic10", 0x9800000, 0x1000000, CRC(85db2248) SHA1(37845c269a2e65ee6181a8e7500c2e7dd9b2e343) )
- ROM_LOAD( "mpr-23547.ic11", 0xa800000, 0x1000000, CRC(18b369c7) SHA1(b61cb3fda8cc685865684f7afc7dad0b29d93ca5) )
+ ROM_LOAD( "mpr-23537.ic1", 0x0800000, 0x1000000, CRC(a2462770) SHA1(2d06f2efb686b2c45e5cc0b0776ba5fb1d392951) )
+ ROM_LOAD( "mpr-23538.ic2", 0x1800000, 0x1000000, CRC(e4480832) SHA1(281700b10bd6b29e4d33b5230d085f9cc102fa01) )
+ ROM_LOAD( "mpr-23539.ic3", 0x2800000, 0x1000000, CRC(97e3f7f5) SHA1(89ad30782ba148777ce3aad2d41e9dfda2dd0c5c) )
+ ROM_LOAD( "mpr-23540.ic4", 0x3800000, 0x1000000, CRC(b9e92d21) SHA1(a9b465e83ecfbf47168f83ad4ae8ed4b802345ac) )
+ ROM_LOAD( "mpr-23541.ic5", 0x4800000, 0x1000000, CRC(95b8a9c6) SHA1(2c9df93d9f599cf01d895a37d03ba0d86b9b3033) )
+ ROM_LOAD( "mpr-23542.ic6", 0x5800000, 0x1000000, CRC(dfd490f5) SHA1(13fe0a11a75f1a7ebfe40433833241e656bb1511) )
+ ROM_LOAD( "mpr-23543.ic7", 0x6800000, 0x1000000, CRC(66847ebd) SHA1(853d4fc7e53ac7b19b9ba616f756eb8a8fcd242d) )
+ ROM_LOAD( "mpr-23544.ic8", 0x7800000, 0x1000000, CRC(d1f5b460) SHA1(f0789630871d728113abacceff21c6328a9fa9fc) )
+ ROM_LOAD( "mpr-23545.ic9", 0x8800000, 0x1000000, CRC(60bd692f) SHA1(37b508f4a821d832eafff81574e7df3fe1c729f8) )
+ ROM_LOAD( "mpr-23546.ic10", 0x9800000, 0x1000000, CRC(85db2248) SHA1(37845c269a2e65ee6181a8e7500c2e7dd9b2e343) )
+ ROM_LOAD( "mpr-23547.ic11", 0xa800000, 0x1000000, CRC(18b369c7) SHA1(b61cb3fda8cc685865684f7afc7dad0b29d93ca5) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "pjustic-key.bin", 0, 4, CRC(4a2bcbaa) SHA1(a9434482498f97605f76d08f749685452651a753) )
ROM_END
/*
@@ -4362,11 +4458,10 @@ prot
*/
ROM_START( pstone )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x4800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x4800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-21597.ic22",0x0000000, 0x0200000, CRC(62c7acc0) SHA1(bb61641a7f3650757132cde379447bdc9bd91c78) )
ROM_LOAD("mpr-21589.ic1", 0x0800000, 0x0800000, CRC(2fa66608) SHA1(144bda75f892a1e4dbd8332439e9e44fad1d0695) )
ROM_LOAD("mpr-21590.ic2", 0x1000000, 0x0800000, CRC(6341b399) SHA1(d123b6a3eb7c4800950cc5849d748b0edafabc7d) )
@@ -4376,6 +4471,9 @@ ROM_START( pstone )
ROM_LOAD("mpr-21594.ic6", 0x3000000, 0x0800000, CRC(ddfa0467) SHA1(e758eae50035d5f18d99dbed728513e306d9566f) )
ROM_LOAD("mpr-21595.ic7", 0x3800000, 0x0800000, CRC(7ab218f7) SHA1(c5c022e63f926cce09d49331647cde20e8e42ab3) )
ROM_LOAD("mpr-21596.ic8", 0x4000000, 0x0800000, CRC(f27dbdc5) SHA1(d54717d62897546968de2f049239f68bee49bdd8) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "pstone-key.bin", 0, 4, CRC(7386d0de) SHA1(72f6b552440e470344f707e349d100d9ba21b69d) )
ROM_END
/*
@@ -4402,11 +4500,10 @@ Serial: BBJE-01A1613
*/
ROM_START( pstone2 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x5000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x5000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23127.ic22", 0x0000000, 0x0400000, CRC(185761d6) SHA1(8c91b594dd59313d249c9da7b39dee21d3c9082e) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-23118.ic1", 0x0800000, 0x0800000, CRC(c69f3c3c) SHA1(e96ad24473197f8581f5e4398244b9b76957bfdd) )
@@ -4418,6 +4515,9 @@ ROM_START( pstone2 )
ROM_LOAD("mpr-23124.ic7", 0x3800000, 0x0800000, CRC(508c0207) SHA1(e50d97a17cdd6771fbc63a254a4d638e7daa8f57) )
ROM_LOAD("mpr-23125.ic8", 0x4000000, 0x0800000, CRC(b9938bbc) SHA1(d55d7adecb5a5a4a276a5a17c12808085d980fd9) )
ROM_LOAD("mpr-23126.ic9", 0x4800000, 0x0800000, CRC(fbb0325b) SHA1(21b965519d7508d84344641d43e8af2c3ca29ba4) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "pstone2-key.bin", 0, 4, CRC(3858144b) SHA1(f5fb9157b38969c986f8abbe8ed3f95e788e45c0) )
ROM_END
@@ -4456,11 +4556,10 @@ Serial (from 2 carts): BAZE-01A0288
*/
ROM_START( otrigger )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xa000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xa000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22163.ic22", 0x0000000, 0x0400000, CRC(3bdafb6a) SHA1(c4c5a4ba94d85c4353df22d70bb08be67e9c22c3) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-22142.ic1", 0x0800000, 0x0800000, CRC(5b45fa35) SHA1(7d3fbecc6f0dce2b13bfb21ed68f44632b91b94b) )
@@ -4482,6 +4581,9 @@ ROM_START( otrigger )
ROM_LOAD("mpr-22158.ic17s",0x8800000, 0x0800000, CRC(f5d96fe9) SHA1(d5d0ac3d6b7c9b851a18b22d5fb599710c684a76) )
ROM_LOAD("mpr-22159.ic18s",0x9000000, 0x0800000, CRC(f8b5e99d) SHA1(bb174a6a80967d0ff05c3a7512e4f0f9c921d130) )
ROM_LOAD("mpr-22160.ic19s",0x9800000, 0x0800000, CRC(579eef4e) SHA1(bfcabd57f623647053afcedcabfbc74e5736819f) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "otrigger-key.bin", 0, 4, CRC(79ebd41a) SHA1(3545dacdeac66b46e8706565f0eca784291040d1) )
ROM_END
/*
@@ -4494,11 +4596,10 @@ EXP: AH! MY GODDESS QUIZ GAME--
*/
ROM_START( qmegamis )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x9000200, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x9000200, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23227.ic11", 0x0000000, 0x0400000, CRC(3f76087e) SHA1(664d28ef95394590b186e7badaf96ddaf781c104) ) //ic 22
ROM_RELOAD( 0x400000, 0x400000)
/*ic 1 empty */
@@ -4519,7 +4620,10 @@ ROM_START( qmegamis )
ROM_LOAD32_WORD("mpr-23225.ic31", 0x8000000, 0x0800000, CRC(ea558614) SHA1(b7dfe5598639a8e59e3cbbee38b1d9a1d8e022ea) ) //ic 16
ROM_LOAD32_WORD("mpr-23226.ic32", 0x8000002, 0x0800000, CRC(cd5da506) SHA1(2e76c8892c1d389b0f12a0046213f43d2ab07d78) ) //ic 17
- ROM_COPY( "user1", 0x1400000, 0x0800000, 0x0800000 ) // mirror data for IC1 (no test on this game, but layout is the same as gram2000)
+ ROM_COPY( "rom_board", 0x1400000, 0x0800000, 0x0800000 ) // mirror data for IC1 (no test on this game, but layout is the same as gram2000)
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "qmegamis-key.bin", 0, 4, CRC(b08650c0) SHA1(9e6b0fac6fb05209da9e01bb1a5437949d218078) )
ROM_END
/*
@@ -4551,11 +4655,10 @@ IC16 64M A10B DDB4
*/
ROM_START( samba )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x8800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22966b.ic22",0x0000000, 0x0400000, CRC(893116b8) SHA1(35cb4f40690ff21af5ab7cc5adbc53228d6fb0b3) )
ROM_LOAD("mpr-22950.ic1", 0x0800000, 0x0800000, CRC(16dee15c) SHA1(b46849e492756ff406bf8956303472255fcf55a5) )
ROM_LOAD("mpr-22951.ic2", 0x1000000, 0x0800000, CRC(f509496f) SHA1(41281576f7d58c8ede9c0a89bfd46a98d5b97033) )
@@ -4573,6 +4676,9 @@ ROM_START( samba )
ROM_LOAD("mpr-22963.ic14s",0x7000000, 0x0800000, CRC(a53e9919) SHA1(d81eb79bc706f85ebfbc56a9b2889ae62d629e8e) )
ROM_LOAD("mpr-22964.ic15s",0x7800000, 0x0800000, CRC(f581d5a3) SHA1(8cf769f5b0a48951246bb60e9cf58232bcee7bc8) )
ROM_LOAD("mpr-22965.ic16s",0x8000000, 0x0800000, CRC(8f7bfa8a) SHA1(19f137b1552978d232785c4408805b71835585c6) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "samba-key.bin", 0, 4, CRC(e17e3603) SHA1(5611615064a93cc9d957cc4edd12c716a72cd7f2) )
ROM_END
/*
@@ -4585,11 +4691,10 @@ EXP: SEGA MARINE FISHING IN EXPORT
*/
ROM_START( smarinef )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x6800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x6800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22221.ic22",0x0000000, 0x0400000, CRC(9d984375) SHA1(fe1185d70b4bc1529e3579fd6b2b678c7d548400) )
ROM_LOAD("mpr-22208.ic1", 0x0800000, 0x0800000, CRC(6a1e418c) SHA1(7092c6a34ac0c2c6fb2b4b78415d08ef473785d9) )
ROM_LOAD("mpr-22209.ic2", 0x1000000, 0x0800000, CRC(ecf5be54) SHA1(d7c264da4e232ce6f9b05c9920394f8027fa4a1d) )
@@ -4615,56 +4720,61 @@ EXP: SHOOTOUT POOL PRIZE
*/
ROM_START( shootpl )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x2800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x2800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-24065a.ic11",0x0000000, 0x0400000, CRC(622a9ba0) SHA1(2f4963b8447ecda78fea0107497c2811f075c07a) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD32_WORD("opr-24060.ic17s", 0x0800000, 0x0800000, CRC(7f3d868c) SHA1(dc352981371c5479a69756bb1cbbbca43252216d) )
ROM_LOAD32_WORD("opr-24061.ic18", 0x0800002, 0x0800000, CRC(e934267c) SHA1(fdbe2b80e309aa8d9fefd2634aef20153735019d) )
ROM_LOAD32_WORD("opr-24062.ic19s", 0x1800000, 0x0800000, CRC(26e32af4) SHA1(49412a04198175240ef9adb4b7afb8a628eb127d) )
ROM_LOAD32_WORD("opr-24063.ic20", 0x1800002, 0x0800000, CRC(683fdcff) SHA1(890816ef1b3e604e16289998cf66e221ef75a0fe) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "shootpl-key.bin", 0, 4, CRC(03c30b17) SHA1(e8e8659aa27b3d1cac2268850d3973d9afeaeba9) )
ROM_END
// SHOOTOUT POOL (the original, the above set is a sequel)
ROM_START( shootopl )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x2800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23844.ic22", 0x000000, 0x400000, CRC(5c229638) SHA1(9185f9f2369bb2423faff4222419001ac9037d3f) )
+ ROM_REGION( 0x2800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23844.ic22", 0x000000, 0x400000, CRC(5c229638) SHA1(9185f9f2369bb2423faff4222419001ac9037d3f) )
ROM_RELOAD( 0x400000, 0x400000)
- ROM_LOAD32_WORD( "mpr-23840.17s", 0x0800000, 0x800000, CRC(985e5ff4) SHA1(a6f529b1855cc2aef3bed8503746c2e38061f944) )
- ROM_LOAD32_WORD( "mpr-23841.18", 0x0800002, 0x800000, CRC(255fc335) SHA1(34ffec963880383bb9c02642f73ba3c852699831) )
- ROM_LOAD32_WORD( "mpr-23842.19s", 0x1800000, 0x800000, CRC(80724895) SHA1(ed4fa1160b35b3987702c0178bd31c3c5db69e6e) )
- ROM_LOAD32_WORD( "mpr-23843.20", 0x1800002, 0x800000, CRC(3574f616) SHA1(40130e8f98fb31c98428d444b79491f6a06ac208) )
+ ROM_LOAD32_WORD( "mpr-23840.17s", 0x0800000, 0x800000, CRC(985e5ff4) SHA1(a6f529b1855cc2aef3bed8503746c2e38061f944) )
+ ROM_LOAD32_WORD( "mpr-23841.18", 0x0800002, 0x800000, CRC(255fc335) SHA1(34ffec963880383bb9c02642f73ba3c852699831) )
+ ROM_LOAD32_WORD( "mpr-23842.19s", 0x1800000, 0x800000, CRC(80724895) SHA1(ed4fa1160b35b3987702c0178bd31c3c5db69e6e) )
+ ROM_LOAD32_WORD( "mpr-23843.20", 0x1800002, 0x800000, CRC(3574f616) SHA1(40130e8f98fb31c98428d444b79491f6a06ac208) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "shootopl-key.bin", 0, 4, CRC(45547e02) SHA1(4f79f478ff1eea14bc939a67ff570143cb56a4bf) )
ROM_END
/* Shootout Pool Medal */
ROM_START( shootplm )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x2800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-24148.ic11", 0x000000, 0x400000, CRC(d575f311) SHA1(7f45d897412fd75eda740a82320fce08331fa310) )
- ROM_RELOAD( 0x400000, 0x400000)
- ROM_LOAD32_WORD( "opr-24174.ic17s", 0x0800000, 0x800000, CRC(ccd6aec5) SHA1(a8105ce6986601d8673ffea41353fe399cf8557d) )
- ROM_LOAD32_WORD( "opr-24175.ic18", 0x0800002, 0x800000, CRC(e66e6345) SHA1(28a372168419c9352cb7fc5285bbd37bd37f3b71) )
- ROM_LOAD32_WORD( "opr-24176.ic19s", 0x1800000, 0x800000, CRC(1277bca8) SHA1(e1bd9d1a6f4170a9c29658f95e9e96caf4b0cb84) )
- ROM_LOAD32_WORD( "opr-24177.ic20", 0x1800002, 0x800000, CRC(122eac82) SHA1(2acf00686d682e0f354708fa597933a0d6de4a6f) )
+ ROM_REGION( 0x2800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-24148.ic11", 0x000000, 0x400000, CRC(d575f311) SHA1(7f45d897412fd75eda740a82320fce08331fa310) )
+ ROM_RELOAD( 0x400000, 0x400000)
+ ROM_LOAD32_WORD( "opr-24174.ic17s", 0x0800000, 0x800000, CRC(ccd6aec5) SHA1(a8105ce6986601d8673ffea41353fe399cf8557d) )
+ ROM_LOAD32_WORD( "opr-24175.ic18", 0x0800002, 0x800000, CRC(e66e6345) SHA1(28a372168419c9352cb7fc5285bbd37bd37f3b71) )
+ ROM_LOAD32_WORD( "opr-24176.ic19s", 0x1800000, 0x800000, CRC(1277bca8) SHA1(e1bd9d1a6f4170a9c29658f95e9e96caf4b0cb84) )
+ ROM_LOAD32_WORD( "opr-24177.ic20", 0x1800002, 0x800000, CRC(122eac82) SHA1(2acf00686d682e0f354708fa597933a0d6de4a6f) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "shootpl-key.bin", 0, 4, CRC(03c30b17) SHA1(e8e8659aa27b3d1cac2268850d3973d9afeaeba9) )
ROM_END
/* Oinori-daimyoujin Matsuri (medal) */
ROM_START( oinori )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x5800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x5800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "epr-24053.ic22",0x0000000, 0x0400000, CRC(f127bdab) SHA1(9095e618069fa977f6225ad323f38852131f59cd) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD( "mpr-24054.ic1", 0x0800000, 0x1000000, CRC(db595e72) SHA1(030f33ba2c6cc0a3e1b36b5f3be17b3b83f83a42) )
@@ -4699,11 +4809,10 @@ Serial: BAVE-02A1305
*/
ROM_START( spawn )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x5800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x5800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22977b.ic22",0x0000000, 0x0400000, CRC(814ff5d1) SHA1(5a0a9e55878927f98750000eb7d9391cbecfe21d) )
ROM_LOAD("mpr-22967.ic1", 0x0800000, 0x0800000, CRC(78c7d914) SHA1(0a000e396f9a83c2c777cfb61212a82ec17417ba) )
ROM_LOAD("mpr-22968.ic2", 0x1000000, 0x0800000, CRC(8c4ae1bb) SHA1(a91934a01d306c8fd8f987b3013f33aec028de70) )
@@ -4715,6 +4824,9 @@ ROM_START( spawn )
ROM_LOAD("mpr-22974.ic8", 0x4000000, 0x0800000, CRC(20983c51) SHA1(f7321abf8bf5f2a7329c98174e5cf9b1ebf596b2) )
ROM_LOAD("mpr-22975.ic9", 0x4800000, 0x0800000, CRC(0d3c70d1) SHA1(22920bc5fd1dda760b5cb17482e9181be899bc08) )
ROM_LOAD("mpr-22976.ic10", 0x5000000, 0x0800000, CRC(092d8063) SHA1(14fafd3f4c4f2b37172453d1c815fb9b8f4814f4) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "spawn-key.bin", 0, 4, CRC(dd211f09) SHA1(d436cd5009744c4c69fb94c84837103b4ca1c9a7) )
ROM_END
/*
@@ -4727,11 +4839,10 @@ EXP: THE TYPING OF THE DEAD
*/
ROM_START( totd )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23021a.ic22", 0x0000000, 0x0400000, CRC(07d21033) SHA1(d1e619d13c1c01648eb1a6964aad1554dd16c6d5) )
ROM_LOAD("mpr-23001.ic1", 0x0800000, 0x0800000, CRC(2eaab8ed) SHA1(e078bd8781e2a04e23fd18b11d118b2548fa59a8) )
@@ -4791,11 +4902,10 @@ IC21 64M AD60 2F74
*/
ROM_START( virnba )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-23073.ic22",0x0000000, 0x0400000, CRC(ce5c3d28) SHA1(ca3eeae1cf78435787338bb7b3e71301c0f71dd9) )
ROM_LOAD("mpr-22928.ic1", 0x0800000, 0x0800000, CRC(63245c98) SHA1(a5a542244f07c6c8b66961a231fb56c89d2cf20c) )
ROM_LOAD("mpr-22929.ic2", 0x1000000, 0x0800000, CRC(eea89d21) SHA1(5fe184267e637f155d767f8d931462d9593eff5a) )
@@ -4821,11 +4931,10 @@ ROM_START( virnba )
ROM_END
ROM_START( virnbao )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22949.ic22",0x0000000, 0x0400000, CRC(fd91447e) SHA1(0759d6517aeb684d0cb809c1ae1350615cc0aecc) )
ROM_LOAD("mpr-22928.ic1", 0x0800000, 0x0800000, CRC(63245c98) SHA1(a5a542244f07c6c8b66961a231fb56c89d2cf20c) )
ROM_LOAD("mpr-22929.ic2", 0x1000000, 0x0800000, CRC(eea89d21) SHA1(5fe184267e637f155d767f8d931462d9593eff5a) )
@@ -4848,6 +4957,9 @@ ROM_START( virnbao )
ROM_LOAD("mpr-22946.ic19",0x9800000, 0x0800000, CRC(c79696c5) SHA1(4a9ac8b4ae1ce5d196e6c74fecc241b74aebc4ab) )
ROM_LOAD("mpr-22947.ic20",0xa000000, 0x0800000, CRC(5e5eb595) SHA1(401d4a11d436988d716bb014b36233f171dc576d) )
ROM_LOAD("mpr-22948.ic21",0xa800000, 0x0800000, CRC(1b0de917) SHA1(fd1742ea9bb2f1ce871ee3266171f26634e1c8e7) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "virnbao-key.bin", 0, 4, CRC(980e3be8) SHA1(234a2f8ee408144d2c51e8083d0a033eea6026e0) )
ROM_END
/*
@@ -4878,11 +4990,10 @@ IC15 32M 0DF9 FC01 MPR21928
*/
ROM_START( vs2_2k )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-21929.ic22", 0x0000000, 0x0400000, CRC(831af08a) SHA1(af4c74623be823fd061765cede354c6a9722fd10) )
ROM_LOAD("mpr-21924.ic1", 0x0800000, 0x0800000, CRC(f91ef69b) SHA1(4ed23091efad7ddf1878a0bfcdcbba3cf151af84) )
ROM_LOAD("mpr-21925.ic2", 0x1000000, 0x0800000, CRC(40128a67) SHA1(9d191c4ec33465f29bbc09491dde62f354a9ab15) )
@@ -4899,6 +5010,9 @@ ROM_START( vs2_2k )
ROM_LOAD("mpr-21921.ic13s",0x6800000, 0x0800000, CRC(d6346491) SHA1(830971cbc14cab022a09ad4c6e11ee49c550e308) )
ROM_LOAD("mpr-21922.ic14s",0x7000000, 0x0800000, CRC(a1901e1e) SHA1(2281f91ac696cc14886bcdf4b0685ce2f5bb8117) )
ROM_LOAD("mpr-21923.ic15s",0x7800000, 0x0400000, CRC(d127d9a5) SHA1(78c95357344ea15469b84fa8b1332e76521892cd) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "vs2_2k-key.bin", 0, 4, CRC(f9fb4716) SHA1(83277f61e97fc6c4d8d27b903bde0acdfb0c7dbc) )
ROM_END
/*
@@ -4925,11 +5039,10 @@ IC11 64M F590 D280
*/
ROM_START( vtennis )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x6000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x6000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22927.ic22", 0x0000000, 0x0400000, CRC(89781723) SHA1(cf644aa66abcec6964d77485a0292f11ba80dd0d) )
ROM_RELOAD( 0x400000, 0x400000)
ROM_LOAD("mpr-22916.ic1", 0x0800000, 0x0800000, CRC(903873e5) SHA1(09af791bc02cca0e2dc72187679830ed9f4fc772) )
@@ -4943,6 +5056,9 @@ ROM_START( vtennis )
ROM_LOAD("mpr-22924.ic9", 0x4800000, 0x0800000, CRC(ecde9d57) SHA1(1fbe7fdf66a56f4f1765baf113dff95142bfd114) )
ROM_LOAD("mpr-22925.ic10",0x5000000, 0x0800000, CRC(81057e42) SHA1(d41137ae28c64dbdb50150db8cf25851bc0709c4) )
ROM_LOAD("mpr-22926.ic11",0x5800000, 0x0800000, CRC(57eec89d) SHA1(dd8f9a9155e51ee5260f559449fb0ea245077952) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "vtennis-key.bin", 0, 4, CRC(f355af89) SHA1(581a9b0f8c2f3606006e85e136f9cf0ea908c773) )
ROM_END
/*
@@ -4953,74 +5069,83 @@ EXP: ROYAL RUMBLE
*/
ROM_START( wwfroyal )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x8800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-22261.ic22", 0x0000000, 0x0400000, CRC(60e5a6cd) SHA1(d74ee8318e40190231b94030176223da8305c053) )
- ROM_LOAD( "mpr-22262.ic1", 0x0800000, 0x1000000, CRC(f18c7920) SHA1(76fb592f62b8a359df19074265b44772ab2ecea0) )
- ROM_LOAD( "mpr-22263.ic2", 0x1800000, 0x1000000, CRC(5a397a54) SHA1(4b41b19ab7c49e09eeb5df2e688fdaecf8bb33a9) )
- ROM_LOAD( "mpr-22264.ic3", 0x2800000, 0x1000000, CRC(edca701e) SHA1(459b533d862e011f8daa0e4997d69fa7339b0755) )
- ROM_LOAD( "mpr-22265.ic4", 0x3800000, 0x1000000, CRC(7dfe71a1) SHA1(f2053544de8a177ab931c4d6a9010dfb6cc92e31) )
- ROM_LOAD( "mpr-22266.ic5", 0x4800000, 0x1000000, CRC(3e9ac148) SHA1(05a5725c72bbfc65db47aaa677b95f07aa9a3909) )
- ROM_LOAD( "mpr-22267.ic6", 0x5800000, 0x1000000, CRC(67ec1027) SHA1(2432b33983bbc9b07477459adb5ee1a62b6c0ea3) )
- ROM_LOAD( "mpr-22268.ic7", 0x6800000, 0x1000000, CRC(536f5eea) SHA1(f1de8624f82595adf75693b604fb026bf3f778ee) )
- ROM_LOAD( "mpr-22269.ic8", 0x7800000, 0x1000000, CRC(6c0cf740) SHA1(da10b33a6e54afbe1d7e52801216e7119b0b33b1) )
+ ROM_LOAD( "mpr-22262.ic1", 0x0800000, 0x1000000, CRC(f18c7920) SHA1(76fb592f62b8a359df19074265b44772ab2ecea0) )
+ ROM_LOAD( "mpr-22263.ic2", 0x1800000, 0x1000000, CRC(5a397a54) SHA1(4b41b19ab7c49e09eeb5df2e688fdaecf8bb33a9) )
+ ROM_LOAD( "mpr-22264.ic3", 0x2800000, 0x1000000, CRC(edca701e) SHA1(459b533d862e011f8daa0e4997d69fa7339b0755) )
+ ROM_LOAD( "mpr-22265.ic4", 0x3800000, 0x1000000, CRC(7dfe71a1) SHA1(f2053544de8a177ab931c4d6a9010dfb6cc92e31) )
+ ROM_LOAD( "mpr-22266.ic5", 0x4800000, 0x1000000, CRC(3e9ac148) SHA1(05a5725c72bbfc65db47aaa677b95f07aa9a3909) )
+ ROM_LOAD( "mpr-22267.ic6", 0x5800000, 0x1000000, CRC(67ec1027) SHA1(2432b33983bbc9b07477459adb5ee1a62b6c0ea3) )
+ ROM_LOAD( "mpr-22268.ic7", 0x6800000, 0x1000000, CRC(536f5eea) SHA1(f1de8624f82595adf75693b604fb026bf3f778ee) )
+ ROM_LOAD( "mpr-22269.ic8", 0x7800000, 0x1000000, CRC(6c0cf740) SHA1(da10b33a6e54afbe1d7e52801216e7119b0b33b1) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "wwfroyal-key.bin", 0, 4, CRC(e14721b1) SHA1(1f2f447bbc4b1e0b016c5ac545d1d805abc61ebd) )
ROM_END
ROM_START( sl2007 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x10000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x10000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "ic8.bin", 0x0000000, 0x4000000, CRC(30f0dcda) SHA1(eb1ebb0b089bb27571721de07e8635c89734d23e) )
ROM_LOAD( "ic9.bin", 0x4000000, 0x4000000, CRC(5475556e) SHA1(b895125b7c9f01723df42b44073c206cb43871ac) )
ROM_LOAD( "ic10.bin", 0x8000000, 0x4000000, CRC(133c742c) SHA1(89f857a31731dc918afc72b6cb716f5c77cb9d6e) )
ROM_LOAD( "ic11.bin", 0xc000000, 0x4000000, CRC(562fb88e) SHA1(172678e3e27cfad7f7e6217c4653a4ba119bfbdf) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "sl2007-key.bin", 0, 4, CRC(d5d1e807) SHA1(8a0cc371729c622bb05c5d26b3e39ec31d29ace1) )
ROM_END
ROM_START( asndynmt )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x10000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x10000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "fpr-24382.ic8", 0x0000000, 0x4000000, CRC(4daefde5) SHA1(ceba09315a22541f500dbfe1f8ebfb0a1f9a8a62) )
ROM_LOAD( "fpr-24383.ic9", 0x4000000, 0x4000000, CRC(8ac2fe5d) SHA1(1c606140ffb2720433bdb0d225ef3c70e2260d27) )
ROM_LOAD( "fpr-24384.ic10", 0x8000000, 0x4000000, CRC(2e9116c4) SHA1(58903a33c4ce72a1f75aefcab94393fc2e8bd2d9) )
ROM_LOAD( "fpr-24385.ic11", 0xc000000, 0x4000000, CRC(2b79f45d) SHA1(db97d980bf1590df4b983a4b7786977687238ef5) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "asndynmt-key.bin", 0, 4, CRC(bf5396a9) SHA1(0b27fdc800143fb977cb2f1e937078d7a7006939) )
ROM_END
ROM_START( illvelo )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x10000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x10000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "illvelo.ic8", 0x0000000, 0x4000000, CRC(34ddd732) SHA1(fc714e9593225e9fa3a3caa7a988ab1aa994e50f) )
ROM_LOAD( "illvelo.ic9", 0x4000000, 0x4000000, CRC(2a880b08) SHA1(87c8e742b8f0658fee91ea97c61b1b9d5dbb25f5) )
ROM_LOAD( "illvelo.ic10", 0x8000000, 0x4000000, CRC(c02040f9) SHA1(27ad2cb45e8a516433917f060ca9798412bb95f7) )
ROM_LOAD( "illvelo.ic11", 0xc000000, 0x4000000, CRC(b2eb30ed) SHA1(44fac4bedde4df04b9572ac665d3ac2c5cd00c7d) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "illvelo-key.bin", 0, 4, CRC(e164952f) SHA1(6c0dfe567640e1e843a5d7bf858a24c101dfcf95) )
ROM_END
ROM_START( ausfache )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "ic8.bin", 0x0000000, 0x4000000, CRC(f6a16173) SHA1(7167885ce27a99bce286ba71128b4a2c8363015a) )
ROM_LOAD( "ic9.bin", 0x4000000, 0x4000000, CRC(18c994d7) SHA1(159e1425b2fc645133814b0d26d93a90e9849b1a) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ausfache-key.bin", 0, 4, CRC(93cdc793) SHA1(f0a0c321a3bdf8ca87cbd840a168a9057c08f16a) )
ROM_END
ROM_START( pokasuka )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x14000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0x14000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "fpr-24365.ic8", 0x00000000, 0x4000000, CRC(11489cda) SHA1(d9902a61491061f522650f825f92e81541fcc772) )
ROM_LOAD( "fpr-24366.ic9", 0x04000000, 0x4000000, CRC(7429714a) SHA1(e45b442f447d24de0c746943a59c0dceb6e359cc) )
ROM_LOAD( "fpr-24367.ic10", 0x08000000, 0x4000000, CRC(dee87bab) SHA1(c5386cda2e84992e18b7959e7d9965c28c1185a4) )
@@ -5029,6 +5154,9 @@ ROM_START( pokasuka )
ROM_REGION( 0x200000, "ioboard", 0) // touch screen I/O board, program disassembles as little-endian SH-4
ROM_LOAD( "fpr24351.ic14", 0x000000, 0x200000, CRC(4d1b7b89) SHA1(965b8c6b5a2e7b3f1b1e2eac19c86000c3b66754) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "pokasuka-key.bin", 0, 4, CRC(f00bcd61) SHA1(b8315b851656c2e0b7853979988d1c44eab0886b) )
ROM_END
/*
@@ -5073,11 +5201,10 @@ Protection notes:
*/
ROM_START( zombrvn )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xa000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xa000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD("epr-21707.ic22", 0x0000000, 0x0200000, CRC(4daa11e9) SHA1(2dc219a5e0d0b41cce6d07631baff0495c479e13) )
ROM_RELOAD( 0x200000, 0x200000)
ROM_RELOAD( 0x400000, 0x200000)
@@ -5101,274 +5228,289 @@ ROM_START( zombrvn )
ROM_LOAD("mpr-21724.ic17",0x8800000, 0x0800000, CRC(f048aeb7) SHA1(39b7bf0ce65f6e13aa0ae5fd6a142959b9ce5acf) )
ROM_LOAD("mpr-21725.ic18",0x9000000, 0x0800000, CRC(2202077b) SHA1(0893a85379f994277083c0bc5b178dd34508f816) )
ROM_LOAD("mpr-21726.ic19",0x9800000, 0x0800000, CRC(429bf290) SHA1(6733e1bcf100e73ab43273f6feedc187fcaa55d4) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "zombrvn-key.bin", 0, 4, CRC(572d3944) SHA1(16ae634d85169851b9deae3c03b5dd4d4bf2794a) )
ROM_END
ROM_START( gunsur2 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x10000000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "bhf1vere.2f", 0x0000000, 0x0800000, CRC(121ea283) SHA1(e4bf2b90fa3d42727b8393ffa2c5a8863914a630) )
- ROM_LOAD( "bhf1ma2.4m", 0x2000000, 0x1000000, CRC(8073dec7) SHA1(2d4173ff0de37b95a8cb02e1b572a9cdeb448c24) )
- ROM_LOAD( "bhf1ma3.4l", 0x3000000, 0x1000000, CRC(43cd16a4) SHA1(86258df34b652a614129efd4c825c62ff1382318) )
- ROM_LOAD( "bhf1ma4.4k", 0x4000000, 0x1000000, CRC(f6aebed8) SHA1(687057aacb45ebffe3b5cf2b8dd52d24039392f1) )
- ROM_LOAD( "bhf1ma5.4j", 0x5000000, 0x1000000, CRC(b5e1b582) SHA1(47763113e6917bbf48840292c08d4f63c3ce085a) )
- ROM_LOAD( "bhf1ma6.4h", 0x6000000, 0x1000000, CRC(345fd824) SHA1(61ebc12c7cd7f2e2c5173cc0f57240855ec99c6f) )
- ROM_LOAD( "bhf1ma7.4f", 0x7000000, 0x1000000, CRC(465ecff1) SHA1(f9eabc77ed8135fa77c8e40335e6b3df1a64042c) )
- ROM_LOAD( "bhf1ma8.4d", 0x8000000, 0x1000000, CRC(76c92354) SHA1(0049b10144d65f574d14d9ad9d1d5380bf154532) )
- ROM_LOAD( "bhf1ma9.4e", 0x9000000, 0x1000000, CRC(d45a46ee) SHA1(c12764f5ba17f10fb309e47450bb89fbef51e252) )
- ROM_LOAD( "bhf1ma10.4c", 0xa000000, 0x1000000, CRC(8c38d1f7) SHA1(3fbc280590c49fa094c1fc1e23d6c9d0031298c5) )
- ROM_LOAD( "bhf1ma11.4b", 0xb000000, 0x1000000, CRC(f49153c4) SHA1(85d5583cac492317ba52dc7a31a443f5f26a67c9) )
- ROM_LOAD( "bhf1ma12.6p", 0xc000000, 0x1000000, CRC(0e2bdd9a) SHA1(e2f82d2c9e33da1a297d79a0324558d0ff614172) )
- ROM_LOAD( "bhf1ma13.6n", 0xd000000, 0x1000000, CRC(055718ad) SHA1(355c4780231a4361aa6237dd34819b60d9df0fc7) )
- ROM_LOAD( "bhf1ma14.6m", 0xe000000, 0x1000000, CRC(d06c9bd7) SHA1(54668a2fd31059976890da92709c18f308634887) )
- ROM_LOAD( "bhf1ma15.6l", 0xf000000, 0x1000000, CRC(db3c396b) SHA1(da0e125d627ce890906ca100081ab0685e11c0ef) )
+ ROM_REGION( 0x10000000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "bhf1vere.2f", 0x0000000, 0x0800000, CRC(121ea283) SHA1(e4bf2b90fa3d42727b8393ffa2c5a8863914a630) )
+ ROM_LOAD( "bhf1ma2.4m", 0x2000000, 0x1000000, CRC(8073dec7) SHA1(2d4173ff0de37b95a8cb02e1b572a9cdeb448c24) )
+ ROM_LOAD( "bhf1ma3.4l", 0x3000000, 0x1000000, CRC(43cd16a4) SHA1(86258df34b652a614129efd4c825c62ff1382318) )
+ ROM_LOAD( "bhf1ma4.4k", 0x4000000, 0x1000000, CRC(f6aebed8) SHA1(687057aacb45ebffe3b5cf2b8dd52d24039392f1) )
+ ROM_LOAD( "bhf1ma5.4j", 0x5000000, 0x1000000, CRC(b5e1b582) SHA1(47763113e6917bbf48840292c08d4f63c3ce085a) )
+ ROM_LOAD( "bhf1ma6.4h", 0x6000000, 0x1000000, CRC(345fd824) SHA1(61ebc12c7cd7f2e2c5173cc0f57240855ec99c6f) )
+ ROM_LOAD( "bhf1ma7.4f", 0x7000000, 0x1000000, CRC(465ecff1) SHA1(f9eabc77ed8135fa77c8e40335e6b3df1a64042c) )
+ ROM_LOAD( "bhf1ma8.4d", 0x8000000, 0x1000000, CRC(76c92354) SHA1(0049b10144d65f574d14d9ad9d1d5380bf154532) )
+ ROM_LOAD( "bhf1ma9.4e", 0x9000000, 0x1000000, CRC(d45a46ee) SHA1(c12764f5ba17f10fb309e47450bb89fbef51e252) )
+ ROM_LOAD( "bhf1ma10.4c", 0xa000000, 0x1000000, CRC(8c38d1f7) SHA1(3fbc280590c49fa094c1fc1e23d6c9d0031298c5) )
+ ROM_LOAD( "bhf1ma11.4b", 0xb000000, 0x1000000, CRC(f49153c4) SHA1(85d5583cac492317ba52dc7a31a443f5f26a67c9) )
+ ROM_LOAD( "bhf1ma12.6p", 0xc000000, 0x1000000, CRC(0e2bdd9a) SHA1(e2f82d2c9e33da1a297d79a0324558d0ff614172) )
+ ROM_LOAD( "bhf1ma13.6n", 0xd000000, 0x1000000, CRC(055718ad) SHA1(355c4780231a4361aa6237dd34819b60d9df0fc7) )
+ ROM_LOAD( "bhf1ma14.6m", 0xe000000, 0x1000000, CRC(d06c9bd7) SHA1(54668a2fd31059976890da92709c18f308634887) )
+ ROM_LOAD( "bhf1ma15.6l", 0xf000000, 0x1000000, CRC(db3c396b) SHA1(da0e125d627ce890906ca100081ab0685e11c0ef) )
ROM_END
ROM_START( wldkicks )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "wk1-fl1.2d", 0x0400000, 0x0400000, CRC(f833a543) SHA1(328b64f2790bfd0b63168a8a3175227e083b995d) )
- ROM_LOAD( "wk1-fl2.2c", 0x0c00000, 0x0400000, CRC(20ee71b0) SHA1(074e0c531e8770b0efd6464193bce7a284a3c057) )
- ROM_LOAD( "wk1-ma2.4m", 0x1000000, 0x1000000, CRC(650590ec) SHA1(bb9d5d5df2321df24ee0fb9e8bf2757d5277f8ea) )
- ROM_RELOAD( 0x800000, 0x400000)
- ROM_LOAD( "wk1-ma3.4l", 0x2000000, 0x1000000, CRC(3b340dc0) SHA1(2412e41d5bd74d1233fb91f8ce2276a318bfc53d) )
- ROM_LOAD( "wk1-ma4.4k", 0x3000000, 0x1000000, CRC(263fbb16) SHA1(b5d3a3d085f9623d70030ca3c49afb84e25549e3) )
- ROM_LOAD( "wk1-ma5.4j", 0x4000000, 0x1000000, CRC(9697db68) SHA1(7926e2acff0519403afcba9bdb5f68de28b06c79) )
- ROM_LOAD( "wk1-ma6.4h", 0x5000000, 0x1000000, CRC(65017db3) SHA1(a66cd73cdfc9355df63da781a46aa832889f583a) )
- ROM_LOAD( "wk1-ma7.4f", 0x6000000, 0x1000000, CRC(902eea85) SHA1(aa7964eb85b468d4fe112f9f0faaf2fa3f1aa96b) )
- ROM_LOAD( "wk1-ma8.4e", 0x7000000, 0x1000000, CRC(90e917ed) SHA1(53d32ce0ae2b05fa55a95b8697927045d07f4e8a) )
- ROM_LOAD( "wk1-ma9.4d", 0x8000000, 0x1000000, CRC(1d227a05) SHA1(9f816bcdf0279785e0b37ab2f3c5eb5912114dd5) )
- ROM_LOAD( "wk1-ma10.4c", 0x9000000, 0x1000000, CRC(29635a54) SHA1(a3109d0f8f271e2183316846df2a6a819f6a9b20) )
- ROM_LOAD( "wk1-ma11.4b", 0xa000000, 0x1000000, CRC(e96f312c) SHA1(0a92640277111aef5c6e9dab4218a8ae2196ce61) )
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "wk1-fl1.2d", 0x0400000, 0x0400000, CRC(f833a543) SHA1(328b64f2790bfd0b63168a8a3175227e083b995d) )
+ ROM_LOAD( "wk1-fl2.2c", 0x0c00000, 0x0400000, CRC(20ee71b0) SHA1(074e0c531e8770b0efd6464193bce7a284a3c057) )
+ ROM_LOAD( "wk1-ma2.4m", 0x1000000, 0x1000000, CRC(650590ec) SHA1(bb9d5d5df2321df24ee0fb9e8bf2757d5277f8ea) )
+ ROM_RELOAD( 0x800000, 0x400000)
+ ROM_LOAD( "wk1-ma3.4l", 0x2000000, 0x1000000, CRC(3b340dc0) SHA1(2412e41d5bd74d1233fb91f8ce2276a318bfc53d) )
+ ROM_LOAD( "wk1-ma4.4k", 0x3000000, 0x1000000, CRC(263fbb16) SHA1(b5d3a3d085f9623d70030ca3c49afb84e25549e3) )
+ ROM_LOAD( "wk1-ma5.4j", 0x4000000, 0x1000000, CRC(9697db68) SHA1(7926e2acff0519403afcba9bdb5f68de28b06c79) )
+ ROM_LOAD( "wk1-ma6.4h", 0x5000000, 0x1000000, CRC(65017db3) SHA1(a66cd73cdfc9355df63da781a46aa832889f583a) )
+ ROM_LOAD( "wk1-ma7.4f", 0x6000000, 0x1000000, CRC(902eea85) SHA1(aa7964eb85b468d4fe112f9f0faaf2fa3f1aa96b) )
+ ROM_LOAD( "wk1-ma8.4e", 0x7000000, 0x1000000, CRC(90e917ed) SHA1(53d32ce0ae2b05fa55a95b8697927045d07f4e8a) )
+ ROM_LOAD( "wk1-ma9.4d", 0x8000000, 0x1000000, CRC(1d227a05) SHA1(9f816bcdf0279785e0b37ab2f3c5eb5912114dd5) )
+ ROM_LOAD( "wk1-ma10.4c", 0x9000000, 0x1000000, CRC(29635a54) SHA1(a3109d0f8f271e2183316846df2a6a819f6a9b20) )
+ ROM_LOAD( "wk1-ma11.4b", 0xa000000, 0x1000000, CRC(e96f312c) SHA1(0a92640277111aef5c6e9dab4218a8ae2196ce61) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "wldkicks-key.bin", 0, 4, CRC(c1e3000b) SHA1(36c2546833effe9452e2b3f7d31335fc5e349f49) )
ROM_END
ROM_START( vtenis2c )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x10000000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-22327a.bin", 0x000000, 0x400000, CRC(e949004c) SHA1(54db84c3e1db30b233612f68dcd094b597deffd0) )
- ROM_LOAD32_WORD( "mpr-22307.17s", 0x0800000, 0x800000, CRC(db5c0818) SHA1(d39d2241adeb962d68bfb76a9d1c0dcd538c3538) )
- ROM_LOAD32_WORD( "mpr-22308.18", 0x0800002, 0x800000, CRC(ac996a0e) SHA1(5cf110b79ef250cd64919205874278b4a85a42f6) )
- ROM_LOAD32_WORD( "mpr-22309.19s", 0x1800000, 0x800000, CRC(fba79592) SHA1(09f2be133cf503e6f5e13eef1b1e38c268529b68) )
- ROM_LOAD32_WORD( "mpr-22310.20", 0x1800002, 0x800000, CRC(10876476) SHA1(590fd5532c72c67e285a12acd33e828f2e1ff5b1) )
- ROM_LOAD32_WORD( "mpr-22311.21s", 0x2800000, 0x800000, CRC(ad735e61) SHA1(6d340ae2f8fe44b82b1bbace02b5c10e89e40400) )
- ROM_LOAD32_WORD( "mpr-22312.22", 0x2800002, 0x800000, CRC(46830ffa) SHA1(89b843588a48352b958a70e85deb625c19a2fcc7) )
- ROM_LOAD32_WORD( "mpr-22313.23s", 0x3800000, 0x800000, CRC(44900a20) SHA1(3a82938a81fd6634c51595479d59ae4215fb8af3) )
- ROM_LOAD32_WORD( "mpr-22314.24", 0x3800002, 0x800000, CRC(3b0ba6e9) SHA1(0ee1dd2d67dd688de19b1ede00c48234994a4832) )
- ROM_LOAD32_WORD( "mpr-22315.25s", 0x4800000, 0x800000, CRC(eebe4877) SHA1(bc13e50d85f51aa2baf3c00440a089a8aff998ef) )
- ROM_LOAD32_WORD( "mpr-22316.26", 0x4800002, 0x800000, CRC(0a82d403) SHA1(fc002210397eb792c27885d440671225d0bed71f) )
- ROM_LOAD32_WORD( "mpr-22317.27s", 0x5800000, 0x800000, CRC(55ef3e71) SHA1(d7643c5d3bb6ccf4b35511be2b5c776fc46a2f45) )
- ROM_LOAD32_WORD( "mpr-22318.28", 0x5800002, 0x800000, CRC(3dfabb96) SHA1(97863c939e5bb3e976c517839faa49bcfbee83c5) )
- ROM_LOAD32_WORD( "mpr-22319.29s", 0x6800000, 0x800000, CRC(9b92fd02) SHA1(19c9b279aca1aa6575047494ce26a36dbc93812f) )
- ROM_LOAD32_WORD( "mpr-22320.30", 0x6800002, 0x800000, CRC(9b762f6e) SHA1(7f787a89574e45f529970377e8b6394472cd001b) )
- ROM_LOAD32_WORD( "mpr-22321.31s", 0x7800000, 0x800000, CRC(5ce2b3f1) SHA1(9bac49167ced0415ab3b2cac20c7bcf205aecfdf) )
- ROM_LOAD32_WORD( "mpr-22322.32", 0x7800002, 0x800000, CRC(21bf1caf) SHA1(bc1828db2f5f71ef87153a81b49b2ba72ba176e1) )
- ROM_LOAD32_WORD( "mpr-22323.33s", 0x8800000, 0x800000, CRC(0bd632ab) SHA1(21acab5336dd0ba317839176f2557df95917729e) )
- ROM_LOAD32_WORD( "mpr-22324.34", 0x8800002, 0x800000, CRC(ff2571d4) SHA1(c2cbb2345163bbf1973e63cefb9a952e5a52a6cf) )
+ ROM_REGION( 0x10000000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-22327a.bin", 0x000000, 0x400000, CRC(e949004c) SHA1(54db84c3e1db30b233612f68dcd094b597deffd0) )
+ ROM_LOAD32_WORD( "mpr-22307.17s", 0x0800000, 0x800000, CRC(db5c0818) SHA1(d39d2241adeb962d68bfb76a9d1c0dcd538c3538) )
+ ROM_LOAD32_WORD( "mpr-22308.18", 0x0800002, 0x800000, CRC(ac996a0e) SHA1(5cf110b79ef250cd64919205874278b4a85a42f6) )
+ ROM_LOAD32_WORD( "mpr-22309.19s", 0x1800000, 0x800000, CRC(fba79592) SHA1(09f2be133cf503e6f5e13eef1b1e38c268529b68) )
+ ROM_LOAD32_WORD( "mpr-22310.20", 0x1800002, 0x800000, CRC(10876476) SHA1(590fd5532c72c67e285a12acd33e828f2e1ff5b1) )
+ ROM_LOAD32_WORD( "mpr-22311.21s", 0x2800000, 0x800000, CRC(ad735e61) SHA1(6d340ae2f8fe44b82b1bbace02b5c10e89e40400) )
+ ROM_LOAD32_WORD( "mpr-22312.22", 0x2800002, 0x800000, CRC(46830ffa) SHA1(89b843588a48352b958a70e85deb625c19a2fcc7) )
+ ROM_LOAD32_WORD( "mpr-22313.23s", 0x3800000, 0x800000, CRC(44900a20) SHA1(3a82938a81fd6634c51595479d59ae4215fb8af3) )
+ ROM_LOAD32_WORD( "mpr-22314.24", 0x3800002, 0x800000, CRC(3b0ba6e9) SHA1(0ee1dd2d67dd688de19b1ede00c48234994a4832) )
+ ROM_LOAD32_WORD( "mpr-22315.25s", 0x4800000, 0x800000, CRC(eebe4877) SHA1(bc13e50d85f51aa2baf3c00440a089a8aff998ef) )
+ ROM_LOAD32_WORD( "mpr-22316.26", 0x4800002, 0x800000, CRC(0a82d403) SHA1(fc002210397eb792c27885d440671225d0bed71f) )
+ ROM_LOAD32_WORD( "mpr-22317.27s", 0x5800000, 0x800000, CRC(55ef3e71) SHA1(d7643c5d3bb6ccf4b35511be2b5c776fc46a2f45) )
+ ROM_LOAD32_WORD( "mpr-22318.28", 0x5800002, 0x800000, CRC(3dfabb96) SHA1(97863c939e5bb3e976c517839faa49bcfbee83c5) )
+ ROM_LOAD32_WORD( "mpr-22319.29s", 0x6800000, 0x800000, CRC(9b92fd02) SHA1(19c9b279aca1aa6575047494ce26a36dbc93812f) )
+ ROM_LOAD32_WORD( "mpr-22320.30", 0x6800002, 0x800000, CRC(9b762f6e) SHA1(7f787a89574e45f529970377e8b6394472cd001b) )
+ ROM_LOAD32_WORD( "mpr-22321.31s", 0x7800000, 0x800000, CRC(5ce2b3f1) SHA1(9bac49167ced0415ab3b2cac20c7bcf205aecfdf) )
+ ROM_LOAD32_WORD( "mpr-22322.32", 0x7800002, 0x800000, CRC(21bf1caf) SHA1(bc1828db2f5f71ef87153a81b49b2ba72ba176e1) )
+ ROM_LOAD32_WORD( "mpr-22323.33s", 0x8800000, 0x800000, CRC(0bd632ab) SHA1(21acab5336dd0ba317839176f2557df95917729e) )
+ ROM_LOAD32_WORD( "mpr-22324.34", 0x8800002, 0x800000, CRC(ff2571d4) SHA1(c2cbb2345163bbf1973e63cefb9a952e5a52a6cf) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "vtenis2c-key.bin", 0, 4, CRC(b8c5b510) SHA1(f36d037a62a576e71211093e075f0ffa7e312c2d) )
ROM_END
ROM_START( kick4csh )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x9000084, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-24212.ic11", 0x0000000, 0x400000, CRC(935453e8) SHA1(b34b3ac976229cba941843ffac9db420068999de) )
- ROM_LOAD32_WORD( "opr-24213a.ic17s", 0x1000000, 0x800000, CRC(e24affe1) SHA1(5b4efbf9cdde8e49c26edba69b515d79b9b7acea) )
- ROM_LOAD32_WORD( "opr-24214a.ic18", 0x1000002, 0x800000, CRC(19bc5bca) SHA1(1c16ac929757a0c46456938bd9ccec7438130c66) )
- ROM_LOAD32_WORD( "opr-24215a.ic19s", 0x2000000, 0x800000, CRC(fed7750e) SHA1(61af9799a73ddc80e6763d44b23cbf8db497f144) )
- ROM_LOAD32_WORD( "opr-24216a.ic20", 0x2000002, 0x800000, CRC(635e5365) SHA1(e22f3fb0ac03963596e36592bfce791b0ee183e9) )
- ROM_LOAD32_WORD( "opr-24224a.ic21s", 0x3000000, 0x800000, CRC(a86b9368) SHA1(d73b8250700d368d3b194170b507a1ec1c818287) )
- ROM_LOAD32_WORD( "opr-24225a.ic22", 0x3000002, 0x800000, CRC(dbdebe45) SHA1(916897ea376175b48652efb58cdf22350d2a64cf) )
- ROM_LOAD32_WORD( "opr-24226a.ic23s", 0x4000000, 0x800000, CRC(43edd5a1) SHA1(0992c355d3d7d86dfe425de4b823fa4b64c0ee46) )
- ROM_LOAD32_WORD( "opr-24227a.ic24", 0x4000002, 0x800000, CRC(0e75009a) SHA1(f897ba64b6c6d98a080ee45a6a5f10cd6a764d61) )
- ROM_LOAD32_WORD( "opr-24228a.ic25s", 0x5000000, 0x800000, CRC(e1343e87) SHA1(8ea4eb85b9cbc1d1ef59c661357fc3dd473143d0) )
- ROM_LOAD32_WORD( "opr-24229a.ic26", 0x5000002, 0x800000, CRC(cca7f957) SHA1(8e2035c5d96fef849cf7517219dd6f1ae1e0f84b) )
- ROM_LOAD32_WORD( "opr-24230a.ic27s", 0x6000000, 0x800000, CRC(71f52068) SHA1(c21d2ce2fa2e83d0048cc52c8c7dbece11780e2f) )
- ROM_LOAD32_WORD( "opr-24231a.ic28", 0x6000002, 0x800000, CRC(16f3a1f1) SHA1(c3893d536ac0c16793accaa5aeb166fef4035630) )
- ROM_LOAD32_WORD( "opr-24232a.ic29", 0x7000000, 0x800000, CRC(4cdbd372) SHA1(745645c959689d4f2234aba37694e851b272528d) )
- ROM_LOAD32_WORD( "opr-24233a.ic30s", 0x7000002, 0x800000, CRC(70d638c6) SHA1(ef8bd9860a587dc76f3915047a5e408ab9f1f9b6) )
- ROM_LOAD32_WORD( "opr-24234a.ic31", 0x8000000, 0x800000, CRC(f78deb2a) SHA1(7103333c7f388545ebba8e8bb9443ec5ea90589b) )
+ ROM_REGION( 0x9000084, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-24212.ic11", 0x0000000, 0x400000, CRC(935453e8) SHA1(b34b3ac976229cba941843ffac9db420068999de) )
+ ROM_LOAD32_WORD( "opr-24213a.ic17s", 0x1000000, 0x800000, CRC(e24affe1) SHA1(5b4efbf9cdde8e49c26edba69b515d79b9b7acea) )
+ ROM_LOAD32_WORD( "opr-24214a.ic18", 0x1000002, 0x800000, CRC(19bc5bca) SHA1(1c16ac929757a0c46456938bd9ccec7438130c66) )
+ ROM_LOAD32_WORD( "opr-24215a.ic19s", 0x2000000, 0x800000, CRC(fed7750e) SHA1(61af9799a73ddc80e6763d44b23cbf8db497f144) )
+ ROM_LOAD32_WORD( "opr-24216a.ic20", 0x2000002, 0x800000, CRC(635e5365) SHA1(e22f3fb0ac03963596e36592bfce791b0ee183e9) )
+ ROM_LOAD32_WORD( "opr-24224a.ic21s", 0x3000000, 0x800000, CRC(a86b9368) SHA1(d73b8250700d368d3b194170b507a1ec1c818287) )
+ ROM_LOAD32_WORD( "opr-24225a.ic22", 0x3000002, 0x800000, CRC(dbdebe45) SHA1(916897ea376175b48652efb58cdf22350d2a64cf) )
+ ROM_LOAD32_WORD( "opr-24226a.ic23s", 0x4000000, 0x800000, CRC(43edd5a1) SHA1(0992c355d3d7d86dfe425de4b823fa4b64c0ee46) )
+ ROM_LOAD32_WORD( "opr-24227a.ic24", 0x4000002, 0x800000, CRC(0e75009a) SHA1(f897ba64b6c6d98a080ee45a6a5f10cd6a764d61) )
+ ROM_LOAD32_WORD( "opr-24228a.ic25s", 0x5000000, 0x800000, CRC(e1343e87) SHA1(8ea4eb85b9cbc1d1ef59c661357fc3dd473143d0) )
+ ROM_LOAD32_WORD( "opr-24229a.ic26", 0x5000002, 0x800000, CRC(cca7f957) SHA1(8e2035c5d96fef849cf7517219dd6f1ae1e0f84b) )
+ ROM_LOAD32_WORD( "opr-24230a.ic27s", 0x6000000, 0x800000, CRC(71f52068) SHA1(c21d2ce2fa2e83d0048cc52c8c7dbece11780e2f) )
+ ROM_LOAD32_WORD( "opr-24231a.ic28", 0x6000002, 0x800000, CRC(16f3a1f1) SHA1(c3893d536ac0c16793accaa5aeb166fef4035630) )
+ ROM_LOAD32_WORD( "opr-24232a.ic29", 0x7000000, 0x800000, CRC(4cdbd372) SHA1(745645c959689d4f2234aba37694e851b272528d) )
+ ROM_LOAD32_WORD( "opr-24233a.ic30s", 0x7000002, 0x800000, CRC(70d638c6) SHA1(ef8bd9860a587dc76f3915047a5e408ab9f1f9b6) )
+ ROM_LOAD32_WORD( "opr-24234a.ic31", 0x8000000, 0x800000, CRC(f78deb2a) SHA1(7103333c7f388545ebba8e8bb9443ec5ea90589b) )
ROM_LOAD32_WORD( "opr-24235a.ic32s", 0x8000002, 0x800000, CRC(a2bb0d26) SHA1(bafd66250f8ad472eaa179bd73edc0dc22b681f5) )
ROM_LOAD( "25lc040.ic13s", 0x9000000, 0x000084, CRC(19d77c96) SHA1(1d82af6b11f7fde93a3c4dd3561f1f2ab74c8d65) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "kick4csh-key.bin", 0, 4, CRC(889d2ea1) SHA1(daf7acf41b6bc607d443a93221a3e4554b99547f) )
ROM_END
ROM_START( wrungp )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x6800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-24059.ic22", 0x0000000, 0x400000, CRC(f82c00b5) SHA1(e885a46b2d3d52d9222d9ce038766858a2046ea1) )
- ROM_LOAD( "mpr-23719.ic1", 0x0800000, 0x1000000, CRC(b9fb79df) SHA1(1568320c25118f4ee5c508dcca4e4496ff23c067) )
- ROM_LOAD( "mpr-23720.ic2", 0x1800000, 0x1000000, CRC(d3f19874) SHA1(cde22c56dac233f5407d2e3ac8e6ea4f8681d0bf) )
- ROM_LOAD( "mpr-23721.ic3", 0x2800000, 0x1000000, CRC(f599a52e) SHA1(ca0edc2e9496f218117cef7d71bf1761bed8d4ac) )
- ROM_LOAD( "mpr-23722.ic4", 0x3800000, 0x1000000, CRC(e08a6a36) SHA1(ef37d8c7bc9d5055008d522825ef3e80e27745c2) )
- ROM_LOAD( "mpr-23723.ic5", 0x4800000, 0x1000000, CRC(651610eb) SHA1(4dfe4f876a5440bd1034f41a4d76e1d6bd3e0e32) )
- ROM_LOAD( "mpr-23724.ic6", 0x5800000, 0x1000000, CRC(c633c45a) SHA1(23b45140f965428d33e2424b0574715c0b952d05) )
+ ROM_REGION( 0x6800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-24059.ic22", 0x0000000, 0x400000, CRC(f82c00b5) SHA1(e885a46b2d3d52d9222d9ce038766858a2046ea1) )
+ ROM_LOAD( "mpr-23719.ic1", 0x0800000, 0x1000000, CRC(b9fb79df) SHA1(1568320c25118f4ee5c508dcca4e4496ff23c067) )
+ ROM_LOAD( "mpr-23720.ic2", 0x1800000, 0x1000000, CRC(d3f19874) SHA1(cde22c56dac233f5407d2e3ac8e6ea4f8681d0bf) )
+ ROM_LOAD( "mpr-23721.ic3", 0x2800000, 0x1000000, CRC(f599a52e) SHA1(ca0edc2e9496f218117cef7d71bf1761bed8d4ac) )
+ ROM_LOAD( "mpr-23722.ic4", 0x3800000, 0x1000000, CRC(e08a6a36) SHA1(ef37d8c7bc9d5055008d522825ef3e80e27745c2) )
+ ROM_LOAD( "mpr-23723.ic5", 0x4800000, 0x1000000, CRC(651610eb) SHA1(4dfe4f876a5440bd1034f41a4d76e1d6bd3e0e32) )
+ ROM_LOAD( "mpr-23724.ic6", 0x5800000, 0x1000000, CRC(c633c45a) SHA1(23b45140f965428d33e2424b0574715c0b952d05) )
ROM_END
ROM_START( gundmct )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xa800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23638.ic22", 0x0000000, 0x0400000, CRC(03e8600d) SHA1(bf9bb6ed03a5744c91c2c4038be764408dd85234) )
+ ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23638.ic22", 0x0000000, 0x0400000, CRC(03e8600d) SHA1(bf9bb6ed03a5744c91c2c4038be764408dd85234) )
ROM_RELOAD( 0x400000, 0x400000)
- ROM_LOAD( "mpr-23628.ic1", 0x0800000, 0x1000000, CRC(8668ba2f) SHA1(cedc67e6ce267a8c99ced4728f891bcae01cce24) )
- ROM_LOAD( "mpr-23629.ic2", 0x1800000, 0x1000000, CRC(b60f3048) SHA1(e575547e00b93129b1da49c61fc2a56706e8f362) )
- ROM_LOAD( "mpr-23630.ic3", 0x2800000, 0x1000000, CRC(0b47643f) SHA1(3cc4e51ca85ecdd04fe7c91e3b877dd5e6c0e67e) )
+ ROM_LOAD( "mpr-23628.ic1", 0x0800000, 0x1000000, CRC(8668ba2f) SHA1(cedc67e6ce267a8c99ced4728f891bcae01cce24) )
+ ROM_LOAD( "mpr-23629.ic2", 0x1800000, 0x1000000, CRC(b60f3048) SHA1(e575547e00b93129b1da49c61fc2a56706e8f362) )
+ ROM_LOAD( "mpr-23630.ic3", 0x2800000, 0x1000000, CRC(0b47643f) SHA1(3cc4e51ca85ecdd04fe7c91e3b877dd5e6c0e67e) )
ROM_LOAD( "mpr-23631.ic4", 0x3800000, 0x1000000, CRC(dbd863c9) SHA1(0c5d3b76a56902861e9a9595c0997f3726583cda) )
- ROM_LOAD( "mpr-23632.ic5", 0x4800000, 0x1000000, CRC(8c008562) SHA1(3fd696fadafd012b312a1407345c1ce1cd41ca45) )
- ROM_LOAD( "mpr-23633.ic6", 0x5800000, 0x1000000, CRC(ca104486) SHA1(05e6d1f9481a13189739671620a96a41af91433e) )
- ROM_LOAD( "mpr-23634.ic7", 0x6800000, 0x1000000, CRC(32bf6938) SHA1(f7bc0bed0a26c6d964c147fa78c666fd830730cf) )
- ROM_LOAD( "mpr-23635.ic8", 0x7800000, 0x1000000, CRC(f9279277) SHA1(823ae02a754ca8a8effdb957ccc6726765fc29b8) )
- ROM_LOAD( "mpr-23636.ic9", 0x8800000, 0x1000000, CRC(57199e9f) SHA1(73a6f20ee7b3133ed4c6286e477e2ff9757106bd) )
- ROM_LOAD( "mpr-23637.ic10", 0x9800000, 0x1000000, CRC(737b5dff) SHA1(0a405b711ffb096a3e6d52ececed73a5f93ebf02) )
+ ROM_LOAD( "mpr-23632.ic5", 0x4800000, 0x1000000, CRC(8c008562) SHA1(3fd696fadafd012b312a1407345c1ce1cd41ca45) )
+ ROM_LOAD( "mpr-23633.ic6", 0x5800000, 0x1000000, CRC(ca104486) SHA1(05e6d1f9481a13189739671620a96a41af91433e) )
+ ROM_LOAD( "mpr-23634.ic7", 0x6800000, 0x1000000, CRC(32bf6938) SHA1(f7bc0bed0a26c6d964c147fa78c666fd830730cf) )
+ ROM_LOAD( "mpr-23635.ic8", 0x7800000, 0x1000000, CRC(f9279277) SHA1(823ae02a754ca8a8effdb957ccc6726765fc29b8) )
+ ROM_LOAD( "mpr-23636.ic9", 0x8800000, 0x1000000, CRC(57199e9f) SHA1(73a6f20ee7b3133ed4c6286e477e2ff9757106bd) )
+ ROM_LOAD( "mpr-23637.ic10", 0x9800000, 0x1000000, CRC(737b5dff) SHA1(0a405b711ffb096a3e6d52ececed73a5f93ebf02) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "gundmct-key.bin", 0, 4, CRC(0dee7a39) SHA1(24eef111ad7d8ad984e38b63101d01463b36542e) )
ROM_END
ROM_START( puyoda )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xa800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-22206.ic22", 0x0000000, 0x400000, CRC(3882dd01) SHA1(9c287b531d0adfd9ecb10d5bf71a7b0f17454c21) )
+ ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-22206.ic22", 0x0000000, 0x400000, CRC(3882dd01) SHA1(9c287b531d0adfd9ecb10d5bf71a7b0f17454c21) )
ROM_RELOAD( 0x400000, 0x400000)
- ROM_LOAD( "mpr-22186.ic1", 0x0800000, 0x800000, CRC(30b1a1d6) SHA1(73914c53a030b496e854b4c1fa454153bb025217) )
- ROM_LOAD( "mpr-22187.ic2", 0x1000000, 0x800000, CRC(0eae60e5) SHA1(c695c07000310089aa79b525fbe36015c5526165) )
- ROM_LOAD( "mpr-22188.ic3", 0x1800000, 0x800000, CRC(2e651f16) SHA1(b4ef7a90ade379cb3f7d4c64faedb25032465c25) )
- ROM_LOAD( "mpr-22189.ic4", 0x2000000, 0x800000, CRC(69ec44fc) SHA1(052e5e14ce433cddfae4a8b9b7c179c6266e9c1c) )
- ROM_LOAD( "mpr-22190.ic5", 0x2800000, 0x800000, CRC(d86bef21) SHA1(8c822438cf81023d83985d6800e7e3884f5c6a55) )
- ROM_LOAD( "mpr-22191.ic6", 0x3000000, 0x800000, CRC(b52364cd) SHA1(cc1ca522e6d0085a9bdf286e88aacb2041669daf) )
- ROM_LOAD( "mpr-22192.ic7", 0x3800000, 0x800000, CRC(08f09148) SHA1(c6a248199823f281cb9a9ac8080ebcae331d7e6f) )
- ROM_LOAD( "mpr-22193.ic8", 0x4000000, 0x800000, CRC(be5f58a8) SHA1(0d9f61182878540596909b2559158e03ffbd75c8) )
- ROM_LOAD( "mpr-22194.ic9", 0x4800000, 0x800000, CRC(2d0370fd) SHA1(f52587d6c2c06e2d872375f4ab0f0a9e11e932c3) )
- ROM_LOAD( "mpr-22195.ic10", 0x5000000, 0x800000, CRC(ccc8bb28) SHA1(d4769c9c8e4c1cdda53f8cb08b57f77c58d27c6f) )
- ROM_LOAD( "mpr-22196.ic11", 0x5800000, 0x800000, CRC(d65aa87b) SHA1(97f519a9c5b6bc6fc08e856d8c09fb69fad2bb04) )
- ROM_LOAD( "mpr-22197.ic12", 0x6000000, 0x800000, CRC(2c79608e) SHA1(01a09398c4f18e9368fddaca6b0ba520b07ca962) )
- ROM_LOAD( "mpr-22198.ic13", 0x6800000, 0x800000, CRC(b5373909) SHA1(6ff02c52a41da3d61e3f45b70fbcfddd4315fdfb) )
- ROM_LOAD( "mpr-22199.ic14", 0x7000000, 0x800000, CRC(4ba34fd9) SHA1(b681efb05df4f38349e96f98f38442db9db1f83a) )
- ROM_LOAD( "mpr-22200.ic15", 0x7800000, 0x800000, CRC(eb3d4a5e) SHA1(747bea94d224d1753e3dea27319d16fbca706459) )
- ROM_LOAD( "mpr-22201.ic16", 0x8000000, 0x800000, CRC(dce19598) SHA1(0081fbb74731f0b639a742fd4e2f5685ffe6887a) )
- ROM_LOAD( "mpr-22202.ic17", 0x8800000, 0x800000, CRC(f3ac92a6) SHA1(6583a3f3d1659d00dcffc98c6d3391f1aac03338) )
- ROM_LOAD( "mpr-22203.ic18", 0x9000000, 0x800000, CRC(881d6316) SHA1(c7a26404759afac346c63e39b35bf408f1a897a6) )
- ROM_LOAD( "mpr-22204.ic19", 0x9800000, 0x800000, CRC(2c5e5140) SHA1(7887fc19459dc85ca78256e0c50c762eea001e51) )
- ROM_LOAD( "mpr-22205.ic20", 0xa000000, 0x800000, CRC(7d523ae5) SHA1(7495082b7e83b6ee8f47660baba4c604d8ba2ff1) )
+ ROM_LOAD( "mpr-22186.ic1", 0x0800000, 0x800000, CRC(30b1a1d6) SHA1(73914c53a030b496e854b4c1fa454153bb025217) )
+ ROM_LOAD( "mpr-22187.ic2", 0x1000000, 0x800000, CRC(0eae60e5) SHA1(c695c07000310089aa79b525fbe36015c5526165) )
+ ROM_LOAD( "mpr-22188.ic3", 0x1800000, 0x800000, CRC(2e651f16) SHA1(b4ef7a90ade379cb3f7d4c64faedb25032465c25) )
+ ROM_LOAD( "mpr-22189.ic4", 0x2000000, 0x800000, CRC(69ec44fc) SHA1(052e5e14ce433cddfae4a8b9b7c179c6266e9c1c) )
+ ROM_LOAD( "mpr-22190.ic5", 0x2800000, 0x800000, CRC(d86bef21) SHA1(8c822438cf81023d83985d6800e7e3884f5c6a55) )
+ ROM_LOAD( "mpr-22191.ic6", 0x3000000, 0x800000, CRC(b52364cd) SHA1(cc1ca522e6d0085a9bdf286e88aacb2041669daf) )
+ ROM_LOAD( "mpr-22192.ic7", 0x3800000, 0x800000, CRC(08f09148) SHA1(c6a248199823f281cb9a9ac8080ebcae331d7e6f) )
+ ROM_LOAD( "mpr-22193.ic8", 0x4000000, 0x800000, CRC(be5f58a8) SHA1(0d9f61182878540596909b2559158e03ffbd75c8) )
+ ROM_LOAD( "mpr-22194.ic9", 0x4800000, 0x800000, CRC(2d0370fd) SHA1(f52587d6c2c06e2d872375f4ab0f0a9e11e932c3) )
+ ROM_LOAD( "mpr-22195.ic10", 0x5000000, 0x800000, CRC(ccc8bb28) SHA1(d4769c9c8e4c1cdda53f8cb08b57f77c58d27c6f) )
+ ROM_LOAD( "mpr-22196.ic11", 0x5800000, 0x800000, CRC(d65aa87b) SHA1(97f519a9c5b6bc6fc08e856d8c09fb69fad2bb04) )
+ ROM_LOAD( "mpr-22197.ic12", 0x6000000, 0x800000, CRC(2c79608e) SHA1(01a09398c4f18e9368fddaca6b0ba520b07ca962) )
+ ROM_LOAD( "mpr-22198.ic13", 0x6800000, 0x800000, CRC(b5373909) SHA1(6ff02c52a41da3d61e3f45b70fbcfddd4315fdfb) )
+ ROM_LOAD( "mpr-22199.ic14", 0x7000000, 0x800000, CRC(4ba34fd9) SHA1(b681efb05df4f38349e96f98f38442db9db1f83a) )
+ ROM_LOAD( "mpr-22200.ic15", 0x7800000, 0x800000, CRC(eb3d4a5e) SHA1(747bea94d224d1753e3dea27319d16fbca706459) )
+ ROM_LOAD( "mpr-22201.ic16", 0x8000000, 0x800000, CRC(dce19598) SHA1(0081fbb74731f0b639a742fd4e2f5685ffe6887a) )
+ ROM_LOAD( "mpr-22202.ic17", 0x8800000, 0x800000, CRC(f3ac92a6) SHA1(6583a3f3d1659d00dcffc98c6d3391f1aac03338) )
+ ROM_LOAD( "mpr-22203.ic18", 0x9000000, 0x800000, CRC(881d6316) SHA1(c7a26404759afac346c63e39b35bf408f1a897a6) )
+ ROM_LOAD( "mpr-22204.ic19", 0x9800000, 0x800000, CRC(2c5e5140) SHA1(7887fc19459dc85ca78256e0c50c762eea001e51) )
+ ROM_LOAD( "mpr-22205.ic20", 0xa000000, 0x800000, CRC(7d523ae5) SHA1(7495082b7e83b6ee8f47660baba4c604d8ba2ff1) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "puyoda-key.bin", 0, 4, CRC(245bb259) SHA1(7ab675779ebf01ad3a78edd39cb287b71acd8bb5) )
ROM_END
ROM_START( zerogu2 )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x5800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr23689.bin", 0x0000000, 0x0400000, CRC(ba42267c) SHA1(e8166e33cc2a4d9b2c57410235f531651b2e7f8a) )
- ROM_LOAD( "mpr23684.ic1", 0x0800000, 0x1000000, CRC(035aec98) SHA1(47ea834ca88aca3a72d2e7ef715a64603c40eacd) )
- ROM_LOAD( "mpr23685.ic2", 0x1800000, 0x1000000, CRC(d878ff99) SHA1(577be93d43f6113b91cf0967b710c6cf45131713) )
- ROM_LOAD( "mpr23686.ic3", 0x2800000, 0x1000000, CRC(a61b4d49) SHA1(842c54ad4e8192e491152ae5bb08daf5dd6b8c6c) )
- ROM_LOAD( "mpr23687.ic4", 0x3800000, 0x1000000, CRC(e125439a) SHA1(07e7339f3f53aeb0ebddf7a8ac3eb6d8f3fe9de6) )
- ROM_LOAD( "mpr23688.ic5", 0x4800000, 0x1000000, CRC(38412edf) SHA1(9cae06cf46e134531f47e64deedace449664f69a) )
+ ROM_REGION( 0x5800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr23689.bin", 0x0000000, 0x0400000, CRC(ba42267c) SHA1(e8166e33cc2a4d9b2c57410235f531651b2e7f8a) )
+ ROM_LOAD( "mpr23684.ic1", 0x0800000, 0x1000000, CRC(035aec98) SHA1(47ea834ca88aca3a72d2e7ef715a64603c40eacd) )
+ ROM_LOAD( "mpr23685.ic2", 0x1800000, 0x1000000, CRC(d878ff99) SHA1(577be93d43f6113b91cf0967b710c6cf45131713) )
+ ROM_LOAD( "mpr23686.ic3", 0x2800000, 0x1000000, CRC(a61b4d49) SHA1(842c54ad4e8192e491152ae5bb08daf5dd6b8c6c) )
+ ROM_LOAD( "mpr23687.ic4", 0x3800000, 0x1000000, CRC(e125439a) SHA1(07e7339f3f53aeb0ebddf7a8ac3eb6d8f3fe9de6) )
+ ROM_LOAD( "mpr23688.ic5", 0x4800000, 0x1000000, CRC(38412edf) SHA1(9cae06cf46e134531f47e64deedace449664f69a) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "zerogu2-key.bin", 0, 4, CRC(f2460eb3) SHA1(69ec4e3933e60caa6a0ac44a855a40deed337d92) )
ROM_END
ROM_START( inunoos )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-22294a.ic22", 0x000000, 0x400000, CRC(bc3a1397) SHA1(73747f10ea034bd0fc952939c6c7576dab9640a6) )
+ ROM_REGION( 0x8800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-22294a.ic22", 0x000000, 0x400000, CRC(bc3a1397) SHA1(73747f10ea034bd0fc952939c6c7576dab9640a6) )
- ROM_LOAD( "mpr-22278.ic1", 0x0800000, 0x800000, CRC(0afec6d7) SHA1(fad13f7c205d048006b48c1f262f272a9d653630) )
- ROM_LOAD( "mpr-22279.ic2", 0x1000000, 0x800000, CRC(80b4a397) SHA1(c7d41a48c327b8ae9fefb15149ad5341b86ff933) )
- ROM_LOAD( "mpr-22280.ic3", 0x1800000, 0x800000, CRC(a58fde28) SHA1(db271690131f093a329a457aa234659cbdba4ad1) )
- ROM_LOAD( "mpr-22281.ic4", 0x2000000, 0x800000, CRC(6fcc34f6) SHA1(28f4d69fdd4e151cf1d98303d5f7ac8ff6d4c141) )
- ROM_LOAD( "mpr-22282.ic5", 0x2800000, 0x800000, CRC(d5582d3e) SHA1(b21eda63314983fff7b88d2ad6ddcd8a2ef20e32) )
- ROM_LOAD( "mpr-22283.ic6", 0x3000000, 0x800000, CRC(24b9fa3b) SHA1(b85be6085c476c8683c6d9e9b72e6021385a376a) )
- ROM_LOAD( "mpr-22284.ic7", 0x3800000, 0x800000, CRC(bb80e02a) SHA1(73e7fda34295eb3b67ac04e46206a3a399b7b88a) )
- ROM_LOAD( "mpr-22285.ic8", 0x4000000, 0x800000, CRC(59e2e25b) SHA1(e32d59dca85f246781a411bd8d0bec8fabc3b26d) )
- ROM_LOAD( "mpr-22286.ic9", 0x4800000, 0x800000, CRC(41eac8af) SHA1(594efd94ea053229f0c807591b4f38643f0995c2) )
- ROM_LOAD( "mpr-22287.ic10", 0x5000000, 0x800000, CRC(811f6e65) SHA1(71448b91d2c68df119a767fc29692bbf115edb37) )
- ROM_LOAD( "mpr-22288.ic11", 0x5800000, 0x800000, CRC(ad1375e8) SHA1(17eeaad1becbf0ad0d68e10457c0d3dac9f168da) )
- ROM_LOAD( "mpr-22289.ic12", 0x6000000, 0x800000, CRC(7e7826c0) SHA1(6a13fb7471555732292ee8e4709ee191aee2528c) )
- ROM_LOAD( "mpr-22290.ic13", 0x6800000, 0x800000, CRC(38a192da) SHA1(501c25190af153d1364a90762c7994ac797a498d) )
- ROM_LOAD( "mpr-22291.ic14", 0x7000000, 0x800000, CRC(79ca1d44) SHA1(449509110a7e181e0e495fe3e1d21762b6e4ce08) )
- ROM_LOAD( "mpr-22292.ic15", 0x7800000, 0x800000, CRC(b85e13ef) SHA1(974f6b8f24efe79d72ea9d7a2cfccf479704243d) )
- ROM_LOAD( "mpr-22293.ic16", 0x8000000, 0x800000, CRC(b8493dbe) SHA1(b641417e1bda49341e7ff86340072d74e3330665) )
+ ROM_LOAD( "mpr-22278.ic1", 0x0800000, 0x800000, CRC(0afec6d7) SHA1(fad13f7c205d048006b48c1f262f272a9d653630) )
+ ROM_LOAD( "mpr-22279.ic2", 0x1000000, 0x800000, CRC(80b4a397) SHA1(c7d41a48c327b8ae9fefb15149ad5341b86ff933) )
+ ROM_LOAD( "mpr-22280.ic3", 0x1800000, 0x800000, CRC(a58fde28) SHA1(db271690131f093a329a457aa234659cbdba4ad1) )
+ ROM_LOAD( "mpr-22281.ic4", 0x2000000, 0x800000, CRC(6fcc34f6) SHA1(28f4d69fdd4e151cf1d98303d5f7ac8ff6d4c141) )
+ ROM_LOAD( "mpr-22282.ic5", 0x2800000, 0x800000, CRC(d5582d3e) SHA1(b21eda63314983fff7b88d2ad6ddcd8a2ef20e32) )
+ ROM_LOAD( "mpr-22283.ic6", 0x3000000, 0x800000, CRC(24b9fa3b) SHA1(b85be6085c476c8683c6d9e9b72e6021385a376a) )
+ ROM_LOAD( "mpr-22284.ic7", 0x3800000, 0x800000, CRC(bb80e02a) SHA1(73e7fda34295eb3b67ac04e46206a3a399b7b88a) )
+ ROM_LOAD( "mpr-22285.ic8", 0x4000000, 0x800000, CRC(59e2e25b) SHA1(e32d59dca85f246781a411bd8d0bec8fabc3b26d) )
+ ROM_LOAD( "mpr-22286.ic9", 0x4800000, 0x800000, CRC(41eac8af) SHA1(594efd94ea053229f0c807591b4f38643f0995c2) )
+ ROM_LOAD( "mpr-22287.ic10", 0x5000000, 0x800000, CRC(811f6e65) SHA1(71448b91d2c68df119a767fc29692bbf115edb37) )
+ ROM_LOAD( "mpr-22288.ic11", 0x5800000, 0x800000, CRC(ad1375e8) SHA1(17eeaad1becbf0ad0d68e10457c0d3dac9f168da) )
+ ROM_LOAD( "mpr-22289.ic12", 0x6000000, 0x800000, CRC(7e7826c0) SHA1(6a13fb7471555732292ee8e4709ee191aee2528c) )
+ ROM_LOAD( "mpr-22290.ic13", 0x6800000, 0x800000, CRC(38a192da) SHA1(501c25190af153d1364a90762c7994ac797a498d) )
+ ROM_LOAD( "mpr-22291.ic14", 0x7000000, 0x800000, CRC(79ca1d44) SHA1(449509110a7e181e0e495fe3e1d21762b6e4ce08) )
+ ROM_LOAD( "mpr-22292.ic15", 0x7800000, 0x800000, CRC(b85e13ef) SHA1(974f6b8f24efe79d72ea9d7a2cfccf479704243d) )
+ ROM_LOAD( "mpr-22293.ic16", 0x8000000, 0x800000, CRC(b8493dbe) SHA1(b641417e1bda49341e7ff86340072d74e3330665) )
ROM_END
ROM_START( ringout )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x5800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-21779.ic22", 0x0000000, 0x400000, CRC(1d419767) SHA1(33065006ef437845abcf32a59e78f4bc202c4460) )
- ROM_LOAD( "mpr-21769.ic1", 0x0800000, 0x800000, CRC(493199fc) SHA1(189cd9a20c9207f0238e6d2e867f1479a476dfaa) )
- ROM_LOAD( "mpr-21770.ic2", 0x1000000, 0x800000, CRC(68173ace) SHA1(0869072915543dd5dfa6d3cdb95205521b4a3bf4) )
- ROM_LOAD( "mpr-21771.ic3", 0x1800000, 0x800000, CRC(41badfc3) SHA1(d4062bdbb994b8c18dac20948db9a9550f030865) )
- ROM_LOAD( "mpr-21772.ic4", 0x2000000, 0x800000, CRC(a8dfb537) SHA1(9f6c98ee23842b22fa3b701dad0a384a24a9bc6a) )
- ROM_LOAD( "mpr-21773.ic5", 0x2800000, 0x800000, CRC(3f1f5ed4) SHA1(a7d6e65fba9732efbd99e10a609f41dd03fd3bb8) )
- ROM_LOAD( "mpr-21774.ic6", 0x3000000, 0x800000, CRC(5a1114f0) SHA1(a45fc82bccb40e582f107b86403409651476180e) )
- ROM_LOAD( "mpr-21775.ic7", 0x3800000, 0x800000, CRC(5645a95c) SHA1(f0e97ff5b744972a1fa4e03e6d16a19ba20fb930) )
- ROM_LOAD( "mpr-21776.ic8", 0x4000000, 0x800000, CRC(22fc33dc) SHA1(922c41f7fb22b26037446bdfb4f9788a8e0c3e46) )
- ROM_LOAD( "mpr-21777.ic9", 0x4800000, 0x800000, CRC(6d22d29d) SHA1(382dcd62065437b34fe101144b1c047eb261f047) )
- ROM_LOAD( "mpr-21778.ic10", 0x5000000, 0x800000, CRC(c5308e61) SHA1(e51f8026351d5ffbda2a5bed39aeef543366febf) )
+ ROM_REGION( 0x5800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-21779.ic22", 0x0000000, 0x400000, CRC(1d419767) SHA1(33065006ef437845abcf32a59e78f4bc202c4460) )
+ ROM_LOAD( "mpr-21769.ic1", 0x0800000, 0x800000, CRC(493199fc) SHA1(189cd9a20c9207f0238e6d2e867f1479a476dfaa) )
+ ROM_LOAD( "mpr-21770.ic2", 0x1000000, 0x800000, CRC(68173ace) SHA1(0869072915543dd5dfa6d3cdb95205521b4a3bf4) )
+ ROM_LOAD( "mpr-21771.ic3", 0x1800000, 0x800000, CRC(41badfc3) SHA1(d4062bdbb994b8c18dac20948db9a9550f030865) )
+ ROM_LOAD( "mpr-21772.ic4", 0x2000000, 0x800000, CRC(a8dfb537) SHA1(9f6c98ee23842b22fa3b701dad0a384a24a9bc6a) )
+ ROM_LOAD( "mpr-21773.ic5", 0x2800000, 0x800000, CRC(3f1f5ed4) SHA1(a7d6e65fba9732efbd99e10a609f41dd03fd3bb8) )
+ ROM_LOAD( "mpr-21774.ic6", 0x3000000, 0x800000, CRC(5a1114f0) SHA1(a45fc82bccb40e582f107b86403409651476180e) )
+ ROM_LOAD( "mpr-21775.ic7", 0x3800000, 0x800000, CRC(5645a95c) SHA1(f0e97ff5b744972a1fa4e03e6d16a19ba20fb930) )
+ ROM_LOAD( "mpr-21776.ic8", 0x4000000, 0x800000, CRC(22fc33dc) SHA1(922c41f7fb22b26037446bdfb4f9788a8e0c3e46) )
+ ROM_LOAD( "mpr-21777.ic9", 0x4800000, 0x800000, CRC(6d22d29d) SHA1(382dcd62065437b34fe101144b1c047eb261f047) )
+ ROM_LOAD( "mpr-21778.ic10", 0x5000000, 0x800000, CRC(c5308e61) SHA1(e51f8026351d5ffbda2a5bed39aeef543366febf) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ringout-key.bin", 0, 4, CRC(8f8c4eb2) SHA1(9bc59c69d04d9ce876415af048f39095ed680a5e) )
ROM_END
ROM_START( vonot )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x7000000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23198.ic22", 0x0000000, 0x400000, CRC(9852eda2) SHA1(71ded8cbdf567afeff30bd593071ce3b7d84a260) )
- ROM_LOAD( "mpr-23185.ic1", 0x0800000, 0x800000, CRC(c4fc1d45) SHA1(cfeff71ac1cccf274f00731fe1ffc182fb85f7a6) )
- ROM_LOAD( "mpr-23186.ic2", 0x1000000, 0x800000, CRC(b17f9924) SHA1(a9aa9f10b76964042b337b25430acff072aaa7c7) )
- ROM_LOAD( "mpr-23187.ic3", 0x1800000, 0x800000, CRC(575f73e8) SHA1(fe6ffeab120ad788bd692b33eca1cf22db881ac3) )
- ROM_LOAD( "mpr-23188.ic4", 0x2000000, 0x800000, CRC(0004ef34) SHA1(926de996549421a5835f3c8c0895a07978519215) )
- ROM_LOAD( "mpr-23189.ic5", 0x2800000, 0x800000, CRC(554eea29) SHA1(c82c24270dee0dd7309b117e1632827ca314615d) )
- ROM_LOAD( "mpr-23190.ic6", 0x3000000, 0x800000, CRC(b74ae1c5) SHA1(003fadbaa03cf43757b686f316d1104d26ae9ce8) )
- ROM_LOAD( "mpr-23191.ic7", 0x3800000, 0x800000, CRC(9f2a88af) SHA1(b1caf9cbf026ee6d0f12ab66cddf120e7ba9884c) )
- ROM_LOAD( "mpr-23192.ic8", 0x4000000, 0x800000, CRC(83014196) SHA1(cc4801534e0f0e649fc3f368af4bd3ac01288732) )
- ROM_LOAD( "mpr-23193.ic9", 0x4800000, 0x800000, CRC(2fde8ecf) SHA1(6da95fb04f141f2c45564460c49834bb945fb1af) )
- ROM_LOAD( "mpr-23194.ic10", 0x5000000, 0x800000, CRC(92f045e5) SHA1(70f741e55a47682725c7d6dcdd0e60982187fc87) )
- ROM_LOAD( "mpr-23195.ic11", 0x5800000, 0x800000, CRC(9e708834) SHA1(2f454688ea5b8b041bbfffaa12047afad01d020f) )
- ROM_LOAD( "mpr-23196.ic12", 0x6000000, 0x800000, CRC(c86a5b9b) SHA1(4b8dda85003289e1464e12c3abf449bb8df20e3a) )
- ROM_LOAD( "mpr-23197.ic13", 0x6800000, 0x800000, CRC(5adea0bd) SHA1(f8614ba83d5f61556c3db1a1796a02ed2c51ce2a) )
+ ROM_REGION( 0x7000000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23198.ic22", 0x0000000, 0x400000, CRC(9852eda2) SHA1(71ded8cbdf567afeff30bd593071ce3b7d84a260) )
+ ROM_LOAD( "mpr-23185.ic1", 0x0800000, 0x800000, CRC(c4fc1d45) SHA1(cfeff71ac1cccf274f00731fe1ffc182fb85f7a6) )
+ ROM_LOAD( "mpr-23186.ic2", 0x1000000, 0x800000, CRC(b17f9924) SHA1(a9aa9f10b76964042b337b25430acff072aaa7c7) )
+ ROM_LOAD( "mpr-23187.ic3", 0x1800000, 0x800000, CRC(575f73e8) SHA1(fe6ffeab120ad788bd692b33eca1cf22db881ac3) )
+ ROM_LOAD( "mpr-23188.ic4", 0x2000000, 0x800000, CRC(0004ef34) SHA1(926de996549421a5835f3c8c0895a07978519215) )
+ ROM_LOAD( "mpr-23189.ic5", 0x2800000, 0x800000, CRC(554eea29) SHA1(c82c24270dee0dd7309b117e1632827ca314615d) )
+ ROM_LOAD( "mpr-23190.ic6", 0x3000000, 0x800000, CRC(b74ae1c5) SHA1(003fadbaa03cf43757b686f316d1104d26ae9ce8) )
+ ROM_LOAD( "mpr-23191.ic7", 0x3800000, 0x800000, CRC(9f2a88af) SHA1(b1caf9cbf026ee6d0f12ab66cddf120e7ba9884c) )
+ ROM_LOAD( "mpr-23192.ic8", 0x4000000, 0x800000, CRC(83014196) SHA1(cc4801534e0f0e649fc3f368af4bd3ac01288732) )
+ ROM_LOAD( "mpr-23193.ic9", 0x4800000, 0x800000, CRC(2fde8ecf) SHA1(6da95fb04f141f2c45564460c49834bb945fb1af) )
+ ROM_LOAD( "mpr-23194.ic10", 0x5000000, 0x800000, CRC(92f045e5) SHA1(70f741e55a47682725c7d6dcdd0e60982187fc87) )
+ ROM_LOAD( "mpr-23195.ic11", 0x5800000, 0x800000, CRC(9e708834) SHA1(2f454688ea5b8b041bbfffaa12047afad01d020f) )
+ ROM_LOAD( "mpr-23196.ic12", 0x6000000, 0x800000, CRC(c86a5b9b) SHA1(4b8dda85003289e1464e12c3abf449bb8df20e3a) )
+ ROM_LOAD( "mpr-23197.ic13", 0x6800000, 0x800000, CRC(5adea0bd) SHA1(f8614ba83d5f61556c3db1a1796a02ed2c51ce2a) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "vonot-key.bin", 0, 4, CRC(021ac707) SHA1(af57844331226d3b1722aedca1a7aef024468b39) )
ROM_END
ROM_START( derbyo2k )
- ROM_REGION( 0x200000, "maincpu", 0)
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0x8800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-22284a.ic22", 0x0000000, 0x400000, CRC(1e8e067c) SHA1(c33d5f7b175828511f69a6489b4558aef1ac2517) )
- ROM_LOAD( "mpr-22223.ic1", 0x0800000, 0x800000, CRC(5159df22) SHA1(612c2d43f02952c7987cb08051933e406e601474) )
- ROM_LOAD( "mpr-22224.ic2", 0x1000000, 0x800000, CRC(ef8bc5a0) SHA1(ecb858788d9bb84cf25aaeef8d0bee3b7ae0233e) )
- ROM_LOAD( "mpr-22225.ic3", 0x1800000, 0x800000, CRC(80e0fdbd) SHA1(b111d469b8f3a7e68960cc7731ecfca4d24f4f32) )
- ROM_LOAD( "mpr-22226.ic4", 0x2000000, 0x800000, CRC(ea940bcf) SHA1(7dfa7f9101b8cd836920c7ebef095d1ec40c0bd3) )
- ROM_LOAD( "mpr-22227.ic5", 0x2800000, 0x800000, CRC(300ed93b) SHA1(a81e0ccef6d32a959beacf66f60a9cbda128c493) )
- ROM_LOAD( "mpr-22228.ic6", 0x3000000, 0x800000, CRC(3dd062c7) SHA1(5515c636d47b128479d7de7659fe2a2adae51fe4) )
- ROM_LOAD( "mpr-22229.ic7", 0x3800000, 0x800000, CRC(da624f37) SHA1(8b9bb8e572f969019aaa8100fd3549fb7f902f42) )
- ROM_LOAD( "mpr-22230.ic8", 0x4000000, 0x800000, CRC(5a806bb6) SHA1(0d9366d215f23e3f54b26eda960a7033f3ac033c) )
- ROM_LOAD( "mpr-22231.ic9", 0x4800000, 0x800000, CRC(c633d57d) SHA1(737b55f5a9d0b34dec1e4b2bef7bd14e9a9e1bed) )
- ROM_LOAD( "mpr-22232.ic10", 0x5000000, 0x800000, CRC(6f25a6dd) SHA1(d4f354f3143b9484b493cdd87c25b94bd6e7c09a) )
- ROM_LOAD( "mpr-22233.ic11", 0x5800000, 0x800000, CRC(cf3ac2df) SHA1(4d6dfa030ef8ec6343153afd4bdca51a51065bb4) )
- ROM_LOAD( "mpr-22234.ic12s", 0x6000000, 0x800000, CRC(d8c41648) SHA1(d465f4b841164da0738336e203c5bc6e1e799a76) )
- ROM_LOAD( "mpr-22235.ic13s", 0x6800000, 0x800000, CRC(f1dedac5) SHA1(9d4499cbafe80dd0b36be617de7994a96e1e9a01) )
- ROM_LOAD( "mpr-22236.ic14s", 0x7000000, 0x800000, CRC(85f54964) SHA1(4592232694de75e245d1c67f506c9b9d7b0af53a) )
- ROM_LOAD( "mpr-22237.ic15s", 0x7800000, 0x800000, CRC(718dd6bf) SHA1(6b71bb6970b582865f53d26e9579587fce86439e) )
- ROM_LOAD( "mpr-22238.ic16s", 0x8000000, 0x800000, CRC(fb3e55da) SHA1(d547ee5b47e6e6fec9e447460300c828fbff8f2e) )
+ ROM_REGION( 0x8800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-22284a.ic22", 0x0000000, 0x400000, CRC(1e8e067c) SHA1(c33d5f7b175828511f69a6489b4558aef1ac2517) )
+ ROM_LOAD( "mpr-22223.ic1", 0x0800000, 0x800000, CRC(5159df22) SHA1(612c2d43f02952c7987cb08051933e406e601474) )
+ ROM_LOAD( "mpr-22224.ic2", 0x1000000, 0x800000, CRC(ef8bc5a0) SHA1(ecb858788d9bb84cf25aaeef8d0bee3b7ae0233e) )
+ ROM_LOAD( "mpr-22225.ic3", 0x1800000, 0x800000, CRC(80e0fdbd) SHA1(b111d469b8f3a7e68960cc7731ecfca4d24f4f32) )
+ ROM_LOAD( "mpr-22226.ic4", 0x2000000, 0x800000, CRC(ea940bcf) SHA1(7dfa7f9101b8cd836920c7ebef095d1ec40c0bd3) )
+ ROM_LOAD( "mpr-22227.ic5", 0x2800000, 0x800000, CRC(300ed93b) SHA1(a81e0ccef6d32a959beacf66f60a9cbda128c493) )
+ ROM_LOAD( "mpr-22228.ic6", 0x3000000, 0x800000, CRC(3dd062c7) SHA1(5515c636d47b128479d7de7659fe2a2adae51fe4) )
+ ROM_LOAD( "mpr-22229.ic7", 0x3800000, 0x800000, CRC(da624f37) SHA1(8b9bb8e572f969019aaa8100fd3549fb7f902f42) )
+ ROM_LOAD( "mpr-22230.ic8", 0x4000000, 0x800000, CRC(5a806bb6) SHA1(0d9366d215f23e3f54b26eda960a7033f3ac033c) )
+ ROM_LOAD( "mpr-22231.ic9", 0x4800000, 0x800000, CRC(c633d57d) SHA1(737b55f5a9d0b34dec1e4b2bef7bd14e9a9e1bed) )
+ ROM_LOAD( "mpr-22232.ic10", 0x5000000, 0x800000, CRC(6f25a6dd) SHA1(d4f354f3143b9484b493cdd87c25b94bd6e7c09a) )
+ ROM_LOAD( "mpr-22233.ic11", 0x5800000, 0x800000, CRC(cf3ac2df) SHA1(4d6dfa030ef8ec6343153afd4bdca51a51065bb4) )
+ ROM_LOAD( "mpr-22234.ic12s", 0x6000000, 0x800000, CRC(d8c41648) SHA1(d465f4b841164da0738336e203c5bc6e1e799a76) )
+ ROM_LOAD( "mpr-22235.ic13s", 0x6800000, 0x800000, CRC(f1dedac5) SHA1(9d4499cbafe80dd0b36be617de7994a96e1e9a01) )
+ ROM_LOAD( "mpr-22236.ic14s", 0x7000000, 0x800000, CRC(85f54964) SHA1(4592232694de75e245d1c67f506c9b9d7b0af53a) )
+ ROM_LOAD( "mpr-22237.ic15s", 0x7800000, 0x800000, CRC(718dd6bf) SHA1(6b71bb6970b582865f53d26e9579587fce86439e) )
+ ROM_LOAD( "mpr-22238.ic16s", 0x8000000, 0x800000, CRC(fb3e55da) SHA1(d547ee5b47e6e6fec9e447460300c828fbff8f2e) )
ROM_END
@@ -5502,9 +5644,6 @@ ROM_START( gundmgd )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0001", 0, SHA1(615e19c22f32096f3aad557019a14313b60a4070) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5069-com.data", 0x00, 0x50, CRC(8e2f0cbd) SHA1(a5f3a990a03bfa50a1a742593c5ec07645c8718d) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5069-COM)
//(sticker 253-5509-5069)
@@ -5523,9 +5662,6 @@ ROM_START( sfz3ugd )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0002", 0, SHA1(af4669fdd7ce8e6ec4a170748d401e322a3d7ae8) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5072-com.data", 0x00, 0x50, CRC(6d2992b9) SHA1(88e6dc6711f9f883362ba1217a3350d452a70896) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5072-COM)
//(sticker 253-5509-5072)
@@ -5540,9 +5676,6 @@ ROM_START( cvsgd )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0004", 0, SHA1(7a7fba0fbbc769c5120b08e6d692f1ac63a42225) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5076-jpn.data", 0x00, 0x50, CRC(5004161b) SHA1(8b2cdfec12ffd9160bc74659e08d07cbc46a4011) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5076-JPN)
//(sticker 253-5509-5076J)
@@ -5557,8 +5690,6 @@ ROM_START( starseek )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0005", 0, SHA1(f5513c88528741798ee49f936b9b69480360f103) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
-
/*
Note:
There was no sticker or silk screen markings on this PIC.
@@ -5582,9 +5713,6 @@ ROM_START( gundmxgd )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0006", 0, SHA1(b28d6598711b5a9c744bbf07ad03fc60962d2e28) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5079-com.data", 0x00, 0x50, CRC(e6abe978) SHA1(700e610d84e517793a22d6cabd1aef9c3b8bc092) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5079-COM)
//(sticker 253-5509-5079)
@@ -5599,9 +5727,6 @@ ROM_START( cvs2gd )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0007a", 0, SHA1(56510390667b39b3915d8bc078660cbe093cf566) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5078-com.data", 0x00, 0x50, CRC(1c8d94ee) SHA1(bec4a6901f62dc8f76f7b9d72284b3eaac340bf3) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5078-COM)
//(sticker 253-5509-5078)
@@ -5616,9 +5741,6 @@ ROM_START( ikaruga )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0010", 0, SHA1(65dcc22dd9e9b70975096464ad8e31a4a73dc5fd) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5081-jpn.data", 0x00, 0x50, CRC(d4cc5c8c) SHA1(44c0c5c2744fbd419b684cbc36f01973487bafbc) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5081-JPN)
//(sticker 253-5509-5081J)
@@ -5633,11 +5755,6 @@ ROM_START( ggxx )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0011", 0, SHA1(b7328eb2c588d55284bdcea0fe89bb8e629a8669) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
-// ROM_LOAD("317-5082-com.data", 0x00, 0x50, CRC(fa31209d) SHA1(bb18e6412a02510832f7200a06a3179ef1695ef2) )
-// ROM_REGION( 0x9a49, "pichex", ROMREGION_ERASE)
-// ROM_LOAD("gdl-0011.hex", 0x00, 0x0009a49, CRC(36361df8) SHA1(86aa50c9b3debd49c7b67f1c9bfd052c0fefc593) ) // actual decap results for ggxx in ascii/hex form
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5082-COM)
//(sticker 253-5509-5082)
@@ -5652,8 +5769,6 @@ ROM_START( cleoftp )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0012", 0, SHA1(aae4c1321fdee37d5405c6cbe648e0596624ed13) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5083-COM)
//(sticker 253-5509-5083)
@@ -5671,9 +5786,6 @@ ROM_START( moeru )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0013", 0, SHA1(c8869069c28bc8eec96d820886bc388d69d46143) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5084-jpn.data", 0x00, 0x50, CRC(56de2066) SHA1(a16a6d9f7272d3f8d322c85222a0487a87811910) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5084-JPN)
//(sticker 253-5509-5084J)
@@ -5688,9 +5800,6 @@ ROM_START( chocomk )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0014a", 0, SHA1(f88d8203c8692f51c9492d5549a3ad7d9583dc6f) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5085-jpn.data", 0x00, 0x50, CRC(eecd8140) SHA1(471fb6b242eff646173265df891109e3e0a37a7d) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5085-JPN)
//(sticker 253-5509-5085J)
@@ -5708,9 +5817,6 @@ ROM_START( quizqgd )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0017", 0, SHA1(94a9319633388968611892e36691b45c94b4f83f) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5090-jpn.data", 0x00, 0x50, CRC(b4dd88f6) SHA1(c9aacd79c1088225fa5a69b7bd31a7c1286160e1) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5090-JPN)
//(sticker 253-5509-5090J)
@@ -5737,9 +5843,6 @@ ROM_START( ggxxrl )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0019a", 0, SHA1(d44906505ff698eda6feee6c2b9402e19f64e5d3) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5092-jpn.data", 0x00, 0x50, CRC(7c8cca4b) SHA1(92c5a0fd8916744eefc023e64daea69803573928) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5092-JPN)
//(sticker 253-5509-5092J)
@@ -5757,9 +5860,6 @@ ROM_START( tetkiwam )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0020", 0, SHA1(7b2ef47ca2038d6a93615b760b03e8f7cb1b83c2) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5093-jpn.data", 0x00, 0x50, CRC(06bc5013) SHA1(f7a46b7e34b20409ce2fdae80e5cdfff7adb9c64) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5093-JPN)
//(sticker 253-5509-5093J)
@@ -5777,9 +5877,6 @@ ROM_START( shikgam2 )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0021", 0, SHA1(f5036711a28a211e8d71400a8322db3172c5733f) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5095-jpn.data", 0x00, 0x50, CRC(6033ec89) SHA1(9e99a8ad43fa29296dbf2e13b3a3d4552130b4e8) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5095-JPN)
//(sticker 253-5509-5095J)
@@ -5797,9 +5894,6 @@ ROM_START( usagiym )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0022", 0, SHA1(45deba05a12abbf6390c0fc0e4cdeaedfa7d2ca5) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5096-jpn.data", 0x00, 0x50, CRC(621e827a) SHA1(cdc7580f5d1dfe85d2806233f22bc4f13fd62946) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5096-JPN)
//(sticker 253-5509-5096J)
@@ -5817,9 +5911,6 @@ ROM_START( bdrdown )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0023a", 0, SHA1(caac915104d61f2122f5afe27da1ef5fa9cf9f9a) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5097-jpn.data", 0x00, 0x50, CRC(e689d047) SHA1(7e3e298d9a8076af0254faeb0eb89fbfce94718d) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5097-JPN)
//(sticker 253-5509-5097J)
@@ -5838,9 +5929,6 @@ ROM_START( psyvar2 )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0024", 0, SHA1(d346762036fb1c40a261a434b50e63459f306f14) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5100-jpn.data", 0x00, 0x50, CRC(94316f0f) SHA1(e1ec2b4225105dbaa1e59e8a05027e73f7b725a9) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C621A (317-5100-JPN)
//(sticker 253-5509-5100J)
@@ -5858,9 +5946,6 @@ ROM_START( cfield )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0025", 0, SHA1(be0d88eb4f48403a2ceaa7ef588ed60b96ba93bf) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5102-com.data", 0x00, 0x50, CRC(32adf2eb) SHA1(d86752e6fe9ccac093c512828fca5b7ae62a3ff2) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C621A (317-5102-COM)
//(sticker 253-5509-5102)
@@ -5878,9 +5963,6 @@ ROM_START( trizeal )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0026", 0, SHA1(e4c1e51292a7923b25bfc61d38fe386bf596002a) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5103-jpn.data", 0x00, 0x50, CRC(3affbf82) SHA1(268746e86e7546f4bab54bdd268f7b58f10c1aaf) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C621A (317-5103-JPN)
//(sticker 253-5509-5103J)
@@ -5895,9 +5977,6 @@ ROM_START( meltybld )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0028c", 0, SHA1(66de09738551e351784cc9695a58b35fdf6b6c4b) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5104-jpn.data", 0x00, 0x50, CRC(fedc8305) SHA1(c535545937213f726f25e6aa8eb3746a794e9100) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5104-JPN)
//(sticker 253-5509-5104J)
@@ -5915,9 +5994,6 @@ ROM_START( senko )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0030a", 0, SHA1(1f7ade47e37a0026451b5baf3ba746400de8d156) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5107-jpn.data", 0x00, 0x50, CRC(7b607409) SHA1(a9946a0637453e4813bef18060d4420355cff800) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5107-JPN)
//(sticker 253-5509-5107J)
@@ -5934,9 +6010,6 @@ ROM_START( senkoo )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0030", 0, SHA1(c7f25c05f47a490c5da9369c588b6136e93c280e) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5107-jpn.data", 0x00, 0x50, CRC(7b607409) SHA1(a9946a0637453e4813bef18060d4420355cff800) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5107-JPN)
//(sticker 253-5509-5107J)
@@ -5954,9 +6027,6 @@ ROM_START( ss2005 )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0031", 0, SHA1(83697f45f0ffbb964f0504b19171c554499cd709) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5108-jpn.data", 0x00, 0x50, CRC(6a2eb334) SHA1(cab407d2e994f33aa921d50f399b17e6fbf98eb0) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5108-JPN)
//(sticker 253-5509-5108J)
@@ -5971,9 +6041,6 @@ ROM_START( ss2005a )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0031a", 0, SHA1(6091525845fc2042ed43cae5a1b60c603e16cf97) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5108-jpn.data", 0x00, 0x50, CRC(6a2eb334) SHA1(cab407d2e994f33aa921d50f399b17e6fbf98eb0) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5108-JPN)
//(sticker 253-5509-5108J)
@@ -5991,9 +6058,6 @@ ROM_START( radirgy )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0032", 0, SHA1(ebd7a40e59082e660ebf9a2d4ae7cb64371dae8d) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5110-jpn.data", 0x00, 0x50, CRC(04e4ac45) SHA1(4102a4d68f20a7e78f6c7e3494e7229018e30e39) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C621A (317-5110-JPN)
//(sticker 253-5509-5110J)
@@ -6008,10 +6072,6 @@ ROM_START( ggxxsla )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0033a", 0, SHA1(29de69ae97a9099b1bbe936dfa965bb4a3195f68) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5111-jpn.data", 0x00, 0x50, CRC(a517c70d) SHA1(5f9798941355fb9abce511508c860653d6369e72) )
-
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C621A (317-5111-JPN)
//(sticker 253-5509-5111J)
@@ -6026,9 +6086,6 @@ ROM_START( kurucham )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0034", 0, SHA1(10fd7edb0b620133c003d686e5af2ed27004fa09) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5115-jpn.data", 0x00, 0x50, CRC(f40072a8) SHA1(366df2079a4d2ff7a93082c9bf849aad40ab079d) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C621A (317-5115-JPN)
//(sticker 253-5509-5115J)
@@ -6046,9 +6103,6 @@ ROM_START( undefeat )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0035", 0, SHA1(91da482a6a082e48bee5b3bd20d9c92d23936965) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5117-jpn.data", 0x00, 0x50, CRC(f90f6d3b) SHA1(a18f803a8e951c375a3a55e4b0e74b698ae93f92) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5117-JPN)
//(sticker 253-5509-5117J)
@@ -6066,9 +6120,6 @@ ROM_START( trgheart )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0036a", 0, SHA1(91f1e19136997cb1e2edfb1ad342b9427d1d3bfb) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5121-jpn.data", 0x00, 0x50, CRC(a417b20f) SHA1(af6ed7ebf95948bff3e8df915b229189b8de1e46) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5121-JPN)
//(sticker 253-5509-5121J)
@@ -6083,9 +6134,6 @@ ROM_START( jingystm )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0037", 0, SHA1(99ffe2987e3002b3871daf276d2be45f2e9c6e74) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5122-jpn.data", 0x00, 0x50, CRC(0b85b7e4) SHA1(f4e419682ddc4b98a330e5ae543f9276c9bde030) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5122-JPN)
//(sticker 253-5509-5122J)
@@ -6100,8 +6148,6 @@ ROM_START( senkosp )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0038", 0, SHA1(430572f7e76c4fe009e2de91bf891d85613366b7) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5123-COM)
//(sticker 253-5509-5123)
@@ -6116,9 +6162,6 @@ ROM_START( meltyb )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0039", 0, SHA1(ffc7f6e113ad69422a4f22f318bdf9b1dc5c25db) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5124-jpn.data", 0x00, 0x50, CRC(4d6e2c77) SHA1(3bed734c291140d0a61afa40f221395369a251a9) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5124-JPN)
//(sticker 253-5509-5124J)
@@ -6132,9 +6175,6 @@ ROM_START( meltyba )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0039a", 0, SHA1(e6aa3d65b43a20606e6754bcb8665438770a1f8c) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5124-jpn.data", 0x00, 0x50, CRC(4d6e2c77) SHA1(3bed734c291140d0a61afa40f221395369a251a9) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-5124-JPN)
//(sticker 253-5509-5124J)
@@ -6152,9 +6192,6 @@ ROM_START( karous )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0040", 0, SHA1(a62c8d4b6c5be44a4aeeea1a1a94f3d0fe542593) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5125-com.data", 0x00, 0x50, CRC(9d37b5e3) SHA1(e1d3cdc2ed82c864c9ff54d9399a80b70ba150c5) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C621A (317-5125-COM)
//(sticker 253-5509-5125)
@@ -6190,8 +6227,6 @@ ROM_START( ggxxac )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0041", 0, SHA1(3a589e1c79ead971c821a7566032b0187e339684) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C621A (317-5126-JPN)
//(sticker 253-5509-5126J)
@@ -6206,9 +6241,6 @@ ROM_START( takoron )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gdl-0042", 0, SHA1(984a4fa012d83dd8c748304958c847c9867f4125) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-5127-jpn.data", 0x00, 0x50, CRC(e1a6dbe4) SHA1(61b458937acca55e4010f86b684aaa86b8c10eac) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C621A (317-5127-JPN)
//(sticker 253-5509-5127J)
@@ -6246,9 +6278,6 @@ ROM_START( confmiss )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0001", 0, SHA1(bd05f197ba8643577883dd25d9d5a74c91b27ca9) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0298-com.data", 0x00, 0x50, CRC(c989b336) SHA1(40075500888626cc2261133eec496b3e753631e5) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD("317-0298-com.pic", 0x00, 0x4000, CRC(15971bf6) SHA1(815152ab05edb1789a26898cfd66b5a7c4a1f765) )
ROM_END
@@ -6278,8 +6307,6 @@ ROM_START( shaktamb )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0016", 0, SHA1(59bac62db4a536c63fec3464c665e00633fcf1a3) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD( "317-0321-com.pic", 0x000000, 0x004000, CRC(81519e71) SHA1(a30d25f81c77384ed26faa67c942802f2f3d7817) )
ROM_END
@@ -6291,7 +6318,6 @@ ROM_START( sprtjam )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0003", 0, SHA1(caaba214c1faca78b3370bcd4190eb2853d7f825) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
//PIC16C622A (317-0300-COM)
//(sticker 253-5508-0300)
//ROM_LOAD("317-0300-com.data", 0x00, 0x50, CRC(9a08413f) SHA1(d57649dcc3af578d55a93dd7a3f41da62d580f54) )
@@ -6308,9 +6334,6 @@ ROM_START( slashout )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0004", 0, SHA1(3cce788393ed194ba9b603f9896ff893691d6b00) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0302-com.data", 0x00, 0x50, CRC(4bf6cd62) SHA1(c1fdf12a4d80fa3008170c89d2dc583f19e0450b) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0302-COM)
//(sticker 253-5508-0302)
@@ -6325,9 +6348,6 @@ ROM_START( spkrbtl )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0005", 0, SHA1(d1c3fb2350e4a89372373e7f629c42b741af29b3) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0303-com.data", 0x00, 0x50, CRC(6e7888a3) SHA1(5ca78052bcfd9e9f81934cbddd9c173e88973e0e) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0303-COM)
//(sticker 253-5508-0303)
@@ -6363,9 +6383,6 @@ ROM_START( monkeyba )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0008", 0, SHA1(2fadcd141bdbde77b2b335b270959a516af44d99) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0307-com.data", 0x00, 0x50, CRC(448bedc7) SHA1(092dbe5e28890d3ee40d62ca8cbf225c3ce90304) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD("317-0307-com.pic", 0x00, 0x4000, CRC(4046de19) SHA1(8adda9f223e926148b36744bbbaa89557544a229) )
ROM_END
@@ -6409,9 +6426,6 @@ ROM_START( dygolf )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0009a", 0, SHA1(d502155ddaf881c2c9505528004b9904aa32a59c) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0308-com.data", 0x00, 0x50, CRC(56f63af0) SHA1(3c453226fc53d2f700b3634db3ef8ce206d94392) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0308-COM)
//(sticker 253-5508-0308)
@@ -6426,9 +6440,6 @@ ROM_START( wsbbgd )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0010", 0, SHA1(c3135ede3a8bdadab91aed49abacbfbde8037069) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0309-com.data", 0x00, 0x50, CRC(8792c550) SHA1(e8d6d91583d1673d8d3fa9ccb0ab1097c5c5ad08) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0309-COM)
//(sticker 253-5508-0309)
@@ -6443,9 +6454,6 @@ ROM_START( vtennisg )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0011", 0, SHA1(b778403d73c8cdd13383691c9be2094ddfc1ba84) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0312-com.data", 0x00, 0x50, CRC(6b24f78f) SHA1(43f89815ec46cf014d941b4b9238da044b338b4c) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C621A (317-0312-COM)
//(sticker 253-5508-0312)
@@ -6462,9 +6470,6 @@ ROM_START( keyboard )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0017", 0, SHA1(fb86eff3ef38de7fd78cfde897d5332d2092c172) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0323-com.data", 0x00, 0x50, CRC(c1277eb3) SHA1(529ed5a133550e2854f8656cd377706060a7befa) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD("317-0323-com.pic", 0x00, 0x4000, CRC(c8854ef2) SHA1(b43b956df142fe4167dcc2ec805921e25bba180f) )
@@ -6478,9 +6483,6 @@ ROM_START( vathlete )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0019", 0, SHA1(955d3c0cb991be3057138c562cff69c5ef887787) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0330-com.data", 0x00, 0x50, CRC(f5e7f7d4) SHA1(3903337e82011d132993e4366475586866bd39b1) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0330-COM)
//(sticker 253-5508-0330)
@@ -6518,9 +6520,6 @@ ROM_START( vtennis2 )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0015a", 0, SHA1(c6e9c9901bd4f075454b7f18baf08df81bc2f1ad) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0318-exp.data", 0x00, 0x50, CRC(7758ade6) SHA1(c62f35810bce466bfb0f55fd555066efd53e9bb6) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD("317-0318-exp.pic", 0x00, 0x4000, CRC(83de4047) SHA1(1808ac0d8353b92296de37f98b490a42a0e141cf) )
@@ -6534,9 +6533,6 @@ ROM_START( lupinsho )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0018", 0, SHA1(0633a99a666f363ab30450a76b9753685d6b1f57) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0332-j.data", 0x00, 0x50, CRC(31f2b632) SHA1(bbf253bfe831308a7e7fde3a4a28e5bcd2fbb273) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD("317-0332-j.pic", 0x00, 0x4000, CRC(f71cb2fc) SHA1(281b3b3b03edf9a39e380976de528b7c9674de53) )
ROM_END
@@ -6549,9 +6545,6 @@ ROM_START( luptype )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0021a", 0, SHA1(15c6f9434494a31693cbb8e33da36e0e8a8f7c62) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0332-jpn.data", 0x00, 0x50, CRC(ab302661) SHA1(65164cf76d78b281772bfcbf5a733b0200e86e09) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0332-JPN)
//(sticker 253-5508-0332J)
@@ -6566,8 +6559,6 @@ ROM_START( initdv2j )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0026b", 0, SHA1(8ddc3ccd32ab3416fbe2921f6d6617d6c9f23203) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0345-JPN)
//(sticker 253-5508-0345J)
@@ -6593,8 +6584,6 @@ ROM_START( initdv2e )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0027", 0, SHA1(44746f0ceb1a3bbcd1db11a35c78c93a030f02de) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0357-EXP)
ROM_LOAD( "317-0357-exp.pic", 0x000000, 0x004000, CRC(38f84b4d) SHA1(03c12d8580da1a4b3a554e62fd8b1f3447b7ebbd) )
@@ -6607,8 +6596,6 @@ ROM_START( initdv3j )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0032c", 0, SHA1(005b93f9785c76a778f90f04d74d4b3cc1785a01) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-????-JPN)
ROM_LOAD( "317-xxxx-jpn.pic", 0x000000, 0x004000, NO_DUMP ) // missing PIC
@@ -6654,9 +6641,6 @@ ROM_START( mok )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0022", 0, SHA1(70b41745225006e7876176cbd239edecd4c3f8b6) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0333-com.data", 0x00, 0x50, CRC(0c07970f) SHA1(8882dd2f8ed522790ea78eed80cfa9442f88f67b) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD("317-0333-com.pic", 0x00, 0x4000, CRC(15fb7792) SHA1(03932ba9b1738d5ab75b2a465cc3254e75f59f63) )
@@ -6670,9 +6654,6 @@ ROM_START( ngdup23a )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0023a", 0, SHA1(cd9d808b59eb8f40673ec4353d476f2b9c7f783c) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0314-com.data", 0x00, 0x50, CRC(91a97eb4) SHA1(059342368bc5d25b494ed3c729870695f9584fc7) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) // uses the vf4 pic
//PIC16C622A (317-0314-COM)
//(sticker 253-5508-0314)
@@ -6687,9 +6668,6 @@ ROM_START( ngdup23c )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0023c", 0, SHA1(1fcb5530748886f4c4f45487d047859182ff7496))
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0338-jpn.data", 0x00, 0x50, CRC(eeb2c9e9) SHA1(d30b5914c603219daea9923e1cf8da2be6096742) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF) // uses the vf4 evolution pic
//PIC16C622A (317-0338-JPN)
//(sticker 253-5508-0338J)
@@ -6707,9 +6685,6 @@ ROM_START( puyofev )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0031", 0, SHA1(da2d421da9472b149619b6931bb2fe624be75fa2) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0375-com.data", 0x00, 0x50, CRC(32bf1825) SHA1(42dfbc6777c154d8de6c6f7350da9ea737380220) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C621A (317-0375-COM)
//(sticker 253-5508-0375)
@@ -6726,7 +6701,7 @@ ROM_START( vstrik3c )
NAOMI2_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "epr-23663c.ic22",0x0000000, 0x0400000, CRC(7007fec7) SHA1(523168f0b218d0bd5c815d65bf0caba2c8468c9d) )
ROM_LOAD( "mpr-23652.ic1", 0x0800000, 0x1000000, CRC(992758a2) SHA1(5e2a25c520c1795128e5026fc00d355c24852ded) )
ROM_LOAD( "mpr-23653.ic2", 0x1800000, 0x1000000, CRC(e210e932) SHA1(2f6f0a31c3e98b21f1ff3af1680e50b3535b130f) )
@@ -6745,7 +6720,7 @@ ROM_START( vstrik3cb )
NAOMI2_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "epr-23663b.ic22",0x0000000, 0x0400000, CRC(15733e44) SHA1(5040c518279283b76da6d9f75bb0a48953146ca9) )
ROM_LOAD( "mpr-23652.ic1", 0x0800000, 0x1000000, CRC(992758a2) SHA1(5e2a25c520c1795128e5026fc00d355c24852ded) )
ROM_LOAD( "mpr-23653.ic2", 0x1800000, 0x1000000, CRC(e210e932) SHA1(2f6f0a31c3e98b21f1ff3af1680e50b3535b130f) )
@@ -6764,66 +6739,69 @@ ROM_START( wldrider )
NAOMI2_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xa800000, "user1", ROMREGION_ERASEFF)
+ ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
ROM_LOAD( "epr-23622.ic22", 0x0000000, 0x0400000, CRC(8acafa5b) SHA1(c92bcd40bad6ba8efd1edbfd7e439fb2b3c67fb0) )
- ROM_LOAD( "mpr-23611.ic1", 0x0800000, 0x1000000, CRC(943bc32a) SHA1(11ced99e9dbd7cc93031779e00d4ee1f2dff9086) )
- ROM_LOAD( "mpr-23612.ic2", 0x1800000, 0x1000000, CRC(f71d87e5) SHA1(c36d1d07702642db282278f1cf556ed472e930d3) )
- ROM_LOAD( "mpr-23613.ic3", 0x2800000, 0x1000000, CRC(689e783e) SHA1(1264c3389610bbf2745b7e6d50f327b1df33b63b) )
- ROM_LOAD( "mpr-23614.ic4", 0x3800000, 0x1000000, CRC(e5b8c5e5) SHA1(4b81ecc6375bf731dc3423cf87c2228eb304f2b5) )
- ROM_LOAD( "mpr-23615.ic5", 0x4800000, 0x1000000, CRC(95c35866) SHA1(a3dd4cd2c8818a3c5de7aa6c4afc74f872d52b37) )
- ROM_LOAD( "mpr-23616.ic6", 0x5800000, 0x1000000, CRC(6288848f) SHA1(a69ddde96d15cee9154ed3e87514286db6bbb622) )
- ROM_LOAD( "mpr-23617.ic7", 0x6800000, 0x1000000, CRC(19298892) SHA1(78493587dc49c7c99c5a98f152b17500003316b3) )
- ROM_LOAD( "mpr-23618.ic8", 0x7800000, 0x1000000, CRC(67d7b659) SHA1(44e75e16f2740c6e147e101a8714be8c5d9b71f3) )
- ROM_LOAD( "mpr-23619.ic9", 0x8800000, 0x1000000, CRC(a5f4f6af) SHA1(bb89d3f0f5bbaf7c40fa43680c7e51ef93f7ed26) )
- ROM_LOAD( "mpr-23620.ic10", 0x9800000, 0x1000000, CRC(67aa15a9) SHA1(42c24cbf7069c27430a71509a872cd1c4224aaeb) )
+ ROM_LOAD( "mpr-23611.ic1", 0x0800000, 0x1000000, CRC(943bc32a) SHA1(11ced99e9dbd7cc93031779e00d4ee1f2dff9086) )
+ ROM_LOAD( "mpr-23612.ic2", 0x1800000, 0x1000000, CRC(f71d87e5) SHA1(c36d1d07702642db282278f1cf556ed472e930d3) )
+ ROM_LOAD( "mpr-23613.ic3", 0x2800000, 0x1000000, CRC(689e783e) SHA1(1264c3389610bbf2745b7e6d50f327b1df33b63b) )
+ ROM_LOAD( "mpr-23614.ic4", 0x3800000, 0x1000000, CRC(e5b8c5e5) SHA1(4b81ecc6375bf731dc3423cf87c2228eb304f2b5) )
+ ROM_LOAD( "mpr-23615.ic5", 0x4800000, 0x1000000, CRC(95c35866) SHA1(a3dd4cd2c8818a3c5de7aa6c4afc74f872d52b37) )
+ ROM_LOAD( "mpr-23616.ic6", 0x5800000, 0x1000000, CRC(6288848f) SHA1(a69ddde96d15cee9154ed3e87514286db6bbb622) )
+ ROM_LOAD( "mpr-23617.ic7", 0x6800000, 0x1000000, CRC(19298892) SHA1(78493587dc49c7c99c5a98f152b17500003316b3) )
+ ROM_LOAD( "mpr-23618.ic8", 0x7800000, 0x1000000, CRC(67d7b659) SHA1(44e75e16f2740c6e147e101a8714be8c5d9b71f3) )
+ ROM_LOAD( "mpr-23619.ic9", 0x8800000, 0x1000000, CRC(a5f4f6af) SHA1(bb89d3f0f5bbaf7c40fa43680c7e51ef93f7ed26) )
+ ROM_LOAD( "mpr-23620.ic10", 0x9800000, 0x1000000, CRC(67aa15a9) SHA1(42c24cbf7069c27430a71509a872cd1c4224aaeb) )
ROM_END
ROM_START( vf4cart )
NAOMI2_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23785.ic22", 0x0000000, 0x0400000, CRC(9bd98d4b) SHA1(3b0622625317cd6b2736c5b4a23484fb8bf39e4b) )
- ROM_LOAD( "mpr-23774.ic1", 0x0800000, 0x1000000, CRC(0fe7b864) SHA1(357ca3a5d96d7ff27e06367e115ddfd00cb260e3) )
- ROM_LOAD( "mpr-23775.ic2", 0x1800000, 0x1000000, CRC(a11cd9e5) SHA1(7fd8f634d0d14a91dfe9f39b5643b9c761dc7053) )
- ROM_LOAD( "mpr-23776.ic3", 0x2800000, 0x1000000, CRC(44b8429e) SHA1(0ec6b6156bef1621700791651903a4589f4b5f84) )
- ROM_LOAD( "mpr-23777.ic4", 0x3800000, 0x1000000, CRC(78a4264e) SHA1(40d045240173f330ac6f108b132f9a87884922be) )
- ROM_LOAD( "mpr-23778.ic5", 0x4800000, 0x1000000, CRC(02dee78b) SHA1(e08ce0fc0b1db2dcef957c2edb6d51db400a38cb) )
- ROM_LOAD( "mpr-23779.ic6", 0x5800000, 0x1000000, CRC(6e458eea) SHA1(4c85fcacf4ff46d4a137afcf5906092fd88fe4b1) )
- ROM_LOAD( "mpr-23780.ic7", 0x6800000, 0x1000000, CRC(a775a51c) SHA1(b3eae20e5e7d74252368fd902c4e94a6ba6cb154) )
- ROM_LOAD( "mpr-23781.ic8", 0x7800000, 0x1000000, CRC(401bca00) SHA1(10c6011fae7076ea0dc5ab0ebca9cb88659a93e9) )
- ROM_LOAD( "mpr-23782.ic9", 0x8800000, 0x1000000, CRC(4f72e901) SHA1(a1d231c446d2c34e5a7e7145754b2313a2d03fd4) )
- ROM_LOAD( "mpr-23783.ic10", 0x9800000, 0x1000000, CRC(c8d4f6f9) SHA1(9e9df605c050b3780d7df34bd5041d30bc084d2d) )
- ROM_LOAD( "mpr-23784.ic11", 0xa800000, 0x1000000, CRC(f74f2fee) SHA1(84b07baa6d116727e66ef27e24ba6484c3393891) )
+ ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23785.ic22", 0x0000000, 0x0400000, CRC(9bd98d4b) SHA1(3b0622625317cd6b2736c5b4a23484fb8bf39e4b) )
+ ROM_LOAD( "mpr-23774.ic1", 0x0800000, 0x1000000, CRC(0fe7b864) SHA1(357ca3a5d96d7ff27e06367e115ddfd00cb260e3) )
+ ROM_LOAD( "mpr-23775.ic2", 0x1800000, 0x1000000, CRC(a11cd9e5) SHA1(7fd8f634d0d14a91dfe9f39b5643b9c761dc7053) )
+ ROM_LOAD( "mpr-23776.ic3", 0x2800000, 0x1000000, CRC(44b8429e) SHA1(0ec6b6156bef1621700791651903a4589f4b5f84) )
+ ROM_LOAD( "mpr-23777.ic4", 0x3800000, 0x1000000, CRC(78a4264e) SHA1(40d045240173f330ac6f108b132f9a87884922be) )
+ ROM_LOAD( "mpr-23778.ic5", 0x4800000, 0x1000000, CRC(02dee78b) SHA1(e08ce0fc0b1db2dcef957c2edb6d51db400a38cb) )
+ ROM_LOAD( "mpr-23779.ic6", 0x5800000, 0x1000000, CRC(6e458eea) SHA1(4c85fcacf4ff46d4a137afcf5906092fd88fe4b1) )
+ ROM_LOAD( "mpr-23780.ic7", 0x6800000, 0x1000000, CRC(a775a51c) SHA1(b3eae20e5e7d74252368fd902c4e94a6ba6cb154) )
+ ROM_LOAD( "mpr-23781.ic8", 0x7800000, 0x1000000, CRC(401bca00) SHA1(10c6011fae7076ea0dc5ab0ebca9cb88659a93e9) )
+ ROM_LOAD( "mpr-23782.ic9", 0x8800000, 0x1000000, CRC(4f72e901) SHA1(a1d231c446d2c34e5a7e7145754b2313a2d03fd4) )
+ ROM_LOAD( "mpr-23783.ic10", 0x9800000, 0x1000000, CRC(c8d4f6f9) SHA1(9e9df605c050b3780d7df34bd5041d30bc084d2d) )
+ ROM_LOAD( "mpr-23784.ic11", 0xa800000, 0x1000000, CRC(f74f2fee) SHA1(84b07baa6d116727e66ef27e24ba6484c3393891) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "vf4cart-key.bin", 0, 4, CRC(22838e16) SHA1(afee674dce3cfdd20360c30da2da5ba69f8d4682) )
ROM_END
ROM_START( kingrt66 )
NAOMI2_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xa800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23819a.ic22", 0x0000000, 0x400000, CRC(92f11b29) SHA1(b33f7eefb849754cfe194be1d48d770ed77ff69a) )
+ ROM_REGION( 0xa800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23819a.ic22", 0x0000000, 0x400000, CRC(92f11b29) SHA1(b33f7eefb849754cfe194be1d48d770ed77ff69a) )
ROM_RELOAD( 0x400000, 0x400000)
- ROM_LOAD( "mpr-23799.ic1", 0x0800000, 0x800000, CRC(03da8f81) SHA1(01f9b33ffc485d8ccb2630c8cc1fcc0d90da171d) )
- ROM_LOAD( "mpr-23800.ic2", 0x1000000, 0x800000, CRC(1bbbf549) SHA1(0c5269f3e8a88298408bb612dc8da4d545ce329e) )
- ROM_LOAD( "mpr-23801.ic3", 0x1800000, 0x800000, CRC(6c81d0a9) SHA1(2301350098062e16afd6d4c13eeb1e46040d398f) )
- ROM_LOAD( "mpr-23802.ic4", 0x2000000, 0x800000, CRC(fe245803) SHA1(3b5c4d20c447ca02306a74914c027c9193d2bb48) )
- ROM_LOAD( "mpr-23803.ic5", 0x2800000, 0x800000, CRC(d8376c76) SHA1(62a64d0ff4b63a2de3b8668c0ca1d69d4cdac00e) )
- ROM_LOAD( "mpr-23804.ic6", 0x3000000, 0x800000, CRC(d184a4b3) SHA1(db00cf005da52b8add695ec89f8a81cf21fc9bad) )
- ROM_LOAD( "mpr-23805.ic7", 0x3800000, 0x800000, CRC(6e92fb39) SHA1(d992272e474424221c87bb71e269e10cbba1cac9) )
- ROM_LOAD( "mpr-23806.ic8", 0x4000000, 0x800000, CRC(fd4c128f) SHA1(7778920f59b8bc1e9718d685bfd556f73e5c3895) )
- ROM_LOAD( "mpr-23807.ic9", 0x4800000, 0x800000, CRC(5bcb3759) SHA1(57baa595eaee826ffadc17c885cb73174558feb1) )
- ROM_LOAD( "mpr-23808.ic10", 0x5000000, 0x800000, CRC(7d66c409) SHA1(fa8d08587ebcd70ec39237366c5de6948efce881) )
- ROM_LOAD( "mpr-23809.ic11", 0x5800000, 0x800000, CRC(322abecc) SHA1(476a751dc9849a5167e7e7e17e27987b96b1cb00) )
- ROM_LOAD( "mpr-23810.ic12", 0x6000000, 0x800000, CRC(a47fff36) SHA1(5c0088e140654b89749c5dd5d729c4799afc224e) )
- ROM_LOAD( "mpr-23811.ic13", 0x6800000, 0x800000, CRC(f502b666) SHA1(fa483f327cab15d10861efcbf6bdf4a2c5d0a763) )
- ROM_LOAD( "mpr-23812.ic14", 0x7000000, 0x800000, CRC(ed664a57) SHA1(54421ce642208fd1f14fbbe2e326d9c8da7c9944) )
- ROM_LOAD( "mpr-23813.ic15", 0x7800000, 0x800000, CRC(3f905393) SHA1(d63bbe8099b323ad4fd95401e0097b4c7151b44c) )
- ROM_LOAD( "mpr-23814.ic16", 0x8000000, 0x800000, CRC(80756e62) SHA1(9b2f14ed10775ee56f245c75ee23534c99db23d4) )
- ROM_LOAD( "mpr-23815.ic17", 0x8800000, 0x800000, CRC(7404e74e) SHA1(a427bf9f5e8338d34d1091de69460e374ddc6ee6) )
- ROM_LOAD( "mpr-23816.ic18", 0x9000000, 0x800000, CRC(58a7fbac) SHA1(7132e018e73e68a355f92fe26121da7c3c0c927a) )
- ROM_LOAD( "mpr-23817.ic19", 0x9800000, 0x800000, CRC(fd6fb2cf) SHA1(b2bf8a11d42141237db0254506ee73d9cef8b9d1) )
- ROM_LOAD( "mpr-23818.ic20", 0xa000000, 0x800000, CRC(be902c2b) SHA1(1f1aa6933da528bdcef45942a0caa33cb24e7ddd) )
+ ROM_LOAD( "mpr-23799.ic1", 0x0800000, 0x800000, CRC(03da8f81) SHA1(01f9b33ffc485d8ccb2630c8cc1fcc0d90da171d) )
+ ROM_LOAD( "mpr-23800.ic2", 0x1000000, 0x800000, CRC(1bbbf549) SHA1(0c5269f3e8a88298408bb612dc8da4d545ce329e) )
+ ROM_LOAD( "mpr-23801.ic3", 0x1800000, 0x800000, CRC(6c81d0a9) SHA1(2301350098062e16afd6d4c13eeb1e46040d398f) )
+ ROM_LOAD( "mpr-23802.ic4", 0x2000000, 0x800000, CRC(fe245803) SHA1(3b5c4d20c447ca02306a74914c027c9193d2bb48) )
+ ROM_LOAD( "mpr-23803.ic5", 0x2800000, 0x800000, CRC(d8376c76) SHA1(62a64d0ff4b63a2de3b8668c0ca1d69d4cdac00e) )
+ ROM_LOAD( "mpr-23804.ic6", 0x3000000, 0x800000, CRC(d184a4b3) SHA1(db00cf005da52b8add695ec89f8a81cf21fc9bad) )
+ ROM_LOAD( "mpr-23805.ic7", 0x3800000, 0x800000, CRC(6e92fb39) SHA1(d992272e474424221c87bb71e269e10cbba1cac9) )
+ ROM_LOAD( "mpr-23806.ic8", 0x4000000, 0x800000, CRC(fd4c128f) SHA1(7778920f59b8bc1e9718d685bfd556f73e5c3895) )
+ ROM_LOAD( "mpr-23807.ic9", 0x4800000, 0x800000, CRC(5bcb3759) SHA1(57baa595eaee826ffadc17c885cb73174558feb1) )
+ ROM_LOAD( "mpr-23808.ic10", 0x5000000, 0x800000, CRC(7d66c409) SHA1(fa8d08587ebcd70ec39237366c5de6948efce881) )
+ ROM_LOAD( "mpr-23809.ic11", 0x5800000, 0x800000, CRC(322abecc) SHA1(476a751dc9849a5167e7e7e17e27987b96b1cb00) )
+ ROM_LOAD( "mpr-23810.ic12", 0x6000000, 0x800000, CRC(a47fff36) SHA1(5c0088e140654b89749c5dd5d729c4799afc224e) )
+ ROM_LOAD( "mpr-23811.ic13", 0x6800000, 0x800000, CRC(f502b666) SHA1(fa483f327cab15d10861efcbf6bdf4a2c5d0a763) )
+ ROM_LOAD( "mpr-23812.ic14", 0x7000000, 0x800000, CRC(ed664a57) SHA1(54421ce642208fd1f14fbbe2e326d9c8da7c9944) )
+ ROM_LOAD( "mpr-23813.ic15", 0x7800000, 0x800000, CRC(3f905393) SHA1(d63bbe8099b323ad4fd95401e0097b4c7151b44c) )
+ ROM_LOAD( "mpr-23814.ic16", 0x8000000, 0x800000, CRC(80756e62) SHA1(9b2f14ed10775ee56f245c75ee23534c99db23d4) )
+ ROM_LOAD( "mpr-23815.ic17", 0x8800000, 0x800000, CRC(7404e74e) SHA1(a427bf9f5e8338d34d1091de69460e374ddc6ee6) )
+ ROM_LOAD( "mpr-23816.ic18", 0x9000000, 0x800000, CRC(58a7fbac) SHA1(7132e018e73e68a355f92fe26121da7c3c0c927a) )
+ ROM_LOAD( "mpr-23817.ic19", 0x9800000, 0x800000, CRC(fd6fb2cf) SHA1(b2bf8a11d42141237db0254506ee73d9cef8b9d1) )
+ ROM_LOAD( "mpr-23818.ic20", 0xa000000, 0x800000, CRC(be902c2b) SHA1(1f1aa6933da528bdcef45942a0caa33cb24e7ddd) )
ROM_END
/*
@@ -6833,49 +6811,52 @@ ROM_START( vf4evoct )
NAOMI2_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23934.ic11", 0x0000000, 0x400000, CRC(656a7d84) SHA1(e407ddc923b399de99cb06a8831ef8fb328cfe64) )
- ROM_LOAD32_WORD( "mpr-23912.ic17s", 0x1000000, 0x800000, CRC(b2b13d97) SHA1(978bcdab7e4f220b464d5b9fa27870b5176283ca) )
- ROM_LOAD32_WORD( "mpr-23913.ic18", 0x1000002, 0x800000, CRC(560de9d2) SHA1(e065abb62346f5e50f654ac77beb54ee1bfc1a08) )
- ROM_LOAD32_WORD( "mpr-23914.ic19s", 0x2000000, 0x800000, CRC(a2104728) SHA1(48b752b6266b4d44fcb16fe179fb44ca58e11db0) )
- ROM_LOAD32_WORD( "mpr-23915.ic20", 0x2000002, 0x800000, CRC(295d32f0) SHA1(4cabb1ab54dad2cef7207f8d7a78f609d35800fb) )
- ROM_LOAD32_WORD( "mpr-23916.ic21s", 0x3000000, 0x800000, CRC(d725fdd3) SHA1(ab3a79dfcbaa65b5a085a429bcb76c1d3940d590) )
- ROM_LOAD32_WORD( "mpr-23917.ic22", 0x3000002, 0x800000, CRC(8794c8e8) SHA1(a2542ad8c063f77749fbc4429ec74bba26939556) )
- ROM_LOAD32_WORD( "mpr-23918.ic23s", 0x4000000, 0x800000, CRC(7a3da170) SHA1(72d05430cd8cd12c47ccd36bf171eaadfb987708) )
- ROM_LOAD32_WORD( "mpr-23919.ic24", 0x4000002, 0x800000, CRC(59601746) SHA1(514b00ee44d64593c2d257b48ac20b42ee2a402a) )
- ROM_LOAD32_WORD( "mpr-23920.ic25s", 0x5000000, 0x800000, CRC(6ae07021) SHA1(b018db4f868d9ebcde44759d8aea44d789958087) )
- ROM_LOAD32_WORD( "mpr-23921.ic26", 0x5000002, 0x800000, CRC(42028253) SHA1(aa5a3953e4306f4f69c1be568d515af249e6ab1e) )
- ROM_LOAD32_WORD( "mpr-23922.ic27s", 0x6000000, 0x800000, CRC(baf47df2) SHA1(d5c04e03a69a4ac8c8c066c0c750bef236e8c172) )
- ROM_LOAD32_WORD( "mpr-23923.ic28", 0x6000002, 0x800000, CRC(5c31b7e7) SHA1(cf1307400f7bd4b8dda840544a348eee34710256) )
- ROM_LOAD32_WORD( "mpr-23924.ic29", 0x7000000, 0x800000, CRC(6dfe19d9) SHA1(99b13ef752c7b8f7812ea5c3bce19cbf122008b6) )
- ROM_LOAD32_WORD( "mpr-23925.ic30s", 0x7000002, 0x800000, CRC(e9ec870a) SHA1(cdf385096e7fe15de98cea6ae5aabf3016e007a9) )
- ROM_LOAD32_WORD( "mpr-23926.ic31", 0x8000000, 0x800000, CRC(2c650728) SHA1(328748b2c786eb77c9d05280e88367cfb7b79777) )
- ROM_LOAD32_WORD( "mpr-23927.ic32s", 0x8000002, 0x800000, CRC(f36a765b) SHA1(ecd09db0961b0d11000c8744a2cfcf3fa473eea6) )
- ROM_LOAD32_WORD( "mpr-23928.ic33", 0x9000000, 0x800000, CRC(0ee92b02) SHA1(d0d26f4257a022b42b59cf4f9305a3cb2dc67f4b) )
- ROM_LOAD32_WORD( "mpr-23929.ic34s", 0x9000002, 0x800000, CRC(d768f242) SHA1(3ade29b094308d870ecac53cfe77b843d50af85a) )
- ROM_LOAD32_WORD( "mpr-23930.ic35", 0xa000000, 0x800000, CRC(0e45e4c4) SHA1(974b83d4cc35e8ac9f83d04ebd395f1e2196e829) )
- ROM_LOAD32_WORD( "mpr-23931.ic36s", 0xa000002, 0x800000, CRC(12ecd2f0) SHA1(3222d4d9d3e30c297a072a8888c28503306db40c) )
-
- ROM_COPY( "user1", 0x1400000, 0x0800000, 0x0800000 ) // mirror data so IC1 check can pass
+ ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23934.ic11", 0x0000000, 0x400000, CRC(656a7d84) SHA1(e407ddc923b399de99cb06a8831ef8fb328cfe64) )
+ ROM_LOAD32_WORD( "mpr-23912.ic17s", 0x1000000, 0x800000, CRC(b2b13d97) SHA1(978bcdab7e4f220b464d5b9fa27870b5176283ca) )
+ ROM_LOAD32_WORD( "mpr-23913.ic18", 0x1000002, 0x800000, CRC(560de9d2) SHA1(e065abb62346f5e50f654ac77beb54ee1bfc1a08) )
+ ROM_LOAD32_WORD( "mpr-23914.ic19s", 0x2000000, 0x800000, CRC(a2104728) SHA1(48b752b6266b4d44fcb16fe179fb44ca58e11db0) )
+ ROM_LOAD32_WORD( "mpr-23915.ic20", 0x2000002, 0x800000, CRC(295d32f0) SHA1(4cabb1ab54dad2cef7207f8d7a78f609d35800fb) )
+ ROM_LOAD32_WORD( "mpr-23916.ic21s", 0x3000000, 0x800000, CRC(d725fdd3) SHA1(ab3a79dfcbaa65b5a085a429bcb76c1d3940d590) )
+ ROM_LOAD32_WORD( "mpr-23917.ic22", 0x3000002, 0x800000, CRC(8794c8e8) SHA1(a2542ad8c063f77749fbc4429ec74bba26939556) )
+ ROM_LOAD32_WORD( "mpr-23918.ic23s", 0x4000000, 0x800000, CRC(7a3da170) SHA1(72d05430cd8cd12c47ccd36bf171eaadfb987708) )
+ ROM_LOAD32_WORD( "mpr-23919.ic24", 0x4000002, 0x800000, CRC(59601746) SHA1(514b00ee44d64593c2d257b48ac20b42ee2a402a) )
+ ROM_LOAD32_WORD( "mpr-23920.ic25s", 0x5000000, 0x800000, CRC(6ae07021) SHA1(b018db4f868d9ebcde44759d8aea44d789958087) )
+ ROM_LOAD32_WORD( "mpr-23921.ic26", 0x5000002, 0x800000, CRC(42028253) SHA1(aa5a3953e4306f4f69c1be568d515af249e6ab1e) )
+ ROM_LOAD32_WORD( "mpr-23922.ic27s", 0x6000000, 0x800000, CRC(baf47df2) SHA1(d5c04e03a69a4ac8c8c066c0c750bef236e8c172) )
+ ROM_LOAD32_WORD( "mpr-23923.ic28", 0x6000002, 0x800000, CRC(5c31b7e7) SHA1(cf1307400f7bd4b8dda840544a348eee34710256) )
+ ROM_LOAD32_WORD( "mpr-23924.ic29", 0x7000000, 0x800000, CRC(6dfe19d9) SHA1(99b13ef752c7b8f7812ea5c3bce19cbf122008b6) )
+ ROM_LOAD32_WORD( "mpr-23925.ic30s", 0x7000002, 0x800000, CRC(e9ec870a) SHA1(cdf385096e7fe15de98cea6ae5aabf3016e007a9) )
+ ROM_LOAD32_WORD( "mpr-23926.ic31", 0x8000000, 0x800000, CRC(2c650728) SHA1(328748b2c786eb77c9d05280e88367cfb7b79777) )
+ ROM_LOAD32_WORD( "mpr-23927.ic32s", 0x8000002, 0x800000, CRC(f36a765b) SHA1(ecd09db0961b0d11000c8744a2cfcf3fa473eea6) )
+ ROM_LOAD32_WORD( "mpr-23928.ic33", 0x9000000, 0x800000, CRC(0ee92b02) SHA1(d0d26f4257a022b42b59cf4f9305a3cb2dc67f4b) )
+ ROM_LOAD32_WORD( "mpr-23929.ic34s", 0x9000002, 0x800000, CRC(d768f242) SHA1(3ade29b094308d870ecac53cfe77b843d50af85a) )
+ ROM_LOAD32_WORD( "mpr-23930.ic35", 0xa000000, 0x800000, CRC(0e45e4c4) SHA1(974b83d4cc35e8ac9f83d04ebd395f1e2196e829) )
+ ROM_LOAD32_WORD( "mpr-23931.ic36s", 0xa000002, 0x800000, CRC(12ecd2f0) SHA1(3222d4d9d3e30c297a072a8888c28503306db40c) )
+
+ ROM_COPY( "rom_board", 0x1400000, 0x0800000, 0x0800000 ) // mirror data so IC1 check can pass
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "vf4evoct-key.bin", 0, 4, CRC(c37dae2b) SHA1(c42dc01b5918db36e7eb2aca523e2f4df567725a) )
ROM_END
ROM_START( clubkrte )
NAOMI2_BIOS
NAOMI_DEFAULT_EEPROM
- ROM_REGION( 0xb800000, "user1", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23704.ic22", 0x0000000, 0x0400000, CRC(ff700a0d) SHA1(e2db0d2bd7dc88b3a487077e8ce56eb6cfd9b02d) )
- ROM_LOAD( "mpr-23693.ic1", 0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) )
- ROM_LOAD( "mpr-22694.ic2", 0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) )
- ROM_LOAD( "mpr-22695.ic3", 0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) )
- ROM_LOAD( "mpr-22696.ic4", 0x3800000, 0x1000000, CRC(6f2da455) SHA1(b655757bc513398820bfeae07dca8a4f3ea9752c) )
- ROM_LOAD( "mpr-22697.ic5", 0x4800000, 0x1000000, CRC(1383c742) SHA1(6efd17632a277a4bb0e47cc912fbc9865a8b14c3) )
- ROM_LOAD( "mpr-22698.ic6", 0x5800000, 0x1000000, CRC(da79cd06) SHA1(fdfe068caca1eb764dec28ab327e56b39144f3ae) )
- ROM_LOAD( "mpr-22699.ic7", 0x6800000, 0x1000000, CRC(ea77f000) SHA1(35aa8ee804d9429e72f516137a3b06c585a57b6d) )
- ROM_LOAD( "mpr-22700.ic8", 0x7800000, 0x1000000, CRC(db9e5c1d) SHA1(db918c0fa1860f4345806e574d44354aba5fcd54) )
- ROM_LOAD( "mpr-22701.ic9", 0x8800000, 0x1000000, CRC(0fa92fd7) SHA1(67a1cf085101884a17a4783d0d509ab198aa6425) )
- ROM_LOAD( "mpr-22702.ic10", 0x9800000, 0x1000000, CRC(e302b582) SHA1(787192ed9f9a08541eecc3128855485cad802a42) )
- ROM_LOAD( "mpr-22703.ic11", 0xa800000, 0x1000000, CRC(702b8b4a) SHA1(3a8dfde458f341e7db20664382b9fce2b6e5d462) )
+ ROM_REGION( 0xb800000, "rom_board", ROMREGION_ERASEFF)
+ ROM_LOAD( "epr-23704.ic22", 0x0000000, 0x0400000, CRC(ff700a0d) SHA1(e2db0d2bd7dc88b3a487077e8ce56eb6cfd9b02d) )
+ ROM_LOAD( "mpr-23693.ic1", 0x0800000, 0x1000000, CRC(28995764) SHA1(a1457f9935dde2e5aaa5ef245c736c0f2f8c74b7) )
+ ROM_LOAD( "mpr-22694.ic2", 0x1800000, 0x1000000, CRC(37d30111) SHA1(4c07df8cd548cac79d48709e61f692d762471f8f) )
+ ROM_LOAD( "mpr-22695.ic3", 0x2800000, 0x1000000, CRC(41ac1510) SHA1(01b889b627fdfc1f12a0c84fcc36debdfb1cf377) )
+ ROM_LOAD( "mpr-22696.ic4", 0x3800000, 0x1000000, CRC(6f2da455) SHA1(b655757bc513398820bfeae07dca8a4f3ea9752c) )
+ ROM_LOAD( "mpr-22697.ic5", 0x4800000, 0x1000000, CRC(1383c742) SHA1(6efd17632a277a4bb0e47cc912fbc9865a8b14c3) )
+ ROM_LOAD( "mpr-22698.ic6", 0x5800000, 0x1000000, CRC(da79cd06) SHA1(fdfe068caca1eb764dec28ab327e56b39144f3ae) )
+ ROM_LOAD( "mpr-22699.ic7", 0x6800000, 0x1000000, CRC(ea77f000) SHA1(35aa8ee804d9429e72f516137a3b06c585a57b6d) )
+ ROM_LOAD( "mpr-22700.ic8", 0x7800000, 0x1000000, CRC(db9e5c1d) SHA1(db918c0fa1860f4345806e574d44354aba5fcd54) )
+ ROM_LOAD( "mpr-22701.ic9", 0x8800000, 0x1000000, CRC(0fa92fd7) SHA1(67a1cf085101884a17a4783d0d509ab198aa6425) )
+ ROM_LOAD( "mpr-22702.ic10", 0x9800000, 0x1000000, CRC(e302b582) SHA1(787192ed9f9a08541eecc3128855485cad802a42) )
+ ROM_LOAD( "mpr-22703.ic11", 0xa800000, 0x1000000, CRC(702b8b4a) SHA1(3a8dfde458f341e7db20664382b9fce2b6e5d462) )
ROM_END
/**********************************************
@@ -6891,9 +6872,6 @@ ROM_START( vstrik3 )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0006", 0, SHA1(aca09a88506f5e462ad3fb33eac5478a2a010609) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0304-com.data", 0x00, 0x50, CRC(a181c601) SHA1(6a489904941e638ac1069b66e76ee0bcec7d0bab) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0304-COM)
//(sticker 253-5508-0304)
@@ -6907,9 +6885,6 @@ ROM_START( vf4 )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0012", 0, SHA1(c34588f59c6091cd1c3ef235171dad8d5247e707) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0314-com.data", 0x00, 0x50, CRC(91a97eb4) SHA1(059342368bc5d25b494ed3c729870695f9584fc7) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0314-COM)
//(sticker 253-5508-0314)
@@ -6924,9 +6899,6 @@ ROM_START( vf4b )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0012b", 0, SHA1(9b8e05c3d28a09323b13c198dfcc2b771bba67cd) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0314-com.data", 0x00, 0x50, CRC(91a97eb4) SHA1(059342368bc5d25b494ed3c729870695f9584fc7) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0314-COM)
//(sticker 253-5508-0314)
@@ -6941,9 +6913,6 @@ ROM_START( vf4c )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0012c", 0, SHA1(0ec149d7edfb326777cdc45a2ac8ad578a32aba1) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0314-com.data", 0x00, 0x50, CRC(91a97eb4) SHA1(059342368bc5d25b494ed3c729870695f9584fc7) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0314-COM)
//(sticker 253-5508-0314)
@@ -6959,9 +6928,6 @@ ROM_START( vf4evo )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0024b", 0, SHA1(a829169542f3bed76095ad6bfbbde7d494d04d72) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0338-jpn.data", 0x00, 0x50, CRC(eeb2c9e9) SHA1(d30b5914c603219daea9923e1cf8da2be6096742) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0338-JPN)
//(sticker 253-5508-0338J)
@@ -6976,9 +6942,6 @@ ROM_START( vf4evoa )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0024a", 0, SHA1(6225e778d73db18be26f882d4f9cd3b3a136d1c9) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0338-jpn.data", 0x00, 0x50, CRC(eeb2c9e9) SHA1(d30b5914c603219daea9923e1cf8da2be6096742) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0338-JPN)
//(sticker 253-5508-0338J)
@@ -6992,9 +6955,6 @@ ROM_START( vf4tuned ) // are there multiple files on this GD-ROM? it only compre
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0036f", 0, SHA1(ea35d6ecdf94e5c9a545952758da80f658755df0) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0387-com.data", 0x00, 0x50, CRC(ab9f3851) SHA1(8b64dc6df176eb7adb48267709a27db221d5e3c3) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0387-COM)
//(sticker 253-5508-0387)
@@ -7008,9 +6968,6 @@ ROM_START( vf4tunedd )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0036d", 0, SHA1(2f7654307a4c978c5af6c8238c44e70275dd34f9) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0387-com.data", 0x00, 0x50, CRC(ab9f3851) SHA1(8b64dc6df176eb7adb48267709a27db221d5e3c3) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0387-COM)
//(sticker 253-5508-0387)
@@ -7026,9 +6983,6 @@ ROM_START( vf4tuneda )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0036a", 0, SHA1(cd630fc4e8f7ed5641b85c609584d7efe0eac137) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0387-com.data", 0x00, 0x50, CRC(ab9f3851) SHA1(8b64dc6df176eb7adb48267709a27db221d5e3c3) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0387-COM)
//(sticker 253-5508-0387)
@@ -7067,10 +7021,8 @@ ROM_START( beachspi )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0014", 0, SHA1(1ebb3695196c11a86276e034df2e1c8d7fa6b96f) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
//PIC16C622A (317-0317-COM)
//(sticker 253-5508-0317)
- //ROM_LOAD("317-0317-com.data", 0x00, 0x50, CRC(66efe433) SHA1(7f7b52202ed9b1e20516aaa7553cc3cc677a70b5) )
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD("317-0317-com.pic", 0x00, 0x4000, CRC(ef65fe73) SHA1(2c02d1570c1fdad56bc684c60bb17255c73c6d45) )
@@ -7084,12 +7036,6 @@ ROM_START( initd )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0020b", 0, SHA1(c0e901623ef4fcd97b7e4d29ae556e6f2e91b8ad) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE) // custom format containing data returned from pic
- //ROM_LOAD("317-0331-jpn.data", 0x00, 0x50, CRC(bb39742e) SHA1(b3100b18aeb80ebfd5312ba5c320e7e647710b55) )
-
- //ROM_REGION( 0x9a49, "pichex", ROMREGION_ERASE) // actual pic dump (in hex/ascii mode) from decap
- //ROM_LOAD("gds-0020b.hex", 0x00, 0x0009a49, CRC(80d9fe04) SHA1(7a6fe325ce2e12e9270205d32f549aaf66505de5) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
//PIC16C622A (317-0331-JPN)
//(sticker 253-5508-0331J)
@@ -7103,9 +7049,6 @@ ROM_START( initdexp )
DISK_REGION( "gdrom" )
DISK_IMAGE_READONLY( "gds-0025", 0, SHA1(8ea92cf6b493f21b9453832edad7cbc5e5b350c1) )
- ROM_REGION( 0x50, "picreturn", ROMREGION_ERASE)
- //ROM_LOAD("317-0343-com.data", 0x00, 0x50, CRC(e9d8fac0) SHA1(85f5bbffbd9d1f7162bae46ddd49e7870fe93662) )
-
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD("317-0343-com.pic", 0x00, 0x4000, CRC(80eea4eb) SHA1(5aedc0d52a2a8a2d186ca591094835d972574092) )
ROM_END
@@ -7118,243 +7061,100 @@ ROM_END
*
*********************************************/
-typedef struct _sbox_set sbox_set;
-struct _sbox_set
-{
- int S0[32];
- int S1[16];
- int S2[16];
- int S3[8];
-};
-
-static const int permutation_table[4][16] =
-{
- {8,10,1,3,7,4,11,2,5,15,6,0,12,13,9,14},
- {4,5,9,6,1,13,7,11,10,0,14,12,8,15,2,3},
- {12,7,11,2,0,5,15,6,1,8,14,4,9,13,3,10},
- {14,1,11,15,7,3,8,13,0,4,2,12,6,10,5,9}
-};
-
-static const sbox_set sboxes_table[4] =
-{
- {
- {4,12,8,14,16,30,31,0,23,29,24,21,11,22,27,5,3,20,18,26,10,7,17,1,28,6,15,13,2,9,25,19},
- {13,1,0,9,5,12,4,14,3,15,2,10,11,6,8,7},
- {7,13,4,6,5,9,3,2,0,15,12,10,8,11,1,14},
- {4,0,1,2,5,7,3,6}
- },
- {
- {3,0,14,17,10,15,31,20,13,2,29,28,9,18,25,27,6,19,30,22,7,12,1,16,23,11,24,4,8,26,21,5},
- {2,10,6,9,11,13,4,5,3,15,7,14,12,1,0,8},
- {1,13,11,3,8,7,9,10,12,15,4,14,0,5,6,2},
- {6,5,0,3,7,1,4,2}
- },
- {
- {9,15,28,7,13,24,2,23,21,1,22,16,18,8,17,31,27,6,30,12,4,20,5,19,0,25,3,29,10,14,11,26},
- {5,2,13,11,8,6,12,1,4,3,0,10,14,15,7,9},
- {11,6,10,0,12,1,8,14,2,9,13,3,7,4,15,5},
- {1,5,6,2,4,7,3,0}
- },
- {
- {17,3,31,2,28,10,9,29,6,25,24,8,13,1,19,15,22,0,14,20,16,7,21,4,18,26,27,5,12,23,11,30},
- {4,8,11,15,3,14,7,12,1,0,9,5,6,13,2,10},
- {14,0,9,11,4,1,7,5,13,6,8,12,2,3,10,15},
- {2,1,0,5,4,6,7,3}
- },
-};
-
-static UINT16 atomiswave_decrypt(UINT16 cipherText, int address, const UINT32 key)
-{
- int b0,b1,b2,b3;
- int aux;
- const int* pbox = permutation_table[key>>18];
- const sbox_set* ss = &sboxes_table[(key>>16)&3];
-
- aux = BITSWAP16(cipherText,
- pbox[15],pbox[14],pbox[13],pbox[12],pbox[11],pbox[10],pbox[9],pbox[8],
- pbox[7],pbox[6],pbox[5],pbox[4],pbox[3],pbox[2],pbox[1],pbox[0]);
- aux = aux ^ BITSWAP16(address/2, 13,5,2, 14,10,9,4, 15,11,6,1, 12,8,7,3,0);
-
- b0 = aux&0x1f;
- b1 = (aux>>5)&0xf;
- b2 = (aux>>9)&0xf;
- b3 = aux>>13;
-
- b0 = ss->S0[b0];
- b1 = ss->S1[b1];
- b2 = ss->S2[b2];
- b3 = ss->S3[b3];
-
- return ((b3<<13)|(b2<<9)|(b1<<5)|b0)^(key&0xffff);
-}
-
-
-/*
-We are using 20 bits keys with the following subfields' structure:
-bits 0-15 is a 16-bits XOR
-bits 17-16 is a index to the sboxes table
-bits 19-18 is a index to the permutation table
-
-These subfields could be differing from the "real" ones in the following ways:
-- Every one of the index subfields could be suffering an arbitrary bitswap and XOR
-- The 16-bits-XOR subfield could suffer an arbitrary XOR which could depend on the 4 index bits (that is: a different XOR per every index combination)
-- Of course, the way in which we are mixing 3 subfields in one only key is arbitrary too.
-*/
-
-
-static const UINT32 sprtshot_key = 0x00000;
-static const UINT32 rangrmsn_key = 0x50000;
-static const UINT32 fotns_key = 0x93627;
-static const UINT32 xtrmhunt_key = 0x80000;
-static const UINT32 xtrmhnt2_key = 0xc194f;
-static const UINT32 dolphin_key = 0x1a1e8;
-static const UINT32 demofist_key = 0x60000;
-static const UINT32 rumblef_key = 0x4194f;
-static const UINT32 ngbc_key = 0x42255;
-static const UINT32 kofnw_key = 0x6b3bf;
-static const UINT32 kov7sprt_key = 0xf0000;
-static const UINT32 ggisuka_key = 0x8b10a;
-static const UINT32 vfurlong_key = 0xa547a;
-static const UINT32 salmankt_key = 0x34b74;
-static const UINT32 maxspeed_key = 0x28dd6;
-static const UINT32 ftspeed_key = 0x0762f;
-static const UINT32 kofxi_key = 0xa4be3;
-static const UINT32 dirtypig_key = 0xc194f;
-static const UINT32 mslug6_key = 0x53627;
-static const UINT32 samsptk_key = 0xe935f;
-static const UINT32 ggx15_key = 0x91257;
-static const UINT32 rumblef2_key = 0xd674a;
-static const UINT32 anmlbskt_key = 0x12c3e;
-
static DRIVER_INIT( atomiswave )
{
UINT64 *ROM = (UINT64 *)machine.region("awflash")->base();
-#if 0
- UINT8 *dcdata = (UINT8 *)machine.region("user1")->base();
- FILE *f;
- f = fopen("aw.bin", "wb");
- fwrite(dcdata, 0x8000000, 1, f);
- fclose(f);
-#endif
// patch out long startup delay
ROM[0x98e/8] = (ROM[0x98e/8] & U64(0xffffffffffff)) | (UINT64)0x0009<<48;
awflash = machine.device<macronix_29l001mc_device>("awflash");
}
-#define AW_DRIVER_INIT(DRIVER) \
-static DRIVER_INIT(DRIVER) \
-{ \
- int i; \
- UINT16 *src = (UINT16 *)(machine.region("user1")->base()); \
- int rom_size = machine.region("user1")->bytes(); \
- for(i=0; i<rom_size/2; i++) \
- { \
- src[i] = atomiswave_decrypt(src[i], i*2, DRIVER##_key); \
- } \
- DRIVER_INIT_CALL(atomiswave); \
-}
-
-AW_DRIVER_INIT(fotns)
-AW_DRIVER_INIT(demofist)
-AW_DRIVER_INIT(sprtshot)
-AW_DRIVER_INIT(rangrmsn)
-AW_DRIVER_INIT(xtrmhunt)
-AW_DRIVER_INIT(xtrmhnt2)
-AW_DRIVER_INIT(dolphin)
-AW_DRIVER_INIT(rumblef)
-AW_DRIVER_INIT(ngbc)
-AW_DRIVER_INIT(kofxi)
-AW_DRIVER_INIT(kofnw)
-AW_DRIVER_INIT(kov7sprt)
-AW_DRIVER_INIT(ggisuka)
-AW_DRIVER_INIT(vfurlong)
-AW_DRIVER_INIT(salmankt)
-AW_DRIVER_INIT(maxspeed)
-AW_DRIVER_INIT(ftspeed)
-AW_DRIVER_INIT(dirtypig)
-AW_DRIVER_INIT(mslug6)
-AW_DRIVER_INIT(samsptk)
-AW_DRIVER_INIT(ggx15)
-AW_DRIVER_INIT(rumblef2)
-AW_DRIVER_INIT(anmlbskt)
-
ROM_START( fotns )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
- ROM_LOAD("ax1901p01.ic18", 0x0000000, 0x0800000, CRC(a06998b0) SHA1(d617691db5170f6db176e40fc732966d523fd8cf) )
- ROM_LOAD("ax1901m01.ic11", 0x1000000, 0x1000000, CRC(ff5a1642) SHA1(49cefcce173f9a811fe9c0c07bee53aeba2bc3a8) )
- ROM_LOAD("ax1902m01.ic12", 0x2000000, 0x1000000, CRC(d9aae8a9) SHA1(bf87034088be0847b6e297b7665e0ea4d8cba631) )
- ROM_LOAD("ax1903m01.ic13", 0x3000000, 0x1000000, CRC(1711b23d) SHA1(ab628b2ec678839c75245e245297818ef1592d3b) )
- ROM_LOAD("ax1904m01.ic14", 0x4000000, 0x1000000, CRC(443bfb26) SHA1(6f7751afa0ca55dd0679758b27bed92b31c1b050) )
- ROM_LOAD("ax1905m01.ic15", 0x5000000, 0x1000000, CRC(eb1cada0) SHA1(459d21d622c72606f1d3095e8a25b6c4adccf8ab) )
- ROM_LOAD("ax1906m01.ic16", 0x6000000, 0x1000000, CRC(fe6da168) SHA1(d4ab6443383469bb5a4337005de917627a2e21cc) )
- ROM_LOAD("ax1907m01.ic17", 0x7000000, 0x1000000, CRC(9d3a0520) SHA1(78583fd171b34439f77a04a97ebe3c9d1bab61cc) )
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax1901p01.ic18", 0x0000000, 0x0800000, CRC(a06998b0) SHA1(d617691db5170f6db176e40fc732966d523fd8cf) )
+ ROM_LOAD( "ax1901m01.ic11", 0x1000000, 0x1000000, CRC(ff5a1642) SHA1(49cefcce173f9a811fe9c0c07bee53aeba2bc3a8) )
+ ROM_LOAD( "ax1902m01.ic12", 0x2000000, 0x1000000, CRC(d9aae8a9) SHA1(bf87034088be0847b6e297b7665e0ea4d8cba631) )
+ ROM_LOAD( "ax1903m01.ic13", 0x3000000, 0x1000000, CRC(1711b23d) SHA1(ab628b2ec678839c75245e245297818ef1592d3b) )
+ ROM_LOAD( "ax1904m01.ic14", 0x4000000, 0x1000000, CRC(443bfb26) SHA1(6f7751afa0ca55dd0679758b27bed92b31c1b050) )
+ ROM_LOAD( "ax1905m01.ic15", 0x5000000, 0x1000000, CRC(eb1cada0) SHA1(459d21d622c72606f1d3095e8a25b6c4adccf8ab) )
+ ROM_LOAD( "ax1906m01.ic16", 0x6000000, 0x1000000, CRC(fe6da168) SHA1(d4ab6443383469bb5a4337005de917627a2e21cc) )
+ ROM_LOAD( "ax1907m01.ic17", 0x7000000, 0x1000000, CRC(9d3a0520) SHA1(78583fd171b34439f77a04a97ebe3c9d1bab61cc) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax1901f01.bin", 0, 4, CRC(0283c08d) SHA1(5d62b6769ae7f1fc68bd3db028d782621aaa6f9c) )
ROM_END
ROM_START( rangrmsn )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "ax1601p01.ic18", 0x0000000, 0x0800000, CRC(00a74fbb) SHA1(57cc1eedd22d1f553956a825e69a597309ee2bef) )
- ROM_LOAD( "ax1601m01.ic11", 0x1000000, 0x1000000, CRC(f34eed33) SHA1(1c171fb8aa95877f81ed78652d4a9ff80f7713ff) )
- ROM_LOAD( "ax1602m01.ic12", 0x2000000, 0x1000000, CRC(a7d59efb) SHA1(a40938ce1399babefc8cf02f579a86cf08e211ef) )
- ROM_LOAD( "ax1603m01.ic13", 0x3000000, 0x1000000, CRC(7c0aa241) SHA1(3e0e5ff3307dcfa52998fb9b4b14bf54bd056a99) )
- ROM_LOAD( "ax1604m01.ic14", 0x4000000, 0x1000000, CRC(d2369144) SHA1(da1eae9957d27d1682c4191780cf51b32dfe6659) )
- ROM_LOAD( "ax1605m01.ic15", 0x5000000, 0x1000000, CRC(0c11c1f9) SHA1(0585db60618c5b97f9b7c203baf7e5ac90883ca6) )
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax1601p01.ic18", 0x0000000, 0x0800000, CRC(00a74fbb) SHA1(57cc1eedd22d1f553956a825e69a597309ee2bef) )
+ ROM_LOAD( "ax1601m01.ic11", 0x1000000, 0x1000000, CRC(f34eed33) SHA1(1c171fb8aa95877f81ed78652d4a9ff80f7713ff) )
+ ROM_LOAD( "ax1602m01.ic12", 0x2000000, 0x1000000, CRC(a7d59efb) SHA1(a40938ce1399babefc8cf02f579a86cf08e211ef) )
+ ROM_LOAD( "ax1603m01.ic13", 0x3000000, 0x1000000, CRC(7c0aa241) SHA1(3e0e5ff3307dcfa52998fb9b4b14bf54bd056a99) )
+ ROM_LOAD( "ax1604m01.ic14", 0x4000000, 0x1000000, CRC(d2369144) SHA1(da1eae9957d27d1682c4191780cf51b32dfe6659) )
+ ROM_LOAD( "ax1605m01.ic15", 0x5000000, 0x1000000, CRC(0c11c1f9) SHA1(0585db60618c5b97f9b7c203baf7e5ac90883ca6) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax1601f01.bin", 0, 4, CRC(278f1df7) SHA1(bf3e92e0b19dc1604b764382b859e73158d18025) )
ROM_END
ROM_START( sprtshot )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "ax0101p01.ic18", 0x0000000, 0x0800000, CRC(b3642b5d) SHA1(85eabd9551aefb825ae8eb6422092fb5a58d60f6) )
- ROM_LOAD( "ax0101m01.ic11", 0x1000000, 0x1000000, CRC(1e39184d) SHA1(663e0cb9f43a0f89d9841e04b3d009f6c5e88d5e) )
- ROM_LOAD( "ax0102m01.ic12", 0x2000000, 0x1000000, CRC(700764d1) SHA1(310f1606f7bbed1012c119f1ef5d89d231d8489e) )
- ROM_LOAD( "ax0103m01.ic13", 0x3000000, 0x1000000, CRC(6144e7a8) SHA1(4d4341082f008dfd93ef5bf32a44c80869ef02a8) )
- ROM_LOAD( "ax0104m01.ic14", 0x4000000, 0x1000000, CRC(ccb72150) SHA1(a1032d321c27f9ff43da41f20b8687bf1958ddc9) )
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax0101p01.ic18", 0x0000000, 0x0800000, CRC(b3642b5d) SHA1(85eabd9551aefb825ae8eb6422092fb5a58d60f6) )
+ ROM_LOAD( "ax0101m01.ic11", 0x1000000, 0x1000000, CRC(1e39184d) SHA1(663e0cb9f43a0f89d9841e04b3d009f6c5e88d5e) )
+ ROM_LOAD( "ax0102m01.ic12", 0x2000000, 0x1000000, CRC(700764d1) SHA1(310f1606f7bbed1012c119f1ef5d89d231d8489e) )
+ ROM_LOAD( "ax0103m01.ic13", 0x3000000, 0x1000000, CRC(6144e7a8) SHA1(4d4341082f008dfd93ef5bf32a44c80869ef02a8) )
+ ROM_LOAD( "ax0104m01.ic14", 0x4000000, 0x1000000, CRC(ccb72150) SHA1(a1032d321c27f9ff43da41f20b8687bf1958ddc9) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax0101f01.bin", 0, 4, CRC(2144df1c) SHA1(9069ca78e7450a285173431b3e52c5c25299e473) )
ROM_END
ROM_START( xtrmhunt )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
- ROM_LOAD("ax2401p01.ic18", 0x0000000, 0x0800000, CRC(8e2a11f5) SHA1(b5106314fb8d4483254e83ac3982039bb60a78e8) )
- ROM_LOAD("ax2401m01.ic11", 0x1000000, 0x1000000, CRC(76dbc286) SHA1(8f36ca94b8e67c76e0f90b21debc5ac7890f0da1) )
- ROM_LOAD("ax2402m01.ic12", 0x2000000, 0x1000000, CRC(cd590ea2) SHA1(ee5e38bf68e95da665be478ebba9cc5ffed52bb7) )
- ROM_LOAD("ax2403m01.ic13", 0x3000000, 0x1000000, CRC(06f62eb5) SHA1(f7e8d1dda6bb59ca2bc7cfa1105889b9e8e6d55d) )
- ROM_LOAD("ax2404m01.ic14", 0x4000000, 0x1000000, CRC(759ef5cb) SHA1(27ac2d12c6fb358b3d631c017c7b693e5ad95fd7) )
- ROM_LOAD("ax2405m01.ic15", 0x5000000, 0x1000000, CRC(940d77f1) SHA1(eefdfcb92873032dc7d9ff9310bf5ed715c8bf4f) )
- ROM_LOAD("ax2406m01.ic16", 0x6000000, 0x1000000, CRC(cbcf2c5d) SHA1(61362fabcbb3bfc01c996748a7ca65f8a0e02f2f) )
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax2401p01.ic18", 0x0000000, 0x0800000, CRC(8e2a11f5) SHA1(b5106314fb8d4483254e83ac3982039bb60a78e8) )
+ ROM_LOAD( "ax2401m01.ic11", 0x1000000, 0x1000000, CRC(76dbc286) SHA1(8f36ca94b8e67c76e0f90b21debc5ac7890f0da1) )
+ ROM_LOAD( "ax2402m01.ic12", 0x2000000, 0x1000000, CRC(cd590ea2) SHA1(ee5e38bf68e95da665be478ebba9cc5ffed52bb7) )
+ ROM_LOAD( "ax2403m01.ic13", 0x3000000, 0x1000000, CRC(06f62eb5) SHA1(f7e8d1dda6bb59ca2bc7cfa1105889b9e8e6d55d) )
+ ROM_LOAD( "ax2404m01.ic14", 0x4000000, 0x1000000, CRC(759ef5cb) SHA1(27ac2d12c6fb358b3d631c017c7b693e5ad95fd7) )
+ ROM_LOAD( "ax2405m01.ic15", 0x5000000, 0x1000000, CRC(940d77f1) SHA1(eefdfcb92873032dc7d9ff9310bf5ed715c8bf4f) )
+ ROM_LOAD( "ax2406m01.ic16", 0x6000000, 0x1000000, CRC(cbcf2c5d) SHA1(61362fabcbb3bfc01c996748a7ca65f8a0e02f2f) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax2401f01.bin", 0, 4, CRC(2f578ea4) SHA1(6775daa4b4081186905cc20f56df0f8ab147428b) )
ROM_END
ROM_START( xtrmhnt2 )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "610-0752.u3", 0x0000000, 0x1000000, CRC(bab6182e) SHA1(4d25256c81941316887cbb4524a203922f5b7104) )
- ROM_LOAD( "610-0752.u1", 0x1000000, 0x1000000, CRC(3086bc47) SHA1(eb7b04db90d296985528f0cfdd4545f184c40b64) )
- ROM_LOAD( "610-0752.u2", 0x2000000, 0x1000000, CRC(d3a88b31) SHA1(ccf14367e4e7efbc2cc835f3b001fd6d64302a5e) )
- ROM_LOAD( "610-0752.u4", 0x3000000, 0x1000000, CRC(9787f145) SHA1(8445ede0477f70fbdc113810b80356945ce498d2) )
- ROM_LOAD( "610-0752.u14", 0x4000000, 0x1000000, CRC(ce83bcc7) SHA1(e2d324a5a7eacbec7b0df9a4b9e276521bb9ab80) )
- ROM_LOAD( "610-0752.u15", 0x5000000, 0x1000000, CRC(864a6342) SHA1(fb97532d5dd00f8520fdaf68dfcd1ea627bdf90a) )
- ROM_LOAD( "610-0752.u16", 0x6000000, 0x1000000, CRC(8ac71c76) SHA1(080e41e633bf082fc536781541c6031d1ac81939) )
- ROM_LOAD( "610-0752.u17", 0x7000000, 0x1000000, CRC(a79fb1fa) SHA1(f75c5b574fd79677b926c595b369e95605a3c848) )
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "610-0752.u3", 0x0000000, 0x1000000, CRC(bab6182e) SHA1(4d25256c81941316887cbb4524a203922f5b7104) )
+ ROM_LOAD( "610-0752.u1", 0x1000000, 0x1000000, CRC(3086bc47) SHA1(eb7b04db90d296985528f0cfdd4545f184c40b64) )
+ ROM_LOAD( "610-0752.u2", 0x2000000, 0x1000000, CRC(d3a88b31) SHA1(ccf14367e4e7efbc2cc835f3b001fd6d64302a5e) )
+ ROM_LOAD( "610-0752.u4", 0x3000000, 0x1000000, CRC(9787f145) SHA1(8445ede0477f70fbdc113810b80356945ce498d2) )
+ ROM_LOAD( "610-0752.u14", 0x4000000, 0x1000000, CRC(ce83bcc7) SHA1(e2d324a5a7eacbec7b0df9a4b9e276521bb9ab80) )
+ ROM_LOAD( "610-0752.u15", 0x5000000, 0x1000000, CRC(864a6342) SHA1(fb97532d5dd00f8520fdaf68dfcd1ea627bdf90a) )
+ ROM_LOAD( "610-0752.u16", 0x6000000, 0x1000000, CRC(8ac71c76) SHA1(080e41e633bf082fc536781541c6031d1ac81939) )
+ ROM_LOAD( "610-0752.u17", 0x7000000, 0x1000000, CRC(a79fb1fa) SHA1(f75c5b574fd79677b926c595b369e95605a3c848) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "315-6248.bin", 0, 4, CRC(553dd361) SHA1(a60a26b5ee786cf0bb3d09bb6f00374598fbd7cc) )
ROM_REGION( 0x1400000, "network", 0) // network board
- ROM_LOAD( "fpr-24330a.ic2", 0x000000, 0x400000, CRC(8d89877e) SHA1(6caafc49114eb0358e217bc2d1a3ab58a93c8d19) )
- ROM_LOAD( "flash128.ic4s", 0x400000, 0x1000000, CRC(866ed675) SHA1(2c4c06935b7ab1876e640cede51713b841833567) )
+ ROM_LOAD( "fpr-24330a.ic2", 0x000000, 0x400000, CRC(8d89877e) SHA1(6caafc49114eb0358e217bc2d1a3ab58a93c8d19) )
+ ROM_LOAD( "flash128.ic4s", 0x400000, 0x1000000, CRC(866ed675) SHA1(2c4c06935b7ab1876e640cede51713b841833567) )
ROM_END
ROM_START( anmlbskt )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
@@ -7366,26 +7166,30 @@ ROM_START( anmlbskt )
ROM_LOAD( "vm2001f01.u15", 0x5000000, 0x800000, CRC(2bb1be28) SHA1(fda7967d6c0341a608c52087ae3d461554760435) )
ROM_LOAD( "vm2001f01.u16", 0x6000000, 0x800000, CRC(3de23e27) SHA1(d3aae2a7e5c78fc3bf8e296392d8f893961d946f) )
ROM_LOAD( "vm2001f01.u17", 0x7000000, 0x800000, CRC(3de23e27) SHA1(d3aae2a7e5c78fc3bf8e296392d8f893961d946f) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax0401f01.bin", 0, 4, CRC(394b52c9) SHA1(aa05d82e7c384f536cf68af48b5c0eb89e6f5dfa) )
ROM_END
ROM_START( dolphin )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
ROM_LOAD( "ax0401p01.ic18", 0x0000000, 0x0800000, CRC(195d6328) SHA1(cf3b5699f81235919dd3b1974d2ecb0376cb4552) )
ROM_LOAD( "ax0401m01.ic11", 0x1000000, 0x1000000, CRC(5e5dca57) SHA1(e0623c84f66cada37d4c9399a7a8fc6866933144) )
ROM_LOAD( "ax0402m01.ic12", 0x2000000, 0x1000000, CRC(77dd4771) SHA1(dcd23b8ddc82eab2f325266ffd7ed3fbc1bcdf71) )
ROM_LOAD( "ax0403m01.ic13", 0x3000000, 0x1000000, CRC(911d0674) SHA1(eec35badcfbfe412b7104a86c2111f5a1b5fb5cd) )
ROM_LOAD( "ax0404m01.ic14", 0x4000000, 0x1000000, CRC(f82a4ca3) SHA1(da686d86e176a9f24874d2916b1932f03a99a52d) )
ROM_LOAD( "ax0405m01.ic15", 0x5000000, 0x1000000, CRC(b88298d7) SHA1(490c3ec471018895b7268ee33498dddaccbbfd5a) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax0401f01.bin", 0, 4, CRC(394b52c9) SHA1(aa05d82e7c384f536cf68af48b5c0eb89e6f5dfa) )
ROM_END
ROM_START( demofist )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
ROM_LOAD( "ax0601p01.ic18", 0x0000000, 0x0800000, CRC(0efb38ad) SHA1(9400e37efe3e936474d74400ebdf28ad0869b67b) )
ROM_LOAD( "ax0601m01.ic11", 0x1000000, 0x1000000, CRC(12fda2c7) SHA1(3afbac221ffe249386e4cb50b4edd013d9a40062) )
ROM_LOAD( "ax0602m01.ic12", 0x2000000, 0x1000000, CRC(aea61fdf) SHA1(0a088848bbf7a47df8b44b69bf72ed0d4a1088f8) )
@@ -7394,13 +7198,15 @@ ROM_START( demofist )
ROM_LOAD( "ax0605m01.ic15", 0x5000000, 0x1000000, CRC(18d8437e) SHA1(fe2e189e40a89141335e754268d29d46e3eb3bb8) )
ROM_LOAD( "ax0606m01.ic16", 0x6000000, 0x1000000, CRC(42c81617) SHA1(1cc686af5e3fc56143836e3dcc0067893f82fcf9) )
ROM_LOAD( "ax0607m01.ic17", 0x7000000, 0x1000000, CRC(96e5aa84) SHA1(e9841f550f2ef409d97004542bcadabb6b9e84af) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax0601f01.bin", 0, 4, CRC(25c9a3ae) SHA1(060c3fa1f8cd7d41785630db22e107790ade702a) )
ROM_END
ROM_START( rumblef )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
ROM_LOAD( "ax1801p01.ic18", 0x0000000, 0x0800000, CRC(2f7fb163) SHA1(bf819d798d9a3a7bc754e111a3f53b9db6d6042a) )
ROM_LOAD( "ax1801m01.ic11", 0x1000000, 0x1000000, CRC(c38aa61c) SHA1(e2f688a0aa8b0119f5fd3d53c8904e035d43a4b1) )
ROM_LOAD( "ax1802m01.ic12", 0x2000000, 0x1000000, CRC(72e0ebc8) SHA1(e85300a405ea14c4c9d857eb9685c93faaca1d56) )
@@ -7409,13 +7215,15 @@ ROM_START( rumblef )
ROM_LOAD( "ax1805m01.ic15", 0x5000000, 0x1000000, CRC(3d3f8e0d) SHA1(364a0bda890722b9fb72171f96c742b8f3fef23e) )
ROM_LOAD( "ax1806m01.ic16", 0x6000000, 0x1000000, CRC(ac2751bb) SHA1(5070fa12bf109ab87e8f7ea46ac4ae78a73105da) )
ROM_LOAD( "ax1807m01.ic17", 0x7000000, 0x1000000, CRC(3b2fbdb0) SHA1(f9f7e06785d3a07282247aaedd9999aa7c2670b9) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax1801f01.bin", 0, 4, CRC(1) SHA1(1))
ROM_END
ROM_START( ngbc )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0xf000000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0xf000000, "rom_board", ROMREGION_ERASE)
ROM_LOAD( "ax3301p01.fmem1", 0x0000000, 0x0800000, CRC(6dd78275) SHA1(72d4cab58dbcebd666db21aeef190378ef447580) )
ROM_LOAD( "ax3301m01.mrom1", 0x1000000, 0x2000000, CRC(e6013de9) SHA1(ccbc7c2e76153348646d75938d5c008dc80df17d) )
ROM_LOAD( "ax3301m01.mrom2", 0x3000000, 0x2000000, CRC(f7cfef6c) SHA1(c9e6231499a9c9c8650d9e61f34ff1fcce8d442c) )
@@ -7424,13 +7232,15 @@ ROM_START( ngbc )
ROM_LOAD( "ax3301m01.mrom5", 0x9000000, 0x2000000, CRC(f6668aaa) SHA1(6a78f8f0c7d7a71854ff87329290d38970cfb476) )
ROM_LOAD( "ax3301m01.mrom6", 0xb000000, 0x2000000, CRC(5cf32fbd) SHA1(b6ae0abe5791b3d6f8db07b8c8ca22219a153801) )
ROM_LOAD( "ax3301m01.mrom7", 0xd000000, 0x2000000, CRC(26d9da53) SHA1(0015b4be670005a451274de68279b4302fc42a97) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax3301f01.bin", 0, 4, CRC(9afe949b) SHA1(4f7b039f3287da61a53a2d012993bfb57e1459bd) )
ROM_END
ROM_START( kofnw )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
ROM_LOAD( "ax2201p01.ic18", 0x0000000, 0x0800000, CRC(27aab918) SHA1(41c5ddd8bd4c91481750606ab44aa115b5fe01d0) )
ROM_LOAD( "ax2201m01.ic11", 0x1000000, 0x1000000, CRC(22ea665b) SHA1(292c92c9ae43eea2d1c27cedfb89c3956b8dea32) )
ROM_LOAD( "ax2202m01.ic12", 0x2000000, 0x1000000, CRC(7fad1bea) SHA1(89f3f88af48973a4685955d86ef97a1487b8e7a8) )
@@ -7438,159 +7248,181 @@ ROM_START( kofnw )
ROM_LOAD( "ax2204m01.ic14", 0x4000000, 0x1000000, CRC(6ffbeb04) SHA1(975062cf364589dbdd5c5cb5ca945f76d87fc120) )
ROM_LOAD( "ax2205m01.ic15", 0x5000000, 0x1000000, CRC(2851b791) SHA1(566ef95ea066b7bf548986085670242be217befc) )
ROM_LOAD( "ax2206m01.ic16", 0x6000000, 0x1000000, CRC(e53eb965) SHA1(f50cd53a5859f081d8a278d24a519c9d9b49ab96) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax2201f01.bin", 0, 4, CRC(b1fff0c8) SHA1(d83177e3672378a2bbc08653b4b73704333ca30a) )
ROM_END
ROM_START( kofnwj )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "ax2201p01.ic18", 0x0000000, 0x0800000, CRC(ecc4a5c7) SHA1(97c2ef2be95b39bc978474a8243740df50255a8b) )
- /* these are taken from the above set, game *seems* to work fine with these ... */
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax2201p01.ic18", 0x0000000, 0x0800000, CRC(ecc4a5c7) SHA1(97c2ef2be95b39bc978474a8243740df50255a8b) )
+ /* these are taken from the above set, game *seems* to work fine with these ... */
ROM_LOAD( "ax2201m01.ic11", 0x1000000, 0x1000000, CRC(22ea665b) SHA1(292c92c9ae43eea2d1c27cedfb89c3956b8dea32) )
ROM_LOAD( "ax2202m01.ic12", 0x2000000, 0x1000000, CRC(7fad1bea) SHA1(89f3f88af48973a4685955d86ef97a1487b8e7a8) )
ROM_LOAD( "ax2203m01.ic13", 0x3000000, 0x1000000, CRC(78986ca4) SHA1(5a6c8c12955573f33361d2c6f20f85de35ac7bae) )
ROM_LOAD( "ax2204m01.ic14", 0x4000000, 0x1000000, CRC(6ffbeb04) SHA1(975062cf364589dbdd5c5cb5ca945f76d87fc120) )
ROM_LOAD( "ax2205m01.ic15", 0x5000000, 0x1000000, CRC(2851b791) SHA1(566ef95ea066b7bf548986085670242be217befc) )
ROM_LOAD( "ax2206m01.ic16", 0x6000000, 0x1000000, CRC(e53eb965) SHA1(f50cd53a5859f081d8a278d24a519c9d9b49ab96) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax2201f01.bin", 0, 4, CRC(b1fff0c8) SHA1(d83177e3672378a2bbc08653b4b73704333ca30a) )
ROM_END
ROM_START( kov7sprt )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "ax1301p01.ic18", 0x0000000, 0x0800000, CRC(6833a334) SHA1(646aaa578e09ad23bc9c7f4fbdfb3c1486916fd3) )
- ROM_LOAD( "ax1301m01.ic11", 0x1000000, 0x1000000, CRC(58ae7ca1) SHA1(e91975697b797ea05488ace649cbb9964b4cd500) )
- ROM_LOAD( "ax1301m02.ic12", 0x2000000, 0x1000000, CRC(871ea03f) SHA1(6806910832ca271a9240aca8e91279556e5b0cb7) )
- ROM_LOAD( "ax1301m03.ic13", 0x3000000, 0x1000000, CRC(abc328bc) SHA1(d9271d4e5abe76d31de0f60a5c106260338d42e9) )
- ROM_LOAD( "ax1301m04.ic14", 0x4000000, 0x1000000, CRC(25a176d1) SHA1(6d815bf6acb645fead060733660e24fb0d44282d) )
- ROM_LOAD( "ax1301m05.ic15", 0x5000000, 0x1000000, CRC(e6573a93) SHA1(0666e52d0088263f28938e4c8aae201e604ec1f2) )
- ROM_LOAD( "ax1301m06.ic16", 0x6000000, 0x1000000, CRC(cb8cacb4) SHA1(5d008e8a934451b9bfa33fedfd492c86d9226ef5) )
- ROM_LOAD( "ax1301m07.ic17", 0x7000000, 0x1000000, CRC(0ca92213) SHA1(115c50fa55e6de3439de23e74621695510c6a7ba) )
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax1301p01.ic18", 0x0000000, 0x0800000, CRC(6833a334) SHA1(646aaa578e09ad23bc9c7f4fbdfb3c1486916fd3) )
+ ROM_LOAD( "ax1301m01.ic11", 0x1000000, 0x1000000, CRC(58ae7ca1) SHA1(e91975697b797ea05488ace649cbb9964b4cd500) )
+ ROM_LOAD( "ax1301m02.ic12", 0x2000000, 0x1000000, CRC(871ea03f) SHA1(6806910832ca271a9240aca8e91279556e5b0cb7) )
+ ROM_LOAD( "ax1301m03.ic13", 0x3000000, 0x1000000, CRC(abc328bc) SHA1(d9271d4e5abe76d31de0f60a5c106260338d42e9) )
+ ROM_LOAD( "ax1301m04.ic14", 0x4000000, 0x1000000, CRC(25a176d1) SHA1(6d815bf6acb645fead060733660e24fb0d44282d) )
+ ROM_LOAD( "ax1301m05.ic15", 0x5000000, 0x1000000, CRC(e6573a93) SHA1(0666e52d0088263f28938e4c8aae201e604ec1f2) )
+ ROM_LOAD( "ax1301m06.ic16", 0x6000000, 0x1000000, CRC(cb8cacb4) SHA1(5d008e8a934451b9bfa33fedfd492c86d9226ef5) )
+ ROM_LOAD( "ax1301m07.ic17", 0x7000000, 0x1000000, CRC(0ca92213) SHA1(115c50fa55e6de3439de23e74621695510c6a7ba) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax1301f01.bin", 0, 4, CRC(2a189821) SHA1(d15c9df83782d49ea85e201cba844f5a9e33f15c) )
ROM_END
ROM_START( ggisuka )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x9000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "ax1201p01.ic18", 0x0000000, 0x0800000, CRC(0a78d52c) SHA1(e9006dc43cd11d5ba49a092a1dff31dc10700c28) )
- ROM_LOAD( "ax1201m01.ic10", 0x0800000, 0x1000000, CRC(df96ce30) SHA1(25a9f743b1c2b11896d0c7a2dc1c198fc977aaca) ) // second half is blank
- ROM_LOAD( "ax1202m01.ic11", 0x1000000, 0x1000000, CRC(dfc6fd67) SHA1(f9d35b18a03d22f70feda42d314b0f9dd54eea55) )
- ROM_LOAD( "ax1203m01.ic12", 0x2000000, 0x1000000, CRC(bf623df9) SHA1(8b9a8e8100ff6d2ce9a982ab8eb1d542f1c7af03) )
- ROM_LOAD( "ax1204m01.ic13", 0x3000000, 0x1000000, CRC(c80c3930) SHA1(5c39fde36e2ebbfe72967d7d0202eb454a8d3bbe) )
- ROM_LOAD( "ax1205m01.ic14", 0x4000000, 0x1000000, CRC(e99a269d) SHA1(a52148b82b0338b8bad8b52985302eaf81a4cfde) )
- ROM_LOAD( "ax1206m01.ic15", 0x5000000, 0x1000000, CRC(807ab795) SHA1(17c86b1a56333c05b68ff84f83e964d013c1819c) )
- ROM_LOAD( "ax1207m01.ic16", 0x6000000, 0x1000000, CRC(6636d1b8) SHA1(9bd8fc114557f6fbe772f85eeb246f7336d4255e) )
- ROM_LOAD( "ax1208m01.ic17", 0x7000000, 0x1000000, CRC(38bda476) SHA1(0234a6f5fbaf5e958b3ba0db311dff157f80addc) )
+ ROM_REGION( 0x9000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax1201p01.ic18", 0x0000000, 0x0800000, CRC(0a78d52c) SHA1(e9006dc43cd11d5ba49a092a1dff31dc10700c28) )
+ ROM_LOAD( "ax1201m01.ic10", 0x0800000, 0x1000000, CRC(df96ce30) SHA1(25a9f743b1c2b11896d0c7a2dc1c198fc977aaca) ) // second half is blank
+ ROM_LOAD( "ax1202m01.ic11", 0x1000000, 0x1000000, CRC(dfc6fd67) SHA1(f9d35b18a03d22f70feda42d314b0f9dd54eea55) )
+ ROM_LOAD( "ax1203m01.ic12", 0x2000000, 0x1000000, CRC(bf623df9) SHA1(8b9a8e8100ff6d2ce9a982ab8eb1d542f1c7af03) )
+ ROM_LOAD( "ax1204m01.ic13", 0x3000000, 0x1000000, CRC(c80c3930) SHA1(5c39fde36e2ebbfe72967d7d0202eb454a8d3bbe) )
+ ROM_LOAD( "ax1205m01.ic14", 0x4000000, 0x1000000, CRC(e99a269d) SHA1(a52148b82b0338b8bad8b52985302eaf81a4cfde) )
+ ROM_LOAD( "ax1206m01.ic15", 0x5000000, 0x1000000, CRC(807ab795) SHA1(17c86b1a56333c05b68ff84f83e964d013c1819c) )
+ ROM_LOAD( "ax1207m01.ic16", 0x6000000, 0x1000000, CRC(6636d1b8) SHA1(9bd8fc114557f6fbe772f85eeb246f7336d4255e) )
+ ROM_LOAD( "ax1208m01.ic17", 0x7000000, 0x1000000, CRC(38bda476) SHA1(0234a6f5fbaf5e958b3ba0db311dff157f80addc) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax1201f01.bin", 0, 4, CRC(325cf843) SHA1(c51d19a4fce37433f37e7ce23801a7fc4e09013d) )
ROM_END
ROM_START( maxspeed )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x9000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "ax0501p01.ic18", 0x0000000, 0x0800000, CRC(e1651867) SHA1(49caf82f4b111da312b14bb0a9c31e3732b4b24e) )
- ROM_LOAD( "ax0501m01.ic11", 0x0800000, 0x1000000, CRC(4a847a59) SHA1(7808bcd357b85861082b426dbe34a20ae7016f6a) )
- ROM_LOAD( "ax0502m01.ic12", 0x1000000, 0x1000000, CRC(2580237f) SHA1(2e92c940f95edae33d6a7e8a071544a9083a0fd6) )
- ROM_LOAD( "ax0503m01.ic13", 0x2000000, 0x1000000, CRC(e5a3766b) SHA1(1fe6e072adad27ac43c0bff04e3c448678aabc18) )
- ROM_LOAD( "ax0504m01.ic14", 0x3000000, 0x1000000, CRC(7955b55a) SHA1(927f58d6961e702c2a8afce79bac5e5cff3dfed6) )
- ROM_LOAD( "ax0505m01.ic15", 0x4000000, 0x1000000, CRC(e8ccc660) SHA1(a5f414f200a0d41e958430d0fc2d4e1fda1cc67c) )
+ ROM_REGION( 0x9000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax0501p01.ic18", 0x0000000, 0x0800000, CRC(e1651867) SHA1(49caf82f4b111da312b14bb0a9c31e3732b4b24e) )
+ ROM_LOAD( "ax0501m01.ic11", 0x0800000, 0x1000000, CRC(4a847a59) SHA1(7808bcd357b85861082b426dbe34a20ae7016f6a) )
+ ROM_LOAD( "ax0502m01.ic12", 0x1000000, 0x1000000, CRC(2580237f) SHA1(2e92c940f95edae33d6a7e8a071544a9083a0fd6) )
+ ROM_LOAD( "ax0503m01.ic13", 0x2000000, 0x1000000, CRC(e5a3766b) SHA1(1fe6e072adad27ac43c0bff04e3c448678aabc18) )
+ ROM_LOAD( "ax0504m01.ic14", 0x3000000, 0x1000000, CRC(7955b55a) SHA1(927f58d6961e702c2a8afce79bac5e5cff3dfed6) )
+ ROM_LOAD( "ax0505m01.ic15", 0x4000000, 0x1000000, CRC(e8ccc660) SHA1(a5f414f200a0d41e958430d0fc2d4e1fda1cc67c) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax0501f01.bin", 0, 4, CRC(c35d9a95) SHA1(bf260caf33821be51014b06480a11ec982fa4fcd) )
ROM_END
ROM_START( vfurlong )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x9000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "ax2001p01.ic18", 0x0000000, 0x0800000, CRC(17ea9aa9) SHA1(c68500e9b3407a9d4b20f2678718ce475f179f7d) )
- ROM_LOAD( "ax2001m01.ic11", 0x1000000, 0x1000000, CRC(64460b24) SHA1(044857d6593897d303622e005a63ca7b3acd7453) )
- ROM_LOAD( "ax2002m01.ic12", 0x2000000, 0x1000000, CRC(d4da357f) SHA1(c462cddec9a369a1a5595676de76499d56683ea9) )
- ROM_LOAD( "ax2003m01.ic13", 0x3000000, 0x1000000, CRC(ad046ad7) SHA1(ac7c46e458595714e327526354e1111fb25b44e0) )
- ROM_LOAD( "ax2004m01.ic14", 0x4000000, 0x1000000, CRC(4d555d7c) SHA1(a5eccc920bdb7ad9cf57c0e1ef6a905c6b9eee45) )
- ROM_LOAD( "ax2005m01.ic15", 0x5000000, 0x1000000, CRC(785208e2) SHA1(6ba5bd3901c5b1d71abcc8d833a011bd4abae6b6) )
- ROM_LOAD( "ax2006m01.ic16", 0x6000000, 0x1000000, CRC(8134ec55) SHA1(843e473d4f99237ded641cce9515b7802cfe3742) )
- ROM_LOAD( "ax2007m01.ic17", 0x7000000, 0x1000000, CRC(d0557e8a) SHA1(df8057597eb690bd18c5d26736f5d4f86e3b1225) )
+ ROM_REGION( 0x9000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax2001p01.ic18", 0x0000000, 0x0800000, CRC(17ea9aa9) SHA1(c68500e9b3407a9d4b20f2678718ce475f179f7d) )
+ ROM_LOAD( "ax2001m01.ic11", 0x1000000, 0x1000000, CRC(64460b24) SHA1(044857d6593897d303622e005a63ca7b3acd7453) )
+ ROM_LOAD( "ax2002m01.ic12", 0x2000000, 0x1000000, CRC(d4da357f) SHA1(c462cddec9a369a1a5595676de76499d56683ea9) )
+ ROM_LOAD( "ax2003m01.ic13", 0x3000000, 0x1000000, CRC(ad046ad7) SHA1(ac7c46e458595714e327526354e1111fb25b44e0) )
+ ROM_LOAD( "ax2004m01.ic14", 0x4000000, 0x1000000, CRC(4d555d7c) SHA1(a5eccc920bdb7ad9cf57c0e1ef6a905c6b9eee45) )
+ ROM_LOAD( "ax2005m01.ic15", 0x5000000, 0x1000000, CRC(785208e2) SHA1(6ba5bd3901c5b1d71abcc8d833a011bd4abae6b6) )
+ ROM_LOAD( "ax2006m01.ic16", 0x6000000, 0x1000000, CRC(8134ec55) SHA1(843e473d4f99237ded641cce9515b7802cfe3742) )
+ ROM_LOAD( "ax2007m01.ic17", 0x7000000, 0x1000000, CRC(d0557e8a) SHA1(df8057597eb690bd18c5d26736f5d4f86e3b1225) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax2001f01.bin", 0, 4, CRC(42d45ab8) SHA1(25bc9c046ff085e5219109316fbc0c1fae183d1f) )
ROM_END
ROM_START( salmankt )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x9000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "ax1401p01.ic18", 0x0000000, 0x0800000, CRC(28d779e0) SHA1(dab785a595de5f474c18c713e672949176a5b1b5) )
- ROM_LOAD( "ax1401m01.ic11", 0x1000000, 0x1000000, CRC(fd7af845) SHA1(0c8f5a91662e46d5c187a0758af95082183cdf69) )
- ROM_LOAD( "ax1402m01.ic12", 0x2000000, 0x1000000, CRC(88d458a7) SHA1(c661196d5a9640013995c8aa6a5bea057d984f87) )
- ROM_LOAD( "ax1403m01.ic13", 0x3000000, 0x1000000, CRC(074f7c4b) SHA1(4955e4f333d15d5d9cc69bb9658f29a37e912012) )
- ROM_LOAD( "ax1404m01.ic14", 0x4000000, 0x1000000, CRC(af4e3829) SHA1(18d9e8a8d8e930ad697b686a98f31ea175f5fd4a) )
- ROM_LOAD( "ax1405m01.ic15", 0x5000000, 0x1000000, CRC(b548446f) SHA1(8b4661e601e36c067dff2530aff4f7ea76e1c21e) )
- ROM_LOAD( "ax1406m01.ic16", 0x6000000, 0x1000000, CRC(437673e6) SHA1(66f7e5f246ebbb1bdbf074da41ec16bf32720a82) )
- ROM_LOAD( "ax1407m01.ic17", 0x7000000, 0x1000000, CRC(6b6acc0a) SHA1(a8c692c875271a0806460caa79c67fd756231273) )
+ ROM_REGION( 0x9000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax1401p01.ic18", 0x0000000, 0x0800000, CRC(28d779e0) SHA1(dab785a595de5f474c18c713e672949176a5b1b5) )
+ ROM_LOAD( "ax1401m01.ic11", 0x1000000, 0x1000000, CRC(fd7af845) SHA1(0c8f5a91662e46d5c187a0758af95082183cdf69) )
+ ROM_LOAD( "ax1402m01.ic12", 0x2000000, 0x1000000, CRC(88d458a7) SHA1(c661196d5a9640013995c8aa6a5bea057d984f87) )
+ ROM_LOAD( "ax1403m01.ic13", 0x3000000, 0x1000000, CRC(074f7c4b) SHA1(4955e4f333d15d5d9cc69bb9658f29a37e912012) )
+ ROM_LOAD( "ax1404m01.ic14", 0x4000000, 0x1000000, CRC(af4e3829) SHA1(18d9e8a8d8e930ad697b686a98f31ea175f5fd4a) )
+ ROM_LOAD( "ax1405m01.ic15", 0x5000000, 0x1000000, CRC(b548446f) SHA1(8b4661e601e36c067dff2530aff4f7ea76e1c21e) )
+ ROM_LOAD( "ax1406m01.ic16", 0x6000000, 0x1000000, CRC(437673e6) SHA1(66f7e5f246ebbb1bdbf074da41ec16bf32720a82) )
+ ROM_LOAD( "ax1407m01.ic17", 0x7000000, 0x1000000, CRC(6b6acc0a) SHA1(a8c692c875271a0806460caa79c67fd756231273) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax1401f01.bin", 0, 4, CRC(67e742ae) SHA1(7c2e955bcb753ff8756db4bd75409583ffbadf62) )
ROM_END
ROM_START( ftspeed )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x9000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "ax1701p01.ic18", 0x0000000, 0x0800000, CRC(480cade7) SHA1(487d4b27d7e5196d8321c5a80175ec7b1b32c1e8) )
- ROM_LOAD( "ax1701m01.ic11", 0x1000000, 0x1000000, CRC(7dcdc784) SHA1(5eeef9a760a0b090ed5aad8b7bdee2baa69a088b) )
- ROM_LOAD( "ax1702m01.ic12", 0x2000000, 0x1000000, CRC(06c9bf85) SHA1(636262dca7140397436646754fb204b97aa08ce9) )
- ROM_LOAD( "ax1703m01.ic13", 0x3000000, 0x1000000, CRC(8f8e0224) SHA1(2a9a17ed726913c00bf1c6a94bdd4fb32e800868) )
- ROM_LOAD( "ax1704m01.ic14", 0x4000000, 0x1000000, CRC(fbb4bb16) SHA1(b582680a880166c5bbdd2ad77b7903fedf9b01ad) )
- ROM_LOAD( "ax1705m01.ic15", 0x5000000, 0x1000000, CRC(d9e69723) SHA1(22ed4dab76320a286b66215607bda5adf21304d1) )
- ROM_LOAD( "ax1706m01.ic16", 0x6000000, 0x1000000, CRC(804b2eb2) SHA1(fcca02a5a8c09eb16548255115fb105c9c49c4e0) )
+ ROM_REGION( 0x9000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax1701p01.ic18", 0x0000000, 0x0800000, CRC(480cade7) SHA1(487d4b27d7e5196d8321c5a80175ec7b1b32c1e8) )
+ ROM_LOAD( "ax1701m01.ic11", 0x1000000, 0x1000000, CRC(7dcdc784) SHA1(5eeef9a760a0b090ed5aad8b7bdee2baa69a088b) )
+ ROM_LOAD( "ax1702m01.ic12", 0x2000000, 0x1000000, CRC(06c9bf85) SHA1(636262dca7140397436646754fb204b97aa08ce9) )
+ ROM_LOAD( "ax1703m01.ic13", 0x3000000, 0x1000000, CRC(8f8e0224) SHA1(2a9a17ed726913c00bf1c6a94bdd4fb32e800868) )
+ ROM_LOAD( "ax1704m01.ic14", 0x4000000, 0x1000000, CRC(fbb4bb16) SHA1(b582680a880166c5bbdd2ad77b7903fedf9b01ad) )
+ ROM_LOAD( "ax1705m01.ic15", 0x5000000, 0x1000000, CRC(d9e69723) SHA1(22ed4dab76320a286b66215607bda5adf21304d1) )
+ ROM_LOAD( "ax1706m01.ic16", 0x6000000, 0x1000000, CRC(804b2eb2) SHA1(fcca02a5a8c09eb16548255115fb105c9c49c4e0) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax1701f01.bin", 0, 4, CRC(f3f03c35) SHA1(2a8329a29cdcc0219e9360cc573c0f3ad44d0175) )
ROM_END
ROM_START( kofxi )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0xf000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "ax3201p01.fmem1", 0x0000000, 0x0800000, CRC(6dbdd71b) SHA1(cce3897b104f5d923d8136485fc80eb9717ff4b5) )
- ROM_LOAD( "ax3201m01.mrom1", 0x1000000, 0x2000000, CRC(7f9d6af9) SHA1(001064ad1b8c3408efe799dc766c2728dc6512a9) )
- ROM_LOAD( "ax3202m01.mrom2", 0x3000000, 0x2000000, CRC(1ae40afa) SHA1(9ee7957c86cc3a71e6971ddcd906a82c5b1e16f1) )
- ROM_LOAD( "ax3203m01.mrom3", 0x5000000, 0x2000000, CRC(8c5e3bfd) SHA1(b5443e2a1b88642cc57c5287a3122376c2d48de9) )
- ROM_LOAD( "ax3204m01.mrom4", 0x7000000, 0x2000000, CRC(ba97f80c) SHA1(36f672fe833e13f0bab036b02c39123066327e20) )
- ROM_LOAD( "ax3205m01.mrom5", 0x9000000, 0x2000000, CRC(3c747067) SHA1(54b7ff73d618e2e4e40c125c6cfe99016e69ad1a) )
- ROM_LOAD( "ax3206m01.mrom6", 0xb000000, 0x2000000, CRC(cb81e5f5) SHA1(07faee02a58ac9c600ab3cdd525d22c16b35222d) )
- ROM_LOAD( "ax3207m01.mrom7", 0xd000000, 0x2000000, CRC(164f6329) SHA1(a72c8cbe4ac7b98edda3d4434f6c81a370b8c39b) )
+ ROM_REGION( 0xf000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax3201p01.fmem1", 0x0000000, 0x0800000, CRC(6dbdd71b) SHA1(cce3897b104f5d923d8136485fc80eb9717ff4b5) )
+ ROM_LOAD( "ax3201m01.mrom1", 0x1000000, 0x2000000, CRC(7f9d6af9) SHA1(001064ad1b8c3408efe799dc766c2728dc6512a9) )
+ ROM_LOAD( "ax3202m01.mrom2", 0x3000000, 0x2000000, CRC(1ae40afa) SHA1(9ee7957c86cc3a71e6971ddcd906a82c5b1e16f1) )
+ ROM_LOAD( "ax3203m01.mrom3", 0x5000000, 0x2000000, CRC(8c5e3bfd) SHA1(b5443e2a1b88642cc57c5287a3122376c2d48de9) )
+ ROM_LOAD( "ax3204m01.mrom4", 0x7000000, 0x2000000, CRC(ba97f80c) SHA1(36f672fe833e13f0bab036b02c39123066327e20) )
+ ROM_LOAD( "ax3205m01.mrom5", 0x9000000, 0x2000000, CRC(3c747067) SHA1(54b7ff73d618e2e4e40c125c6cfe99016e69ad1a) )
+ ROM_LOAD( "ax3206m01.mrom6", 0xb000000, 0x2000000, CRC(cb81e5f5) SHA1(07faee02a58ac9c600ab3cdd525d22c16b35222d) )
+ ROM_LOAD( "ax3207m01.mrom7", 0xd000000, 0x2000000, CRC(164f6329) SHA1(a72c8cbe4ac7b98edda3d4434f6c81a370b8c39b) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax3201f01.bin", 0, 4, CRC(065d7fc6) SHA1(e4f18126e9f4e6747ffc5d0664766986fc07c127) )
ROM_END
ROM_START( dirtypig )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "837-14695.u3", 0x0000000, 0x1000000, CRC(9fdd7d07) SHA1(56d580dda116823ea5dc5e1bd5154463a476866a) )
- ROM_LOAD( "837-14695.u1", 0x1000000, 0x1000000, CRC(a91d2fcb) SHA1(8414386c09ba36ea581c8161f6cf2a13cc5ae516) )
- ROM_LOAD( "837-14695.u2", 0x2000000, 0x1000000, CRC(4d82152f) SHA1(a448983d4e81eb6485b62f23a6c99d1112a20c21) )
- ROM_LOAD( "837-14695.u4", 0x3000000, 0x1000000, CRC(3342f237) SHA1(e617b0e1f8d8da9783c58ab98eb91de2363ec36f) )
- ROM_LOAD( "837-14695.u14", 0x4000000, 0x1000000, CRC(55470242) SHA1(789036189ae5488a9da565774bdf91b49cd8264e) )
- ROM_LOAD( "837-14695.u15", 0x5000000, 0x1000000, CRC(d239a549) SHA1(71f3c1c2ae2a9b6f09f30e7be3bb11ba111276ae) )
- ROM_LOAD( "837-14695.u16", 0x6000000, 0x1000000, CRC(730180a4) SHA1(017b82e2d2744695e3e521d35a8511ecc1c8ab43) )
- ROM_LOAD( "837-14695.u17", 0x7000000, 0x1000000, CRC(16bb5992) SHA1(18772587272aba1d50a48d384f472276c3b48d96) )
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "837-14695.u3", 0x0000000, 0x1000000, CRC(9fdd7d07) SHA1(56d580dda116823ea5dc5e1bd5154463a476866a) )
+ ROM_LOAD( "837-14695.u1", 0x1000000, 0x1000000, CRC(a91d2fcb) SHA1(8414386c09ba36ea581c8161f6cf2a13cc5ae516) )
+ ROM_LOAD( "837-14695.u2", 0x2000000, 0x1000000, CRC(4d82152f) SHA1(a448983d4e81eb6485b62f23a6c99d1112a20c21) )
+ ROM_LOAD( "837-14695.u4", 0x3000000, 0x1000000, CRC(3342f237) SHA1(e617b0e1f8d8da9783c58ab98eb91de2363ec36f) )
+ ROM_LOAD( "837-14695.u14", 0x4000000, 0x1000000, CRC(55470242) SHA1(789036189ae5488a9da565774bdf91b49cd8264e) )
+ ROM_LOAD( "837-14695.u15", 0x5000000, 0x1000000, CRC(d239a549) SHA1(71f3c1c2ae2a9b6f09f30e7be3bb11ba111276ae) )
+ ROM_LOAD( "837-14695.u16", 0x6000000, 0x1000000, CRC(730180a4) SHA1(017b82e2d2744695e3e521d35a8511ecc1c8ab43) )
+ ROM_LOAD( "837-14695.u17", 0x7000000, 0x1000000, CRC(16bb5992) SHA1(18772587272aba1d50a48d384f472276c3b48d96) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "837-14695.bin", 0, 4, CRC(553dd361) SHA1(a60a26b5ee786cf0bb3d09bb6f00374598fbd7cc) )
ROM_END
ROM_START( mslug6 )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0xf000000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0xf000000, "rom_board", ROMREGION_ERASE)
ROM_LOAD( "ax3001p01.fmem1", 0x0000000, 0x0800000, CRC(af67dbce) SHA1(5aba108caf3e4ced6994bc26e752d4e225c231e8) )
ROM_LOAD( "ax3001m01.mrom1", 0x1000000, 0x2000000, CRC(e56417ee) SHA1(27692ad5c1093aff0973d2aafd01a5e30c7bfbbe) )
ROM_LOAD( "ax3002m01.mrom2", 0x3000000, 0x2000000, CRC(1be3bbc1) SHA1(d75ce5c855c9c4eeacdbf84d440c73a94de060fe) )
ROM_LOAD( "ax3003m01.mrom3", 0x5000000, 0x2000000, CRC(4fe37370) SHA1(85d51db94c3e34265e37b636d6545ed2801ba5a6) )
ROM_LOAD( "ax3004m01.mrom4", 0x7000000, 0x2000000, CRC(2f4c4c6f) SHA1(5815c28fdaf0429003986e725c0015fe4c08721f) )
- ROM_COPY( "user1", 0x7000000, 0x9000000, 0x2000000)
+ ROM_COPY( "rom_board", 0x7000000, 0x9000000, 0x2000000)
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax3001f01.bin", 0, 4, CRC(0b9939e9) SHA1(4ca1225c7c9993542a67035a054ac579ed021de5) )
ROM_END
ROM_START( samsptk )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x10000000, "rom_board", ROMREGION_ERASE)
ROM_LOAD( "ax2901p01.fmem1", 0x0000000, 0x0800000, CRC(58e0030b) SHA1(ed8a66833beeb56d83770123eff28df0f25221d1) )
ROM_LOAD( "ax2901m01.mrom1", 0x1000000, 0x2000000, CRC(dbbbd90d) SHA1(102ee0b249a3e0ca2f659b6c515816c522ad78d0) )
ROM_LOAD( "ax2902m01.mrom2", 0x3000000, 0x2000000, CRC(a3bd7890) SHA1(9b8d934d6ebc3ef688cd8a6de47657a0663fea10) )
@@ -7599,35 +7431,42 @@ ROM_START( samsptk )
ROM_LOAD( "ax2905m01.mrom5", 0x9000000, 0x2000000, CRC(429877ba) SHA1(88e1f3bc682b18d331e328ef8754065109cf9bda) )
ROM_LOAD( "ax2906m01.mrom6", 0xb000000, 0x2000000, CRC(cb95298d) SHA1(5fb5d5a0d6801df61101a1b23de0c14ff29ef654) )
ROM_LOAD( "ax2907m01.mrom7", 0xd000000, 0x2000000, CRC(48015081) SHA1(3c0a0a6dc9ab7bf889579477699e612c3092f9bf) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax2901f01.bin", 0, 4, CRC(8a6267aa) SHA1(9705bed35acb87d578f0efcf4f74b2a4b1a7be2e) )
ROM_END
ROM_START( ggx15 )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
- ROM_LOAD( "ax0801p01.ic18", 0x0000000, 0x0800000, CRC(d920c6bb) SHA1(ab34bbef3c71396447bc5322d8e8786041fc832a) )
- ROM_LOAD( "ax0801m01.ic11", 0x1000000, 0x1000000, CRC(61879b2d) SHA1(9592fbd979cef9d8f465cd92d0f00b9c13ecf7ba) )
- ROM_LOAD( "ax0802m01.ic12", 0x2000000, 0x1000000, CRC(c0ff124d) SHA1(dd403d10de2f097fbaa6b93bc311e2b9e893828d) )
- ROM_LOAD( "ax0803m01.ic13", 0x3000000, 0x1000000, CRC(4400c89a) SHA1(4e13536c01103ecfbfc9e3e33746ceae7a91a520) )
- ROM_LOAD( "ax0804m01.ic14", 0x4000000, 0x1000000, CRC(70f58ab4) SHA1(cd2def19bbad945c87567f8d28f3a2a179a7f7f6) )
- ROM_LOAD( "ax0805m01.ic15", 0x5000000, 0x1000000, CRC(72740e45) SHA1(646eded89f10008c9176cd6772a8ac9d1bf4271a) )
- ROM_LOAD( "ax0806m01.ic16", 0x6000000, 0x1000000, CRC(3bf8ecba) SHA1(43e7fbf21d8ee60bab72ce558640730fd9c3e3b8) )
- ROM_LOAD( "ax0807m01.ic17", 0x7000000, 0x1000000, CRC(e397dd79) SHA1(5fec32dc19dd71ef0d451f8058186f998015723b) )
+ ROM_REGION( 0x8000000, "rom_board", ROMREGION_ERASE)
+ ROM_LOAD( "ax0801p01.ic18", 0x0000000, 0x0800000, CRC(d920c6bb) SHA1(ab34bbef3c71396447bc5322d8e8786041fc832a) )
+ ROM_LOAD( "ax0801m01.ic11", 0x1000000, 0x1000000, CRC(61879b2d) SHA1(9592fbd979cef9d8f465cd92d0f00b9c13ecf7ba) )
+ ROM_LOAD( "ax0802m01.ic12", 0x2000000, 0x1000000, CRC(c0ff124d) SHA1(dd403d10de2f097fbaa6b93bc311e2b9e893828d) )
+ ROM_LOAD( "ax0803m01.ic13", 0x3000000, 0x1000000, CRC(4400c89a) SHA1(4e13536c01103ecfbfc9e3e33746ceae7a91a520) )
+ ROM_LOAD( "ax0804m01.ic14", 0x4000000, 0x1000000, CRC(70f58ab4) SHA1(cd2def19bbad945c87567f8d28f3a2a179a7f7f6) )
+ ROM_LOAD( "ax0805m01.ic15", 0x5000000, 0x1000000, CRC(72740e45) SHA1(646eded89f10008c9176cd6772a8ac9d1bf4271a) )
+ ROM_LOAD( "ax0806m01.ic16", 0x6000000, 0x1000000, CRC(3bf8ecba) SHA1(43e7fbf21d8ee60bab72ce558640730fd9c3e3b8) )
+ ROM_LOAD( "ax0807m01.ic17", 0x7000000, 0x1000000, CRC(e397dd79) SHA1(5fec32dc19dd71ef0d451f8058186f998015723b) )
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax0801f01.bin", 0, 4, CRC(a36e5017) SHA1(fd763a4c708fe37c7561ba5b5d0b8d2118cff16b) )
ROM_END
ROM_START( rumblef2 )
- ROM_REGION( 0x200000, "awflash", 0)
AW_BIOS
- ROM_REGION( 0x10000000, "user1", ROMREGION_ERASE)
+ ROM_REGION( 0x10000000, "rom_board", ROMREGION_ERASE)
ROM_LOAD( "ax3401p01.fmem1", 0x0000000, 0x0800000, CRC(a33601cf) SHA1(2dd60a9c3a2517f2257ab69288fa95645de133fa) )
ROM_LOAD( "ax3401m01.mrom1", 0x1000000, 0x2000000, CRC(60894d4c) SHA1(5b21af3c7c82d4d64bfd8498c26283111ada1298) )
ROM_LOAD( "ax3402m01.mrom2", 0x3000000, 0x2000000, CRC(e4224cc9) SHA1(dcab06fcf48cda286f93d2b37f03a83abf3230cb) )
ROM_LOAD( "ax3403m01.mrom3", 0x5000000, 0x2000000, CRC(081c0edb) SHA1(63a3f1b5f9d7ca4367868c492236406f23996cc3) )
ROM_LOAD( "ax3404m01.mrom4", 0x7000000, 0x2000000, CRC(a426b443) SHA1(617aab42e432a80b0663281fb7faa6c14ef4f149) )
ROM_LOAD( "ax3405m01.mrom5", 0x9000000, 0x2000000, CRC(4766ce56) SHA1(349b82013a75905ae5520b14a87702c9038a5def) )
- ROM_COPY( "user1", 0x9000000, 0xb000000, 0x2000000)
+ ROM_COPY( "rom_board", 0x9000000, 0xb000000, 0x2000000)
+
+ ROM_REGION( 4, "rom_key", 0 )
+ ROM_LOAD( "ax3401f01.bin", 0, 4, CRC(952919a1) SHA1(d343fdbbd1d8b651401133f21facc1584bb66c04) )
ROM_END
/* All games have the regional titles at the start of the IC22 rom in the following order
@@ -7658,63 +7497,63 @@ ROM_END
/* 13636 */ GAME( 1998, hotd2, hod2bios, naomi, hotd2, hotd2, ROT0, "Sega", "House of the Dead 2", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* specific BIOS "airlbios" needed */
/* 13636 */ GAME( 1998, hotd2o, hotd2, naomi, hotd2, hotd2, ROT0, "Sega", "House of the Dead 2 (original)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* specific BIOS "airlbios" needed */
/* 13842 */ GAME( 1999, f355, f355bios, naomi, naomi, 0, ROT0, "Sega", "Ferrari F355 Challenge", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* specific BIOS "f355bios" needed */
-/* 13950 */ GAME( 1999, f355twin, f355bios, naomi, naomi, 0, ROT0, "Sega", "Ferrari F355 Challenge (Twin)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* specific BIOS "f355bios" needed */
+/* 13950 */ GAME( 1999, f355twin, f355bios, naomim2, naomi, 0, ROT0, "Sega", "Ferrari F355 Challenge (Twin)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* specific BIOS "f355bios" needed */
/* 840-xxxxx (Sega Naomi cart games)*/
/* 0001 */ GAME( 1998, dybbnao, naomi, naomi, dybbnao, naomi, ROT0, "Sega", "Dynamite Baseball NAOMI (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0002 */ GAME( 1999, crzytaxi, naomi, naomi, crzytaxi, naomi, ROT0, "Sega", "Crazy Taxi (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0003 */ GAME( 1999, zombrvn, naomi, naomi, zombrvn, naomi, ROT0, "Sega", "Zombie Revenge (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0005 */ GAME( 1999, alpilota, naomi, naomi, alpilota, naomi, ROT0, "Sega", "Airline Pilots (Rev A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* specific BIOS "airlbios" needed */
-/* 0007 */ GAME( 1999, ggram2, naomi, naomi, naomi, naomi, ROT0, "Sega", "Giant Gram: All Japan Pro Wrestling 2 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0010 */ GAME( 1999, vs2_2k, naomi, naomi, naomi, naomi, ROT0, "Sega", "Virtua Striker 2 Ver. 2000 (JPN, USA, EXP, KOR, AUS) (Rev C)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0011 */ GAME( 1999, toyfight, naomi, naomi, naomi, naomi, ROT0, "Sega", "Toy Fighter", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0012 */ GAME( 1999, smlg99, naomi, naomi, dybbnao, naomi, ROT0, "Sega", "Super Major League '99", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0013 */ GAME( 1999, jambo, naomi, naomi, jambo, naomi, ROT0, "Sega", "Jambo! Safari (JPN, USA, EXP, KOR, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0015 */ GAME( 1999, vtennis, naomi, naomi, naomi, naomi, ROT0, "Sega", "Virtua Tennis (USA, EXP, KOR, AUS) / Power Smash (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0016 */ GAME( 1999, derbyoc, naomi, naomi, naomi, naomi, ROT0, "Sega", "Derby Owners Club (JPN, USA, EXP, KOR, AUS) (Rev B)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0017 */ GAME( 1999, otrigger, naomi, naomi, naomi, naomi, ROT0, "Sega", "OutTrigger (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0018 */ GAME( 1999, sgtetris, naomi, naomi, naomi, naomi, ROT0, "Sega", "Sega Tetris", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0019 */ GAME( 1999, dybb99, naomi, naomi, dybbnao, naomi, ROT0, "Sega", "Dynamite Baseball '99 (JPN) / World Series '99 (USA, EXP, KOR, AUS) (Rev B)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0020 */ GAME( 1999, samba, naomi, naomi, naomi, naomi, ROT0, "Sega", "Samba De Amigo (JPN) (Rev B)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0021 */ GAME( 2000, virnbao, virnba, naomi, naomi, naomi, ROT0, "Sega", "Virtua NBA (JPN, USA, EXP, KOR, AUS) (original)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0002 */ GAME( 1999, crzytaxi, naomi, naomim2, crzytaxi, naomi, ROT0, "Sega", "Crazy Taxi (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0003 */ GAME( 1999, zombrvn, naomi, naomim2, zombrvn, naomi, ROT0, "Sega", "Zombie Revenge (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0005 */ GAME( 1999, alpilota, naomi, naomim2, alpilota, naomi, ROT0, "Sega", "Airline Pilots (Rev A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* specific BIOS "airlbios" needed */
+/* 0007 */ GAME( 1999, ggram2, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Giant Gram: All Japan Pro Wrestling 2 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0010 */ GAME( 1999, vs2_2k, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Virtua Striker 2 Ver. 2000 (JPN, USA, EXP, KOR, AUS) (Rev C)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0011 */ GAME( 1999, toyfight, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Toy Fighter", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0012 */ GAME( 1999, smlg99, naomi, naomim2, dybbnao, naomi, ROT0, "Sega", "Super Major League '99", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0013 */ GAME( 1999, jambo, naomi, naomim2, jambo, naomi, ROT0, "Sega", "Jambo! Safari (JPN, USA, EXP, KOR, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0015 */ GAME( 1999, vtennis, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Virtua Tennis (USA, EXP, KOR, AUS) / Power Smash (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0016 */ GAME( 1999, derbyoc, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Derby Owners Club (JPN, USA, EXP, KOR, AUS) (Rev B)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0017 */ GAME( 1999, otrigger, naomi, naomim2, naomi, naomi, ROT0, "Sega", "OutTrigger (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0018 */ GAME( 1999, sgtetris, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Sega Tetris", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0019 */ GAME( 1999, dybb99, naomi, naomim2, dybbnao, naomi, ROT0, "Sega", "Dynamite Baseball '99 (JPN) / World Series '99 (USA, EXP, KOR, AUS) (Rev B)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0020 */ GAME( 1999, samba, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Samba De Amigo (JPN) (Rev B)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0021 */ GAME( 2000, virnbao, virnba, naomim2, naomi, naomi, ROT0, "Sega", "Virtua NBA (JPN, USA, EXP, KOR, AUS) (original)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* 0021-01 */ GAME( 2000,virnba, naomi, naomi, naomi, naomi, ROT0, "Sega", "Virtua NBA (JPN, USA, EXP, KOR, AUS)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
// 0022 Touch de Uno! 2
-/* 0023 */ GAME( 2000, 18wheelr, naomi, naomi, 18wheelr, naomi, ROT0, "Sega", "18 Wheeler Deluxe (Rev A) (JPN)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0023 */ GAME( 2000, 18wheelr, naomi, naomim2, 18wheelr, naomi, ROT0, "Sega", "18 Wheeler Deluxe (Rev A) (JPN)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
// 0025 Mars TV
/* 0026 */ GAME( 2000, totd, naomi, naomi, naomi, naomi, ROT0, "Sega", "The Typing of the Dead (JPN, USA, EXP, KOR, AUS) (Rev A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* 0027 */ GAME( 2000, smarinef, naomi, naomi, naomi, naomi, ROT0, "Sega", "Sega Marine Fishing", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0028 */ GAME( 2000, vonot, naomi, naomi, naomi, naomi, ROT0, "Sega", "Virtual On Oratorio Tangram M.S.B.S. ver5.66 2000 Edition", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0030 */ GAME( 2000, qmegamis, naomi, naomi, naomi, qmegamis, ROT0, "Sega", "Quiz Ah Megamisama (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0035 */ GAME( 2000, sstrkfgt, naomi, naomi, sstrkfgt, naomi, ROT0, "Sega", "Sega Strike Fighter (Rev A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0028 */ GAME( 2000, vonot, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Virtual On Oratorio Tangram M.S.B.S. ver5.66 2000 Edition", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0030 */ GAME( 2000, qmegamis, naomi, naomim1, naomi, qmegamis, ROT0, "Sega", "Quiz Ah Megamisama (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0035 */ GAME( 2000, sstrkfgt, naomi, naomim2, sstrkfgt, naomi, ROT0, "Sega", "Sega Strike Fighter (Rev A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
// 0037 18 Wheeler - American Pro Trucker
-/* 0039 */ GAME( 2000, gram2000, naomi, naomi, naomi, gram2000, ROT0, "Sega", "Giant Gram 2000 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0040 */ GAME( 2000, wwfroyal, naomi, naomi, naomi, naomi, ROT0, "Sega", "WWF Royal Rumble (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0041 */ GAME( 2000, slasho, naomi, naomi, naomi, naomi, ROT0, "Sega", "Slashout (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0042 */ GAME( 2001, f355twn2, f355bios, naomi, naomi, 0, ROT0, "Sega", "Ferrari F355 Challenge 2 (Twin)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* specific BIOS "f355bios" needed */
-/* 0043 */ GAME( 2000, crackndj, naomi, naomi, crackndj, naomi, ROT0, "Sega", "Crackin' DJ", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0044 */ GAME( 2000, csmasho, csmash, naomi, naomi, naomi, ROT0, "Sega", "Cosmic Smash (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0044 */ GAME( 2000, csmash, naomi, naomi, naomi, naomi, ROT0, "Sega", "Cosmic Smash (JPN, USA, EXP, KOR, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0047 */ GAME( 2000, samba2k, naomi, naomi, naomi, naomi, ROT0, "Sega", "Samba de Amigo ver. 2000", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0039 */ GAME( 2000, gram2000, naomi, naomim1, naomi, gram2000, ROT0, "Sega", "Giant Gram 2000 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0040 */ GAME( 2000, wwfroyal, naomi, naomim2, naomi, naomi, ROT0, "Sega", "WWF Royal Rumble (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0041 */ GAME( 2000, slasho, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Slashout (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0042 */ GAME( 2001, f355twn2, f355bios, naomim2, naomi, 0, ROT0, "Sega", "Ferrari F355 Challenge 2 (Twin)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* specific BIOS "f355bios" needed */
+/* 0043 */ GAME( 2000, crackndj, naomi, naomim2, crackndj, naomi, ROT0, "Sega", "Crackin' DJ", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0044 */ GAME( 2000, csmasho, csmash, naomim2, naomi, naomi, ROT0, "Sega", "Cosmic Smash (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0044 */ GAME( 2000, csmash, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Cosmic Smash (JPN, USA, EXP, KOR, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0047 */ GAME( 2000, samba2k, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Samba de Amigo ver. 2000", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
// 0048 Alien Front
/* 0052 */ GAME( 2000, derbyo2k, naomi, naomi, naomi, naomi, ROT0, "Sega", "Derby Owners Club 2000 (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* 0064 */ GAME( 2001, wrungp, naomi, naomi, naomi, naomi, ROT0, "Sega", "Wave Runner GP", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* 0073 */ GAME( 2001, inunoos, naomi, naomi, naomi, naomi, ROT0, "Sega", "Inu No Osanpo / Dog Walking (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* 0083 */ GAME( 2001, derbyoc2, naomi, naomi, naomi, naomi, ROT0, "Sega", "Derby Owners Club II (JPN, USA, EXP, KOR, AUS) (Rev B)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0084 */ GAME( 2001, vtenis2c, naomi, naomi, naomi, naomi, ROT0, "Sega", "Virtua Tennis 2 / Power Smash 2 (JPN) (USA, EXP, KOR, AUS) (Cart, Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0084 */ GAME( 2001, vtenis2c, naomi, naomim1, naomi, naomi, ROT0, "Sega", "Virtua Tennis 2 / Power Smash 2 (JPN) (USA, EXP, KOR, AUS) (Cart, Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* 0088 */ GAME( 2001, derbyocw, naomi, naomi, naomi, naomi, ROT0, "Sega", "Derby Owners Club World Edition (JPN, USA, EXP, KOR, AUS) (Rev D)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* 0088 */ GAME( 2001, drbyocwc, derbyocw, naomi, naomi, naomi, ROT0, "Sega", "Derby Owners Club World Edition (JPN, USA, EXP, KOR, AUS) (Rev C)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0098 */ GAME( 2002, shootopl, naomi, naomi, naomi, naomi, ROT0, "Sega", "Shootout Pool", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0126 */ GAME( 2003, oinori, naomi, naomi, naomi, naomi, ROT0, "Sega", "Oinori-Daimyoujin Matsuri", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0128 */ GAME( 2002, shootpl, naomi, naomi, naomi, naomi, ROT0, "Sega", "Shootout Pool (JPN, USA, KOR, AUS) / Shootout Pool Prize (EXP)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0140 */ GAME( 2004, kick4csh, naomi, naomi, naomi, kick4csh, ROT0, "Sega", "Kick '4' Cash", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0098 */ GAME( 2002, shootopl, naomi, naomim1, naomi, naomi, ROT0, "Sega", "Shootout Pool", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0126 */ GAME( 2003, oinori, naomi, naomi, naomi, naomi, ROT0, "Sega", "Oinori-daimyoujin Matsuri", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0128 */ GAME( 2002, shootpl, naomi, naomim1, naomi, naomi, ROT0, "Sega", "Shootout Pool (JPN, USA, KOR, AUS) / Shootout Pool Prize (EXP)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0140 */ GAME( 2004, kick4csh, naomi, naomim1, naomi, kick4csh, ROT0, "Sega", "Kick '4' Cash", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
// 0150 MushiKing - The King Of Beetle
// 0166 Touch De Zunou (Japan)
// 0166 Touch De Zunou (Japan) (Rev A)
-/* 0170 */ GAME( 2007, pokasuka, naomi, naomi, naomi, naomi, ROT0, "Sega", "Pokasuka Ghost", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0175 */ GAME( 2007, asndynmt, naomi, naomi, naomi, naomi, ROT0, "Sega", "Asian Dynamite", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 00?? */ GAME( 1999, ringout, naomi, naomi, naomi, naomi, ROT0, "Sega", "Ring Out 4x4", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 00?? */ GAME( 1999, alpiltdx, airlbios, naomi, naomi, 0, ROT0, "Sega", "Airline Pilots Deluxe (Rev B)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* specific BIOS "airlbios" needed */
-/* 0??? */ GAME( 2001, shootplm, naomi, naomi, naomi, naomi, ROT0, "Sega", "Shootout Pool Medal", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0170 */ GAME( 2007, pokasuka, naomi, naomim4, naomi, naomi, ROT0, "Sega", "Pokasuka Ghost", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0175 */ GAME( 2007, asndynmt, naomi, naomim4, naomi, naomi, ROT0, "Sega", "Asian Dynamite", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 00?? */ GAME( 1999, ringout, naomi, naomim2, naomi, naomi, ROT0, "Sega", "Ring Out 4x4", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 00?? */ GAME( 1999, alpiltdx, airlbios, naomim2, naomi, 0, ROT0, "Sega", "Airline Pilots Deluxe (Rev B)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING ) /* specific BIOS "airlbios" needed */
+/* 0??? */ GAME( 2001, shootplm, naomi, naomim1, naomi, naomi, ROT0, "Sega", "Shootout Pool Medal", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
// 00?? Crackin' DJ Part 2
// 00?? Touch de Uno!
@@ -7723,42 +7562,42 @@ ROM_END
/* 0061 */ GAME( 2001, vstrik3c, naomi2, naomi2, naomi, naomi2, ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev C)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* 0061 */ GAME( 2001, vstrik3cb,vstrik3c, naomi2, naomi, naomi2, ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev B)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* 0062 */ GAME( 2002, clubkrte, naomi2, naomi2, naomi, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0080 */ GAME( 2002, vf4cart, naomi2, naomi2, naomi, naomi2, ROT0, "Sega", "Virtua Fighter 4 (Cartridge)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0080 */ GAME( 2002, vf4cart, naomi2, naomi2m2, naomi, naomi2, ROT0, "Sega", "Virtua Fighter 4 (Cartridge)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* 0087 */ GAME( 2002, kingrt66, naomi2, naomi2, naomi, naomi2, ROT0, "Sega", "King of Route 66 (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
// 0095 Soul Surfer
-/* 0106 */ GAME( 2002, vf4evoct, naomi2, naomi2, naomi, vf4evoct, ROT0, "Sega", "Virtua Fighter 4 Evolution (Cartridge)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0106 */ GAME( 2002, vf4evoct, naomi2, naomi2m1, naomi, vf4evoct, ROT0, "Sega", "Virtua Fighter 4 Evolution (Cartridge)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
// 0129 Club Kart Prize
/* 841-xxxxx ("Licensed by Sega" Naomi cart games)*/
-/* 0001 */ GAME( 1999, pstone, naomi, naomi, naomi, naomi, ROT0, "Capcom", "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0002 */ GAME( 1999, suchie3, naomi, naomi, naomi_mp, naomi_mp, ROT0, "Jaleco", "Idol Janshi Suchie-Pai 3 (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0003 */ GAME( 1999, doa2, naomi, naomi, naomi, naomi, ROT0, "Tecmo", "Dead or Alive 2 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0003 */ GAME( 2000, doa2m, doa2, naomi, naomi, naomi, ROT0, "Tecmo", "Dead or Alive 2 Millennium (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0001 */ GAME( 1999, pstone, naomi, naomim2, naomi, naomi, ROT0, "Capcom", "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0002 */ GAME( 1999, suchie3, naomi, naomim2, naomi_mp, naomi_mp, ROT0, "Jaleco", "Idol Janshi Suchie-Pai 3 (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0003 */ GAME( 1999, doa2, naomi, naomim2, naomi, naomi, ROT0, "Tecmo", "Dead or Alive 2 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0003 */ GAME( 2000, doa2m, doa2, naomim2, naomi, naomi, ROT0, "Tecmo", "Dead or Alive 2 Millennium (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* 0004 */ GAME( 1999, shangril, naomi, naomi, naomi_mp, naomi_mp, ROT0, "Marvelous Ent.", "Dengen Tenshi Taisen Janshi Shangri-la (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0005 */ GAME( 1999, spawn, naomi, naomi, naomi, naomi, ROT0, "Capcom", "Spawn In the Demon's Hand (JPN, USA, EUR, ASI, AUS) (Rev B)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0006 */ GAME( 1999, puyoda, naomi, naomi, naomi, naomi, ROT0, "Compile", "Puyo Puyo Da!", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0007-02 */ GAME( 2000,mvsc2, naomi, naomi, naomi, mvsc2, ROT0, "Capcom", "Marvel Vs. Capcom 2 New Age of Heroes (JPN, USA, EUR, ASI, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0008 */ GAME( 2000, pstone2, naomi, naomi, naomi, naomi, ROT0, "Capcom", "Power Stone 2 (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0011 */ GAME( 2000, capsnk, naomi, naomi, naomi, naomi, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 (JPN, USA, EXP, KOR, AUS) (Rev C)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0011 */ GAME( 2000, capsnka, capsnk, naomi, naomi, naomi, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 (JPN, USA, EXP, KOR, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0012 */ GAME( 2000, cspike, naomi, naomi, naomi, naomi, ROT0, "Psikyo / Capcom", "Gun Spike (JPN) / Cannon Spike (USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0013 */ GAME( 2000, ggx, naomi, naomi, naomi, naomi, ROT0, "Arc System Works","Guilty Gear X (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0014 */ GAME( 2000, gwing2, naomi, naomi, naomi, naomi, ROT0, "Takumi / Capcom", "Giga Wing 2 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0015 */ GAME( 2000, pjustic, naomi, naomi, naomi, naomi, ROT0, "Capcom", "Moero Justice Gakuen (JPN) / Project Justice (USA, EXP, KOR, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0016 */ GAME( 2000, deathcox, naomi, naomi, naomi, naomi, ROT0, "Ecole Software", "Death Crimson OX (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0017 */ GAME( 2001, gundmct, naomi, naomi, naomi, naomi, ROT0, "Capcom / Banpresto", "Mobile Suit Gundam: Federation Vs. Zeon (2001-02-08)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0020 */ GAME( 2001, zerogu2, naomi, naomi, naomi, naomi, ROT0, "Psikyo", "Zero Gunner 2", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0057 */ GAME( 2007, sl2007, naomi, naomi, naomi, naomi, ROT270, "Triangle Service", "Shooting Love 2007", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0058 */ GAME( 2008, ausfache, naomi, naomi, naomi, naomi, ROT0, "Subtle Style", "Akatsuki Blitzkampf Ausf Achse", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-/* 0059 */ GAME( 2008, illvelo, naomi, naomi, naomi, naomi, ROT270, "Milestone", "Illvelo (Illmatic Envelope)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0005 */ GAME( 1999, spawn, naomi, naomim2, naomi, naomi, ROT0, "Capcom", "Spawn In the Demon's Hand (JPN, USA, EUR, ASI, AUS) (Rev B)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0006 */ GAME( 1999, puyoda, naomi, naomim2, naomi, naomi, ROT0, "Compile", "Puyo Puyo Da!", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0007-02 */ GAME( 2000,mvsc2, naomi, naomim1, naomi, mvsc2, ROT0, "Capcom", "Marvel Vs. Capcom 2 New Age of Heroes (JPN, USA, EUR, ASI, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0008 */ GAME( 2000, pstone2, naomi, naomim2, naomi, naomi, ROT0, "Capcom", "Power Stone 2 (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0011 */ GAME( 2000, capsnk, naomi, naomim2, naomi, naomi, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 (JPN, USA, EXP, KOR, AUS) (Rev C)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0011 */ GAME( 2000, capsnka, capsnk, naomim2, naomi, naomi, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 (JPN, USA, EXP, KOR, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0012 */ GAME( 2000, cspike, naomi, naomim2, naomi, naomi, ROT0, "Psikyo / Capcom", "Gun Spike (JPN) / Cannon Spike (USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0013 */ GAME( 2000, ggx, naomi, naomim2, naomi, naomi, ROT0, "Arc System Works","Guilty Gear X (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0014 */ GAME( 2000, gwing2, naomi, naomim2, naomi, naomi, ROT0, "Takumi / Capcom", "Giga Wing 2 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0015 */ GAME( 2000, pjustic, naomi, naomim2, naomi, naomi, ROT0, "Capcom", "Moero Justice Gakuen (JPN) / Project Justice (USA, EXP, KOR, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0016 */ GAME( 2000, deathcox, naomi, naomim2, naomi, naomi, ROT0, "Ecole Software", "Death Crimson OX (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0017 */ GAME( 2001, gundmct, naomi, naomi, naomi, naomi, ROT0, "Banpresto", "Mobile Suit Gundam: Federation Vs. Zeon (2001-02-08)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0020 */ GAME( 2001, zerogu2, naomi, naomim2, naomi, naomi, ROT0, "Psikyo", "Zero Gunner 2", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0057 */ GAME( 2007, sl2007, naomi, naomim4, naomi, naomi, ROT270, "Triangle Service", "Shooting Love 2007", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0058 */ GAME( 2008, ausfache, naomi, naomim4, naomi, naomi, ROT0, "Subtle Style", "Akatsuki Blitzkampf Ausf Achse", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 0059 */ GAME( 2008, illvelo, naomi, naomim4, naomi, naomi, ROT270, "Milestone", "Illvelo (Illmatic Envelope)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
// 0060 Mamonoro - Mamoru-kun wa Norowarete Shimatta!
// 0061 Melty Blood Actress Again
// 0061 Melty Blood Actress Again (Rev A)
// 0062 Radilgy Noar
-/* HMG016007 */ GAME( 2001, hmgeo, naomi, naomi, naomi, naomi, ROT0, "Capcom", "Heavy Metal Geomatrix (JPN, USA, EUR, ASI, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* HMG016007 */ GAME( 2001, hmgeo, naomi, naomim2, naomi, naomi, ROT0, "Capcom", "Heavy Metal Geomatrix (JPN, USA, EUR, ASI, AUS) (Rev A)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* Cart games on Namco custom ROM board */
-/* 25209801 */ GAME( 2000, wldkicks, naomi, naomi, naomi, naomi, ROT0, "Capcom / Namco", "World Kicks", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+/* 25209801 */ GAME( 2000, wldkicks, naomi, naomim2, naomi, naomi, ROT0, "Capcom / Namco", "World Kicks", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
// 25349801 Shin Nihon Prowrestling Toukon Retsuden 4 Arcade Edition
// 25469801 Ninja Assault
/* 25709801 */ GAME( 2001, gunsur2, naomi, naomi, naomi, naomi, ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
@@ -7902,29 +7741,29 @@ ROM_END
/* 0042 */ GAME( 2006, takoron, naomigd, naomigd, naomi, naomigd, ROT0, "Compile", "Noukone Puzzle Takoron (GDL-0042)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
/* Atomiswave */
-GAME( 2001, awbios, 0, aw2c, aw2c, atomiswave, ROT0, "Sammy", "Atomiswave Bios", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
-
-GAME( 2002, maxspeed, awbios, aw1c, aw1w, maxspeed, ROT0, "Sammy", "Maximum Speed", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2002, sprtshot, awbios, aw2c, aw2c, sprtshot, ROT0, "Sammy USA", "Sports Shooting USA", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2003, ggx15, awbios, aw2c, aw2c, ggx15, ROT0, "Sammy / Arc System Works", "Guilty Gear X ver. 1.5", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
-GAME( 2003, demofist, awbios, aw2c, aw2c, demofist, ROT0, "Polygon Magic / Dimps", "Demolish Fist", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2003, dolphin, awbios, aw2c, aw2c, dolphin, ROT0, "Sammy", "Dolphin Blue", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
-GAME( 2003, ggisuka, awbios, aw2c, aw2c, ggisuka, ROT0, "Sammy / Arc System Works", "Guilty Gear Isuka", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
-GAME( 2004, dirtypig, awbios, aw2c, aw2c, dirtypig, ROT0, "Sammy", "Dirty Pigskin Football", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
-GAME( 2004, rumblef, awbios, aw2c, aw2c, rumblef, ROT0, "Sammy / Dimps", "The Rumble Fish", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
-GAME( 2004, rangrmsn, awbios, aw2c, aw1w, rangrmsn, ROT0, "Sammy", "Ranger Mission", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2004, salmankt, awbios, aw2c, aw2c, salmankt, ROT0, "Sammy", "Salary Man Kintarou", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2004, ftspeed, awbios, aw1c, aw1w, ftspeed, ROT0, "Sammy", "Faster Than Speed", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2004, kov7sprt, awbios, aw2c, aw2c, kov7sprt, ROT0, "Sammy / IGS", "Knights of Valour - The Seven Spirits", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
-GAME( 2005, vfurlong, awbios, aw2c, aw2c, vfurlong, ROT0, "Sammy", "Net Select Keiba Victory Furlong", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2004, rumblef2, awbios, aw2c, aw2c, rumblef2, ROT0, "Sammy / Dimps", "The Rumble Fish 2", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2005, anmlbskt, awbios, aw2c, aw2c, anmlbskt, ROT0, "Sammy / Moss", "Animal Basket", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2005, ngbc, awbios, aw2c, aw2c, ngbc, ROT0, "Sammy / SNK Playmore", "Neo-Geo Battle Coliseum", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2005, samsptk, awbios, aw2c, aw2c, samsptk, ROT0, "Sammy / SNK Playmore", "Samurai Spirits Tenkaichi Kenkakuden", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2005, kofxi, awbios, aw2c, aw2c, kofxi, ROT0, "Sammy / SNK Playmore", "The King of Fighters XI", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2005, fotns, awbios, aw2c, aw2c, fotns, ROT0, "Sega / Arc System Works", "Fist Of The North Star", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2005, kofnw, awbios, aw2c, aw2c, kofnw, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2005, kofnwj, kofnw, aw2c, aw2c, kofnw, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave (Japan)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2005, xtrmhunt, awbios, aw2c, aw2c, xtrmhunt, ROT0, "Sammy", "Extreme Hunting", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
-GAME( 2006, mslug6, awbios, aw2c, aw2c, mslug6, ROT0, "Sega / SNK Playmore", "Metal Slug 6", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
-GAME( 2006, xtrmhnt2, awbios, aw2c, aw2c, xtrmhnt2, ROT0, "Sega", "Extreme Hunting 2", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2001, awbios, 0, aw2c, aw2c, atomiswave, ROT0, "Sammy", "Atomiswave Bios", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
+
+GAME( 2002, maxspeed, awbios, aw1c, aw1w, atomiswave, ROT0, "Sammy", "Maximum Speed", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2002, sprtshot, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy USA", "Sports Shooting USA", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2003, ggx15, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy / Arc System Works", "Guilty Gear X ver. 1.5", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 2003, demofist, awbios, aw2c, aw2c, atomiswave, ROT0, "Polygon Magic / Dimps", "Demolish Fist", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2003, dolphin, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy", "Dolphin Blue", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 2003, ggisuka, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy / Arc System Works", "Guilty Gear Isuka", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 2004, dirtypig, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy", "Dirty Pigskin Football", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 2004, rumblef, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 2004, rangrmsn, awbios, aw2c, aw1w, atomiswave, ROT0, "Sammy", "Ranger Mission", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2004, salmankt, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy", "Salary Man Kintarou", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2004, ftspeed, awbios, aw1c, aw1w, atomiswave, ROT0, "Sammy", "Faster Than Speed", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2004, kov7sprt, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy / IGS", "Knights of Valour - The Seven Spirits", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 2005, vfurlong, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy", "Net Select Keiba Victory Furlong", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2004, rumblef2, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy / Dimps", "The Rumble Fish 2", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2005, anmlbskt, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy / Moss", "Animal Basket", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2005, ngbc, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy / SNK Playmore", "Neo-Geo Battle Coliseum", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2005, samsptk, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy / SNK Playmore", "Samurai Spirits Tenkaichi Kenkakuden", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2005, kofxi, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters XI", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2005, fotns, awbios, aw2c, aw2c, atomiswave, ROT0, "Sega / Arc System Works", "Fist Of The North Star", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2005, kofnw, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2005, kofnwj, kofnw, aw2c, aw2c, atomiswave, ROT0, "Sammy / SNK Playmore", "The King of Fighters Neowave (Japan)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2005, xtrmhunt, awbios, aw2c, aw2c, atomiswave, ROT0, "Sammy", "Extreme Hunting", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
+GAME( 2006, mslug6, awbios, aw2c, aw2c, atomiswave, ROT0, "Sega / SNK Playmore", "Metal Slug 6", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 2006, xtrmhnt2, awbios, aw2c, aw2c, atomiswave, ROT0, "Sega", "Extreme Hunting 2", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
diff --git a/src/mame/drivers/triforce.c b/src/mame/drivers/triforce.c
index db59d487b3e..a5acab9c445 100644
--- a/src/mame/drivers/triforce.c
+++ b/src/mame/drivers/triforce.c
@@ -401,7 +401,7 @@ Notes:
#include "emu.h"
#include "cpu/powerpc/ppc.h"
-#include "includes/naomibd.h"
+#include "machine/naomigd.h"
static ADDRESS_MAP_START( gc_map, AS_PROGRAM, 32 )
AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share2") /* Program ROM */
@@ -443,7 +443,7 @@ static MACHINE_CONFIG_START( triforce_base, driver_device )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( triforcegd, triforce_base )
- MCFG_NAOMI_DIMM_BOARD_ADD("rom_board", "gdrom", NULL, 256, "picreturn")
+ MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", "gdrom", "picreturn", NULL, "maincpu", NULL)
MACHINE_CONFIG_END
#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \
diff --git a/src/mame/includes/naomi.h b/src/mame/includes/naomi.h
index b8bcbd1b964..6f85d9d5a06 100644
--- a/src/mame/includes/naomi.h
+++ b/src/mame/includes/naomi.h
@@ -44,3 +44,5 @@ extern UINT64 *naomi_ram64;
extern int jvsboard_type;
extern UINT16 actel_id;
+
+void naomi_g1_irq(running_machine &machine);
diff --git a/src/mame/includes/naomibd.h b/src/mame/includes/naomibd.h
deleted file mode 100644
index 3ad71fc2d00..00000000000
--- a/src/mame/includes/naomibd.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*************************************************************************
-
- Naomi plug-in board
-
- driver by Samuele Zannoli
-
-**************************************************************************/
-
-#include "devlegcy.h"
-
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-/* enumeration specifying which model of board we are emulating */
-enum
-{
- ROM_BOARD,
- DIMM_BOARD,
- AW_ROM_BOARD,
- MAX_NAOMIBD_TYPES
-};
-
-
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-typedef void (*naomibd_signal_func)(device_t *device, int signal, int state);
-
-typedef struct _naomibd_config naomibd_config;
-struct _naomibd_config
-{
- int type;
- int size;
- const char * regiontag;
- const char * gdromregiontag;
- const char * picregiontag;
- naomibd_signal_func signal;
-};
-
-
-
-/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
-
-#define MCFG_NAOMIBD_ADD(_tag, _type) \
- MCFG_DEVICE_ADD(_tag, NAOMI_BOARD, 0) \
- MCFG_DEVICE_CONFIG_DATA32(naomibd_config, type, _type)
-
-#define MCFG_NAOMI_ROM_BOARD_ADD(_tag, _region) \
- MCFG_NAOMIBD_ADD(_tag, ROM_BOARD) \
- MCFG_NAOMIBD_REGION(_region)
-
-#define MCFG_AW_ROM_BOARD_ADD(_tag, _region) \
- MCFG_NAOMIBD_ADD(_tag, AW_ROM_BOARD) \
- MCFG_NAOMIBD_REGION(_region)
-
-#define MCFG_NAOMI_DIMM_BOARD_ADD(_tag, _gdrom, _callback, _sizemb, _pic) \
- MCFG_NAOMIBD_ADD(_tag, DIMM_BOARD) \
- MCFG_DEVICE_CONFIG_DATAPTR(naomibd_config, signal, _callback) \
- MCFG_NAOMIBD_GDROM_REGION(_gdrom) \
- MCFG_NAOMIBD_SIZE(_sizemb) \
- MCFG_NAOMIBD_PIC_REGION(_pic)
-
-#define MCFG_NAOMIBD_REGION(_region) \
- MCFG_DEVICE_CONFIG_DATAPTR(naomibd_config, regiontag, _region)
-
-#define MCFG_NAOMIBD_GDROM_REGION(_region) \
- MCFG_DEVICE_CONFIG_DATAPTR(naomibd_config, gdromregiontag, _region)
-
-#define MCFG_NAOMIBD_PIC_REGION(_region) \
- MCFG_DEVICE_CONFIG_DATAPTR(naomibd_config, picregiontag, _region)
-
-#define MCFG_NAOMIBD_SIZE(_sizemb) \
- MCFG_DEVICE_CONFIG_DATA32(naomibd_config, size, _sizemb)
-
-#define MCFG_NAOMIBD_MODIFY(_tag) \
- MCFG_DEVICE_MODIFY(_tag)
-
-/*#define MCFG_NAOMIBD_TMU_MEMORY(_tmu, _tmumem) \
- MCFG_DEVICE_CONFIG_DATA32(naomibd_config, tmumem##_tmu, _tmumem)*/
-
-
-/*----------- defined in machine/naomibd.c -----------*/
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-int naomibd_get_type(device_t *device);
-void *naomibd_get_memory(device_t *device, UINT32 length);
-offs_t naomibd_get_dmaoffset(device_t *device);
-
-READ64_DEVICE_HANDLER( naomibd_r );
-WRITE64_DEVICE_HANDLER( naomibd_w );
-
-/* ----- device interface ----- */
-
-DECLARE_LEGACY_DEVICE(NAOMI_BOARD, naomibd);
diff --git a/src/mame/machine/awboard.c b/src/mame/machine/awboard.c
index e69de29bb2d..e7fdcefee8d 100644
--- a/src/mame/machine/awboard.c
+++ b/src/mame/machine/awboard.c
@@ -0,0 +1,330 @@
+#define ADDRESS_MAP_MODERN
+
+#include "emu.h"
+#include "awboard.h"
+
+/*
+
+Atomiswave ROM board specs from Cah4e3 @ http://cah4e3.wordpress.com/2009/07/26/some-atomiswave-info/
+
+ AW_EPR_OFFSETL Register addres: 0x5f7000
+ +-------------------------------------------------------------------------------+
+ | bit15-0 |
+ +-------------------------------------------------------------------------------+
+ | EPR data offset low word |
+ +-------------------------------------------------------------------------------+
+
+ AW_EPR_OFFSETH Register addres: 0x5f7004
+ +-------------------------------------------------------------------------------+
+ | bit15-0 |
+ +-------------------------------------------------------------------------------+
+ | EPR data offset hi word |
+ +-------------------------------------------------------------------------------+
+
+ Both low and high words of 32-bit offset from start of EPR-ROM area. Used for
+ reading header and program code data, cannot be used for reading MPR-ROMs data.
+
+ AW_MPR_RECORD_INDEX Register addres: 0x5f700c
+ +-------------------------------------------------------------------------------+
+ | bit15-0 |
+ +-------------------------------------------------------------------------------+
+ | File system record index |
+ +-------------------------------------------------------------------------------+
+
+ This register contains index of MPR-ROM file system record (64-bytes in size) to
+ read throught DMA. Internal DMA offset register is assigned as AW_MPR_RECORD_INDEX<<6
+ from start of MPR-ROM area. Size of DMA transaction not limited, it is possible
+ to read any number of records or just part of it.
+
+ AW_MPR_FIRST_FILE_INDEX Register addres: 0x5f7010
+ +-------------------------------------------------------------------------------+
+ | bit15-0 |
+ +-------------------------------------------------------------------------------+
+ | First file record index |
+ +-------------------------------------------------------------------------------+
+
+ This register assign for internal cart circuit index of record in MPR-ROM file
+ system sub-area that contain information about first file of MPR-ROM files
+ sub-area. Internal circuit using this record to read absolute first file offset
+ from start of MPR-ROM area and calculate normal offset for each other file
+ requested, since MPR-ROM file data sub-area can be assighed only with relative
+ offsets from start of such sub-area.
+
+ AW_MPR_FILE_OFFSETL Register addres: 0x5f7014
+ +-------------------------------------------------------------------------------+
+ | bit15-0 |
+ +-------------------------------------------------------------------------------+
+ | MPR file offset low word |
+ +-------------------------------------------------------------------------------+
+
+ AW_MPR_FILE_OFFSETH Register addres: 0x5f7018
+ +-------------------------------------------------------------------------------+
+ | bit15-0 |
+ +-------------------------------------------------------------------------------+
+ | MPR file offset hi word |
+ +-------------------------------------------------------------------------------+
+
+ Both low and high words of 32-bit relative offset from start of MPR-ROM files
+ sub-area. Used by internal circuit to calculate absolute offset using data
+ from AW_MPR_FIRST_FILE_INDEX register. Cannot be used for reading EPR-ROM
+ data nor even MPR-ROM file system sub-area data.
+
+ In short:
+
+ EPR-ROM
+ +--------------+ 0x00000000
+ | |
+ | HEADER +- AW_EPR_OFFSET << 1
+ | |
+ +--------------+
+ | |
+ | CODE +- AW_EPR_OFFSET << 1
+ | |
+ | |
+ +--------------+ 0x007fffff
+
+ MPR-ROMS
+ +--------------+ 0x00000000
+ | FS_HEADER |
+ | FS_RECORD[1] +- (AW_MPR_RECORD_INDEX << 6)
+ | FS_RECORD[2] |
+ | FS_RECORD[3] +- (AW_MPR_FIRST_FILE_INDEX << 6)
+ | ... |
+ | FS_RECORD[N] |
+ +--------------+- FS_RECORD[AW_MPR_FIRST_FILE_INDEX].FILE_ABS_OFFSET
+ | FILE_0 |
+ | FILE_1 +- (AW_MPR_FILE_OFFSET << 1) + FS_RECORD[AW_MPR_FIRST_FILE_INDEX].FILE_ABS_OFFSET
+ | ... |
+ | FILE_N |
+ +--------------+ 0x07ffffff
+
+*/
+
+const device_type AW_ROM_BOARD = &device_creator<aw_rom_board>;
+
+DEVICE_ADDRESS_MAP_START(submap, 16, aw_rom_board)
+ AM_RANGE(0x00, 0x01) AM_WRITE(epr_offsetl_w)
+ AM_RANGE(0x02, 0x03) AM_WRITE(epr_offseth_w)
+ AM_RANGE(0x06, 0x07) AM_WRITE(mpr_record_index_w)
+ AM_RANGE(0x08, 0x09) AM_WRITE(mpr_first_file_index_w)
+ AM_RANGE(0x0a, 0x0b) AM_WRITE(mpr_file_offsetl_w)
+ AM_RANGE(0x0c, 0x0d) AM_WRITE(mpr_file_offseth_w)
+ADDRESS_MAP_END
+
+aw_rom_board::aw_rom_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : naomi_g1_device(mconfig, AW_ROM_BOARD, "AW-ROM-BOARD", tag, owner, clock)
+{
+ region_is_decrypted = false;
+ keyregion = 0;
+}
+
+void aw_rom_board::static_set_keyregion(device_t &device, const char *_keyregion)
+{
+ aw_rom_board &dev = downcast<aw_rom_board &>(device);
+ dev.keyregion = _keyregion;
+}
+
+
+/*
+We are using 20 bits keys with the following subfields' structure:
+bits 0-15 is a 16-bits XOR
+bits 17-16 is a index to the sboxes table
+bits 19-18 is a index to the permutation table
+
+These subfields could be differing from the "real" ones in the following ways:
+- Every one of the index subfields could be suffering an arbitrary bitswap and XOR
+- The 16-bits-XOR subfield could suffer an arbitrary XOR which could depend on the 4 index bits (that is: a different XOR per every index combination)
+- Of course, the way in which we are mixing 3 subfields in one only key is arbitrary too.
+
+The keys are stored as 32-bits big-endian values in a file.
+*/
+
+
+const int aw_rom_board::permutation_table[4][16] =
+{
+ {8,10,1,3,7,4,11,2,5,15,6,0,12,13,9,14},
+ {4,5,9,6,1,13,7,11,10,0,14,12,8,15,2,3},
+ {12,7,11,2,0,5,15,6,1,8,14,4,9,13,3,10},
+ {14,1,11,15,7,3,8,13,0,4,2,12,6,10,5,9}
+};
+
+const aw_rom_board::sbox_set aw_rom_board::sboxes_table[4] =
+{
+ {
+ {4,12,8,14,16,30,31,0,23,29,24,21,11,22,27,5,3,20,18,26,10,7,17,1,28,6,15,13,2,9,25,19},
+ {13,1,0,9,5,12,4,14,3,15,2,10,11,6,8,7},
+ {7,13,4,6,5,9,3,2,0,15,12,10,8,11,1,14},
+ {4,0,1,2,5,7,3,6}
+ },
+ {
+ {3,0,14,17,10,15,31,20,13,2,29,28,9,18,25,27,6,19,30,22,7,12,1,16,23,11,24,4,8,26,21,5},
+ {2,10,6,9,11,13,4,5,3,15,7,14,12,1,0,8},
+ {1,13,11,3,8,7,9,10,12,15,4,14,0,5,6,2},
+ {6,5,0,3,7,1,4,2}
+ },
+ {
+ {9,15,28,7,13,24,2,23,21,1,22,16,18,8,17,31,27,6,30,12,4,20,5,19,0,25,3,29,10,14,11,26},
+ {5,2,13,11,8,6,12,1,4,3,0,10,14,15,7,9},
+ {11,6,10,0,12,1,8,14,2,9,13,3,7,4,15,5},
+ {1,5,6,2,4,7,3,0}
+ },
+ {
+ {17,3,31,2,28,10,9,29,6,25,24,8,13,1,19,15,22,0,14,20,16,7,21,4,18,26,27,5,12,23,11,30},
+ {4,8,11,15,3,14,7,12,1,0,9,5,6,13,2,10},
+ {14,0,9,11,4,1,7,5,13,6,8,12,2,3,10,15},
+ {2,1,0,5,4,6,7,3}
+ },
+};
+
+UINT16 aw_rom_board::decrypt(UINT16 cipherText, UINT32 address, const UINT32 key)
+{
+ UINT8 b0,b1,b2,b3;
+ UINT16 aux;
+ const int* pbox = permutation_table[key>>18];
+ const sbox_set* ss = &sboxes_table[(key>>16)&3];
+
+ aux = BITSWAP16(cipherText,
+ pbox[15],pbox[14],pbox[13],pbox[12],pbox[11],pbox[10],pbox[9],pbox[8],
+ pbox[7],pbox[6],pbox[5],pbox[4],pbox[3],pbox[2],pbox[1],pbox[0]);
+ aux = aux ^ BITSWAP16(address >> 1, 13,5,2, 14,10,9,4, 15,11,6,1, 12,8,7,3,0);
+
+ b0 = aux&0x1f;
+ b1 = (aux>>5)&0xf;
+ b2 = (aux>>9)&0xf;
+ b3 = aux>>13;
+
+ b0 = ss->S0[b0];
+ b1 = ss->S1[b1];
+ b2 = ss->S2[b2];
+ b3 = ss->S3[b3];
+
+ return ((b3<<13)|(b2<<9)|(b1<<5)|b0)^(key&0xffff);
+}
+
+void aw_rom_board::decrypt_region()
+{
+ if(region_is_decrypted)
+ return;
+ region_is_decrypted = true;
+
+ if(!m_region)
+ throw emu_fatalerror("AW-ROM-BOARD: region %s is missing\n", tag());
+
+ if(!keyregion)
+ return;
+
+ const memory_region *kr = machine().region(keyregion);
+ if(!kr)
+ return;
+
+ if(kr->bytes() != 4)
+ throw emu_fatalerror("AW-ROM-BOARD: key region %s has incorrect size (%d, expected 4)\n", keyregion, kr->bytes());
+
+ const UINT8 *krp = kr->base();
+ UINT32 key = (krp[0] << 24) | (krp[1] << 16) | (krp[2] << 8) | krp[3];
+ UINT16 *src = (UINT16 *)m_region->base();
+ UINT32 rom_size = m_region->bytes();
+ for(UINT32 i=0; i<rom_size/2; i++)
+ src[i] = decrypt(src[i], i*2, key);
+}
+
+void aw_rom_board::device_start()
+{
+ naomi_g1_device::device_start();
+ decrypt_region();
+
+ save_item(NAME(epr_offset));
+ save_item(NAME(mpr_record_index));
+ save_item(NAME(mpr_first_file_index));
+ save_item(NAME(mpr_file_offset));
+ save_item(NAME(dma_offset));
+ save_item(NAME(dma_limit));
+}
+
+void aw_rom_board::device_reset()
+{
+ naomi_g1_device::device_reset();
+ epr_offset = 0;
+ mpr_record_index = 0;
+ mpr_first_file_index = 0;
+ mpr_file_offset = 0;
+
+ dma_offset = 0;
+ dma_limit = 0;
+}
+
+WRITE16_MEMBER(aw_rom_board::epr_offsetl_w)
+{
+ epr_offset = (epr_offset & 0xffff0000) | data;
+ recalc_dma_offset(EPR);
+}
+
+WRITE16_MEMBER(aw_rom_board::epr_offseth_w)
+{
+ epr_offset = (epr_offset & 0x0000ffff) | (data << 16);
+ recalc_dma_offset(EPR);
+}
+
+WRITE16_MEMBER(aw_rom_board::mpr_record_index_w)
+{
+ mpr_record_index = data;
+ recalc_dma_offset(MPR_RECORD);
+}
+
+WRITE16_MEMBER(aw_rom_board::mpr_first_file_index_w)
+{
+ mpr_first_file_index = data;
+ recalc_dma_offset(MPR_FILE);
+}
+
+WRITE16_MEMBER(aw_rom_board::mpr_file_offsetl_w)
+{
+ mpr_file_offset = (mpr_file_offset & 0xffff0000) | data;
+ recalc_dma_offset(MPR_FILE);
+}
+
+WRITE16_MEMBER(aw_rom_board::mpr_file_offseth_w)
+{
+ mpr_file_offset = (mpr_file_offset & 0x0000ffff) | (data << 16);
+ recalc_dma_offset(MPR_FILE);
+}
+
+void aw_rom_board::recalc_dma_offset(int mode)
+{
+ switch(mode) {
+ case EPR:
+ dma_offset = epr_offset * 2;
+ dma_limit = 0x1000000;
+ break;
+
+ case MPR_RECORD:
+ dma_offset = 0x1000000 + mpr_record_index * 0x40;
+ dma_limit = m_region->bytes();
+ break;
+
+ case MPR_FILE: {
+ const UINT8 *entry = m_region->base() + 0x1000000 + mpr_first_file_index * 0x40;
+ dma_offset = 0x1000000 + (entry[8] | (entry[9] << 8) | (entry[10] << 16) | (entry[11] << 24)) + mpr_file_offset*2;
+ dma_limit = m_region->bytes();
+ break;
+ }
+ }
+}
+
+void aw_rom_board::dma_get_position(UINT8 *&base, UINT32 &limit, bool to_mainram)
+{
+ if(!to_mainram) {
+ limit = 0;
+ base = 0;
+ return;
+ }
+
+ limit = dma_limit - dma_offset;
+ base = m_region->base() + dma_offset;
+}
+
+void aw_rom_board::dma_advance(UINT32 size)
+{
+ dma_offset += size;
+}
+
diff --git a/src/mame/machine/awboard.h b/src/mame/machine/awboard.h
index e69de29bb2d..9eb51e29b4b 100644
--- a/src/mame/machine/awboard.h
+++ b/src/mame/machine/awboard.h
@@ -0,0 +1,61 @@
+#ifndef _AWBOARD_H_
+#define _AWBOARD_H_
+
+#include "naomig1.h"
+
+#define MCFG_AW_ROM_BOARD_ADD(_tag, _keyregion, _maincpu_tag, _irq_cb) \
+ MCFG_NAOMI_G1_ADD(_tag, AW_ROM_BOARD, _maincpu_tag, _irq_cb) \
+ aw_rom_board::static_set_keyregion(*device, _keyregion);
+
+class aw_rom_board : public naomi_g1_device
+{
+public:
+ aw_rom_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ static void static_set_keyregion(device_t &device, const char *_keyregion);
+
+ DECLARE_ADDRESS_MAP(submap, 16);
+
+ DECLARE_WRITE16_MEMBER(epr_offsetl_w); // 5f7000
+ DECLARE_WRITE16_MEMBER(epr_offseth_w); // 5f7004
+ DECLARE_WRITE16_MEMBER(mpr_record_index_w); // 5f700c
+ DECLARE_WRITE16_MEMBER(mpr_first_file_index_w); // 5f7010
+ DECLARE_WRITE16_MEMBER(mpr_file_offsetl_w); // 5f7014
+ DECLARE_WRITE16_MEMBER(mpr_file_offseth_w); // 5f7018
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+ virtual void dma_get_position(UINT8 *&base, UINT32 &limit, bool to_mainram);
+ virtual void dma_advance(UINT32 size);
+
+private:
+ enum { EPR, MPR_RECORD, MPR_FILE };
+
+ const char *keyregion;
+ bool region_is_decrypted;
+
+ UINT32 epr_offset, mpr_file_offset;
+ UINT16 mpr_record_index, mpr_first_file_index;
+
+ UINT32 dma_offset, dma_limit;
+
+ struct sbox_set {
+ UINT8 S0[32];
+ UINT8 S1[16];
+ UINT8 S2[16];
+ UINT8 S3[8];
+ };
+
+ static const int permutation_table[4][16];
+ static const sbox_set sboxes_table[4];
+ static UINT16 decrypt(UINT16 cipherText, UINT32 address, const UINT32 key);
+
+ void decrypt_region();
+ void recalc_dma_offset(int mode);
+};
+
+extern const device_type AW_ROM_BOARD;
+
+#endif
diff --git a/src/mame/machine/dc.c b/src/mame/machine/dc.c
index 7a5ef236875..4449c3f2fce 100644
--- a/src/mame/machine/dc.c
+++ b/src/mame/machine/dc.c
@@ -9,7 +9,6 @@
#include "includes/dc.h"
#include "cpu/sh4/sh4.h"
#include "sound/aica.h"
-#include "includes/naomibd.h"
#include "includes/naomi.h"
#include "machine/mie.h"
@@ -120,9 +119,8 @@ static TIMER_CALLBACK( pvr_dma_irq )
dc_update_interrupt_status(machine);
}
-static TIMER_CALLBACK( gdrom_dma_irq )
+void naomi_g1_irq(running_machine &machine)
{
- g1bus_regs[SB_GDST] = 0;
dc_sysctrl_regs[SB_ISTNRM] |= IST_DMA_GDROM;
dc_update_interrupt_status(machine);
}
@@ -503,67 +501,6 @@ WRITE64_HANDLER( dc_gdrom_w )
mame_printf_verbose("GDROM: [%08x=%x]write %" I64FMT "x to %x, mask %" I64FMT "x\n", 0x5f7000+off*4, dat, data, offset, mem_mask);
}
-READ64_HANDLER( dc_g1_ctrl_r )
-{
- int reg;
- UINT64 shift;
-
- reg = decode_reg32_64(space->machine(), offset, mem_mask, &shift);
- mame_printf_verbose("G1CTRL: Unmapped read %08x\n", 0x5f7400+reg*4);
- return (UINT64)g1bus_regs[reg] << shift;
-}
-
-WRITE64_HANDLER( dc_g1_ctrl_w )
-{
- int reg;
- UINT64 shift;
- UINT32 old,dat;
- struct sh4_ddt_dma ddtdata;
- UINT8 *ROM;
- UINT32 dmaoffset;
-
- reg = decode_reg32_64(space->machine(), offset, mem_mask, &shift);
- dat = (UINT32)(data >> shift);
- old = g1bus_regs[reg];
-
- g1bus_regs[reg] = dat; // 5f7400+reg*4=dat
- mame_printf_verbose("G1CTRL: [%08x=%x] write %" I64FMT "x to %x, mask %" I64FMT "x\n", 0x5f7400+reg*4, dat, data, offset, mem_mask);
- switch (reg)
- {
- case SB_GDST:
- g1bus_regs[SB_GDST] = old;
- if (((old & 1) == 0) && (dat & 1) && g1bus_regs[SB_GDEN] == 1) // 0 -> 1
- {
- if (g1bus_regs[SB_GDDIR] == 0)
- {
- printf("G1CTRL: unsupported transfer\n");
- return;
- }
- g1bus_regs[SB_GDST] = dat & 1;
-// printf("Cart DMA to %x len %x (PC %x)\n", g1bus_regs[SB_GDSTAR], g1bus_regs[SB_GDLEN], cpu_get_pc(&space->device()));
- ROM = (UINT8 *)naomibd_get_memory(space->machine().device("rom_board"), g1bus_regs[SB_GDLEN]);
- dmaoffset = naomibd_get_dmaoffset(space->machine().device("rom_board"));
- ddtdata.destination=g1bus_regs[SB_GDSTAR]; // destination address
- ddtdata.length=g1bus_regs[SB_GDLEN] >> 5; // words to transfer
- /* data in the lower 5 bits makes the length size to round by 32 bytes, this'll be needed by Virtua Tennis to boot (according to Deunan) */
- if(g1bus_regs[SB_GDLEN] & 0x1c)
- ddtdata.length++;
-
- ddtdata.size=32; // bytes per word
- ddtdata.buffer=ROM+dmaoffset; // buffer address
- ddtdata.direction=1; // 0 source to buffer, 1 buffer to destination
- ddtdata.channel= -1; // not used
- ddtdata.mode= -1; // copy from/to buffer
- mame_printf_verbose("G1CTRL: transfer %x from ROM %08x to sdram %08x\n", g1bus_regs[SB_GDLEN], dmaoffset, g1bus_regs[SB_GDSTAR]);
- sh4_dma_ddt(space->machine().device("maincpu"), &ddtdata);
- /* Note: KOF Neowave definitely wants this to be delayed (!) */
- /* FIXME: timing of this */
- space->machine().scheduler().timer_set(attotime::from_usec(500), FUNC(gdrom_dma_irq));
- }
- break;
- }
-}
-
READ64_HANDLER( dc_g2_ctrl_r )
{
int reg;
diff --git a/src/mame/machine/gdcrypt.c b/src/mame/machine/gdcrypt.c
deleted file mode 100644
index 19a52102610..00000000000
--- a/src/mame/machine/gdcrypt.c
+++ /dev/null
@@ -1,383 +0,0 @@
-
-/* DES decryption, used by GD-ROM based titles (Naomi etc.) */
-
-#include "emu.h"
-#include "includes/naomi.h"
-
-static UINT32 des_subkeys[32];
-
-static const UINT32 DES_LEFTSWAP[] =
-{
- 0x00000000, 0x00000001, 0x00000100, 0x00000101, 0x00010000, 0x00010001, 0x00010100, 0x00010101,
- 0x01000000, 0x01000001, 0x01000100, 0x01000101, 0x01010000, 0x01010001, 0x01010100, 0x01010101
-};
-
-static const UINT32 DES_RIGHTSWAP[] =
-{
- 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100,
- 0x00000001, 0x01000001, 0x00010001, 0x01010001, 0x00000101, 0x01000101, 0x00010101, 0x01010101,
-};
-
-static const UINT32 DES_SBOX1[] =
-{
- 0x00808200, 0x00000000, 0x00008000, 0x00808202, 0x00808002, 0x00008202, 0x00000002, 0x00008000,
- 0x00000200, 0x00808200, 0x00808202, 0x00000200, 0x00800202, 0x00808002, 0x00800000, 0x00000002,
- 0x00000202, 0x00800200, 0x00800200, 0x00008200, 0x00008200, 0x00808000, 0x00808000, 0x00800202,
- 0x00008002, 0x00800002, 0x00800002, 0x00008002, 0x00000000, 0x00000202, 0x00008202, 0x00800000,
- 0x00008000, 0x00808202, 0x00000002, 0x00808000, 0x00808200, 0x00800000, 0x00800000, 0x00000200,
- 0x00808002, 0x00008000, 0x00008200, 0x00800002, 0x00000200, 0x00000002, 0x00800202, 0x00008202,
- 0x00808202, 0x00008002, 0x00808000, 0x00800202, 0x00800002, 0x00000202, 0x00008202, 0x00808200,
- 0x00000202, 0x00800200, 0x00800200, 0x00000000, 0x00008002, 0x00008200, 0x00000000, 0x00808002
-};
-
-static const UINT32 DES_SBOX2[] =
-{
- 0x40084010, 0x40004000, 0x00004000, 0x00084010, 0x00080000, 0x00000010, 0x40080010, 0x40004010,
- 0x40000010, 0x40084010, 0x40084000, 0x40000000, 0x40004000, 0x00080000, 0x00000010, 0x40080010,
- 0x00084000, 0x00080010, 0x40004010, 0x00000000, 0x40000000, 0x00004000, 0x00084010, 0x40080000,
- 0x00080010, 0x40000010, 0x00000000, 0x00084000, 0x00004010, 0x40084000, 0x40080000, 0x00004010,
- 0x00000000, 0x00084010, 0x40080010, 0x00080000, 0x40004010, 0x40080000, 0x40084000, 0x00004000,
- 0x40080000, 0x40004000, 0x00000010, 0x40084010, 0x00084010, 0x00000010, 0x00004000, 0x40000000,
- 0x00004010, 0x40084000, 0x00080000, 0x40000010, 0x00080010, 0x40004010, 0x40000010, 0x00080010,
- 0x00084000, 0x00000000, 0x40004000, 0x00004010, 0x40000000, 0x40080010, 0x40084010, 0x00084000
-};
-
-static const UINT32 DES_SBOX3[] =
-{
- 0x00000104, 0x04010100, 0x00000000, 0x04010004, 0x04000100, 0x00000000, 0x00010104, 0x04000100,
- 0x00010004, 0x04000004, 0x04000004, 0x00010000, 0x04010104, 0x00010004, 0x04010000, 0x00000104,
- 0x04000000, 0x00000004, 0x04010100, 0x00000100, 0x00010100, 0x04010000, 0x04010004, 0x00010104,
- 0x04000104, 0x00010100, 0x00010000, 0x04000104, 0x00000004, 0x04010104, 0x00000100, 0x04000000,
- 0x04010100, 0x04000000, 0x00010004, 0x00000104, 0x00010000, 0x04010100, 0x04000100, 0x00000000,
- 0x00000100, 0x00010004, 0x04010104, 0x04000100, 0x04000004, 0x00000100, 0x00000000, 0x04010004,
- 0x04000104, 0x00010000, 0x04000000, 0x04010104, 0x00000004, 0x00010104, 0x00010100, 0x04000004,
- 0x04010000, 0x04000104, 0x00000104, 0x04010000, 0x00010104, 0x00000004, 0x04010004, 0x00010100
-};
-
-static const UINT32 DES_SBOX4[] =
-{
- 0x80401000, 0x80001040, 0x80001040, 0x00000040, 0x00401040, 0x80400040, 0x80400000, 0x80001000,
- 0x00000000, 0x00401000, 0x00401000, 0x80401040, 0x80000040, 0x00000000, 0x00400040, 0x80400000,
- 0x80000000, 0x00001000, 0x00400000, 0x80401000, 0x00000040, 0x00400000, 0x80001000, 0x00001040,
- 0x80400040, 0x80000000, 0x00001040, 0x00400040, 0x00001000, 0x00401040, 0x80401040, 0x80000040,
- 0x00400040, 0x80400000, 0x00401000, 0x80401040, 0x80000040, 0x00000000, 0x00000000, 0x00401000,
- 0x00001040, 0x00400040, 0x80400040, 0x80000000, 0x80401000, 0x80001040, 0x80001040, 0x00000040,
- 0x80401040, 0x80000040, 0x80000000, 0x00001000, 0x80400000, 0x80001000, 0x00401040, 0x80400040,
- 0x80001000, 0x00001040, 0x00400000, 0x80401000, 0x00000040, 0x00400000, 0x00001000, 0x00401040
-};
-
-static const UINT32 DES_SBOX5[] =
-{
- 0x00000080, 0x01040080, 0x01040000, 0x21000080, 0x00040000, 0x00000080, 0x20000000, 0x01040000,
- 0x20040080, 0x00040000, 0x01000080, 0x20040080, 0x21000080, 0x21040000, 0x00040080, 0x20000000,
- 0x01000000, 0x20040000, 0x20040000, 0x00000000, 0x20000080, 0x21040080, 0x21040080, 0x01000080,
- 0x21040000, 0x20000080, 0x00000000, 0x21000000, 0x01040080, 0x01000000, 0x21000000, 0x00040080,
- 0x00040000, 0x21000080, 0x00000080, 0x01000000, 0x20000000, 0x01040000, 0x21000080, 0x20040080,
- 0x01000080, 0x20000000, 0x21040000, 0x01040080, 0x20040080, 0x00000080, 0x01000000, 0x21040000,
- 0x21040080, 0x00040080, 0x21000000, 0x21040080, 0x01040000, 0x00000000, 0x20040000, 0x21000000,
- 0x00040080, 0x01000080, 0x20000080, 0x00040000, 0x00000000, 0x20040000, 0x01040080, 0x20000080
-};
-
-static const UINT32 DES_SBOX6[] =
-{
- 0x10000008, 0x10200000, 0x00002000, 0x10202008, 0x10200000, 0x00000008, 0x10202008, 0x00200000,
- 0x10002000, 0x00202008, 0x00200000, 0x10000008, 0x00200008, 0x10002000, 0x10000000, 0x00002008,
- 0x00000000, 0x00200008, 0x10002008, 0x00002000, 0x00202000, 0x10002008, 0x00000008, 0x10200008,
- 0x10200008, 0x00000000, 0x00202008, 0x10202000, 0x00002008, 0x00202000, 0x10202000, 0x10000000,
- 0x10002000, 0x00000008, 0x10200008, 0x00202000, 0x10202008, 0x00200000, 0x00002008, 0x10000008,
- 0x00200000, 0x10002000, 0x10000000, 0x00002008, 0x10000008, 0x10202008, 0x00202000, 0x10200000,
- 0x00202008, 0x10202000, 0x00000000, 0x10200008, 0x00000008, 0x00002000, 0x10200000, 0x00202008,
- 0x00002000, 0x00200008, 0x10002008, 0x00000000, 0x10202000, 0x10000000, 0x00200008, 0x10002008
-};
-
-static const UINT32 DES_SBOX7[] =
-{
- 0x00100000, 0x02100001, 0x02000401, 0x00000000, 0x00000400, 0x02000401, 0x00100401, 0x02100400,
- 0x02100401, 0x00100000, 0x00000000, 0x02000001, 0x00000001, 0x02000000, 0x02100001, 0x00000401,
- 0x02000400, 0x00100401, 0x00100001, 0x02000400, 0x02000001, 0x02100000, 0x02100400, 0x00100001,
- 0x02100000, 0x00000400, 0x00000401, 0x02100401, 0x00100400, 0x00000001, 0x02000000, 0x00100400,
- 0x02000000, 0x00100400, 0x00100000, 0x02000401, 0x02000401, 0x02100001, 0x02100001, 0x00000001,
- 0x00100001, 0x02000000, 0x02000400, 0x00100000, 0x02100400, 0x00000401, 0x00100401, 0x02100400,
- 0x00000401, 0x02000001, 0x02100401, 0x02100000, 0x00100400, 0x00000000, 0x00000001, 0x02100401,
- 0x00000000, 0x00100401, 0x02100000, 0x00000400, 0x02000001, 0x02000400, 0x00000400, 0x00100001
-};
-
-static const UINT32 DES_SBOX8[] =
-{
- 0x08000820, 0x00000800, 0x00020000, 0x08020820, 0x08000000, 0x08000820, 0x00000020, 0x08000000,
- 0x00020020, 0x08020000, 0x08020820, 0x00020800, 0x08020800, 0x00020820, 0x00000800, 0x00000020,
- 0x08020000, 0x08000020, 0x08000800, 0x00000820, 0x00020800, 0x00020020, 0x08020020, 0x08020800,
- 0x00000820, 0x00000000, 0x00000000, 0x08020020, 0x08000020, 0x08000800, 0x00020820, 0x00020000,
- 0x00020820, 0x00020000, 0x08020800, 0x00000800, 0x00000020, 0x08020020, 0x00000800, 0x00020820,
- 0x08000800, 0x00000020, 0x08000020, 0x08020000, 0x08020020, 0x08000000, 0x00020000, 0x08000820,
- 0x00000000, 0x08020820, 0x00020020, 0x08000020, 0x08020000, 0x08000800, 0x08000820, 0x00000000,
- 0x08020820, 0x00020800, 0x00020800, 0x00000820, 0x00000820, 0x00020020, 0x08000000, 0x08020800
-};
-
-static const UINT32 DES_MASK_TABLE[] =
-{
- 0x24000000, 0x10000000, 0x08000000, 0x02080000, 0x01000000,
- 0x00200000, 0x00100000, 0x00040000, 0x00020000, 0x00010000,
- 0x00002000, 0x00001000, 0x00000800, 0x00000400, 0x00000200,
- 0x00000100, 0x00000020, 0x00000010, 0x00000008, 0x00000004,
- 0x00000002, 0x00000001, 0x20000000, 0x10000000, 0x08000000,
- 0x04000000, 0x02000000, 0x01000000, 0x00200000, 0x00100000,
- 0x00080000, 0x00040000, 0x00020000, 0x00010000, 0x00002000,
- 0x00001000, 0x00000808, 0x00000400, 0x00000200, 0x00000100,
- 0x00000020, 0x00000011, 0x00000004, 0x00000002
-};
-
-static const UINT8 DES_ROTATE_TABLE[16] =
-{
- 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
-};
-
-
-INLINE void permutate(UINT32*a, UINT32*b, UINT32 m, int shift)
-{
- UINT32 temp;
- temp = ((*a>>shift) ^ *b) & m;
- *a ^= temp<<shift;
- *b ^= temp;
-}
-
-
-static void des_generate_subkeys(const UINT64 key, UINT32 *subkeys)
-{
- UINT32 l, r;
- int round;
-
- l = (key & 0xffffffff00000000ULL)>>32;
- r = (key & 0x00000000ffffffffULL)>>0;;
-
- permutate(&r, &l, 0x0f0f0f0f, 4);
- permutate(&r, &l, 0x10101010, 0);
-
- l = (DES_LEFTSWAP[(l >> 0) & 0xf] << 3) |
- (DES_LEFTSWAP[(l >> 8) & 0xf] << 2) |
- (DES_LEFTSWAP[(l >> 16) & 0xf] << 1) |
- (DES_LEFTSWAP[(l >> 24) & 0xf] << 0) |
- (DES_LEFTSWAP[(l >> 5) & 0xf] << 7) |
- (DES_LEFTSWAP[(l >> 13) & 0xf] << 6) |
- (DES_LEFTSWAP[(l >> 21) & 0xf] << 5) |
- (DES_LEFTSWAP[(l >> 29) & 0xf] << 4);
-
- r = (DES_RIGHTSWAP[(r >> 1) & 0xf] << 3) |
- (DES_RIGHTSWAP[(r >> 9) & 0xf] << 2) |
- (DES_RIGHTSWAP[(r >> 17) & 0xf] << 1) |
- (DES_RIGHTSWAP[(r >> 25) & 0xf] << 0) |
- (DES_RIGHTSWAP[(r >> 4) & 0xf] << 7) |
- (DES_RIGHTSWAP[(r >> 12) & 0xf] << 6) |
- (DES_RIGHTSWAP[(r >> 20) & 0xf] << 5) |
- (DES_RIGHTSWAP[(r >> 28) & 0xf] << 4);
-
- l &= 0x0fffffff;
- r &= 0x0fffffff;
-
-
- for (round = 0; round < 16; round++)
- {
- l = ((l << DES_ROTATE_TABLE[round]) | (l >> (28 - DES_ROTATE_TABLE[round]))) & 0x0fffffff;
- r = ((r << DES_ROTATE_TABLE[round]) | (r >> (28 - DES_ROTATE_TABLE[round]))) & 0x0fffffff;
-
- subkeys[round*2] =
- ((l << 4) & DES_MASK_TABLE[0]) |
- ((l << 28) & DES_MASK_TABLE[1]) |
- ((l << 14) & DES_MASK_TABLE[2]) |
- ((l << 18) & DES_MASK_TABLE[3]) |
- ((l << 6) & DES_MASK_TABLE[4]) |
- ((l << 9) & DES_MASK_TABLE[5]) |
- ((l >> 1) & DES_MASK_TABLE[6]) |
- ((l << 10) & DES_MASK_TABLE[7]) |
- ((l << 2) & DES_MASK_TABLE[8]) |
- ((l >> 10) & DES_MASK_TABLE[9]) |
- ((r >> 13) & DES_MASK_TABLE[10])|
- ((r >> 4) & DES_MASK_TABLE[11])|
- ((r << 6) & DES_MASK_TABLE[12])|
- ((r >> 1) & DES_MASK_TABLE[13])|
- ((r >> 14) & DES_MASK_TABLE[14])|
- ((r >> 0) & DES_MASK_TABLE[15])|
- ((r >> 5) & DES_MASK_TABLE[16])|
- ((r >> 10) & DES_MASK_TABLE[17])|
- ((r >> 3) & DES_MASK_TABLE[18])|
- ((r >> 18) & DES_MASK_TABLE[19])|
- ((r >> 26) & DES_MASK_TABLE[20])|
- ((r >> 24) & DES_MASK_TABLE[21]);
-
- subkeys[round*2+1] =
- ((l << 15) & DES_MASK_TABLE[22])|
- ((l << 17) & DES_MASK_TABLE[23])|
- ((l << 10) & DES_MASK_TABLE[24])|
- ((l << 22) & DES_MASK_TABLE[25])|
- ((l >> 2) & DES_MASK_TABLE[26])|
- ((l << 1) & DES_MASK_TABLE[27])|
- ((l << 16) & DES_MASK_TABLE[28])|
- ((l << 11) & DES_MASK_TABLE[29])|
- ((l << 3) & DES_MASK_TABLE[30])|
- ((l >> 6) & DES_MASK_TABLE[31])|
- ((l << 15) & DES_MASK_TABLE[32])|
- ((l >> 4) & DES_MASK_TABLE[33])|
- ((r >> 2) & DES_MASK_TABLE[34])|
- ((r << 8) & DES_MASK_TABLE[35])|
- ((r >> 14) & DES_MASK_TABLE[36])|
- ((r >> 9) & DES_MASK_TABLE[37])|
- ((r >> 0) & DES_MASK_TABLE[38])|
- ((r << 7) & DES_MASK_TABLE[39])|
- ((r >> 7) & DES_MASK_TABLE[40])|
- ((r >> 3) & DES_MASK_TABLE[41])|
- ((r << 2) & DES_MASK_TABLE[42])|
- ((r >> 21) & DES_MASK_TABLE[43]);
- }
-}
-
-
-static UINT64 des_encrypt_decrypt(int decrypt, UINT64 ret)
-{
- UINT32 l;
- UINT32 r;
- int i;
- int subkey;
-
- r = (ret & 0x00000000ffffffffULL) >> 0;
- l = (ret & 0xffffffff00000000ULL) >> 32;
-
- permutate(&l, &r, 0x0f0f0f0f, 4);
- permutate(&l, &r, 0x0000ffff, 16);
- permutate(&r, &l, 0x33333333, 2);
- permutate(&r, &l, 0x00ff00ff, 8);
- permutate(&l, &r, 0x55555555, 1);
-
- if (decrypt) subkey = 30;
- else subkey = 0;
-
- for (i = 0; i < 32 ; i+=4)
- {
- UINT32 temp;
-
- temp = ((r<<1) | (r>>31)) ^ des_subkeys[subkey];
- l ^= DES_SBOX8[ (temp>>0) & 0x3f ];
- l ^= DES_SBOX6[ (temp>>8) & 0x3f ];
- l ^= DES_SBOX4[ (temp>>16) & 0x3f ];
- l ^= DES_SBOX2[ (temp>>24) & 0x3f ];
- subkey++;
-
- temp = ((r>>3) | (r<<29)) ^ des_subkeys[subkey];
- l ^= DES_SBOX7[ (temp>>0) & 0x3f ];
- l ^= DES_SBOX5[ (temp>>8) & 0x3f ];
- l ^= DES_SBOX3[ (temp>>16) & 0x3f ];
- l ^= DES_SBOX1[ (temp>>24) & 0x3f ];
- subkey++;
- if (decrypt) subkey-=4;
-
- temp = ((l<<1) | (l>>31)) ^ des_subkeys[subkey];
- r ^= DES_SBOX8[ (temp>>0) & 0x3f ];
- r ^= DES_SBOX6[ (temp>>8) & 0x3f ];
- r ^= DES_SBOX4[ (temp>>16) & 0x3f ];
- r ^= DES_SBOX2[ (temp>>24) & 0x3f ];
- subkey++;
-
- temp = ((l>>3) | (l<<29)) ^ des_subkeys[subkey];
- r ^= DES_SBOX7[ (temp>>0) & 0x3f ];
- r ^= DES_SBOX5[ (temp>>8) & 0x3f ];
- r ^= DES_SBOX3[ (temp>>16) & 0x3f ];
- r ^= DES_SBOX1[ (temp>>24) & 0x3f ];
- subkey++;
- if (decrypt) subkey-=4;
- }
-
- permutate(&r, &l, 0x55555555, 1);
- permutate(&l, &r, 0x00ff00ff, 8);
- permutate(&l, &r, 0x33333333, 2);
- permutate(&r, &l, 0x0000ffff, 16);
- permutate(&r, &l, 0x0f0f0f0f, 4);
-
- return ((UINT64)r << 32) | ((UINT64)l);
-}
-
-static UINT64 rev64(UINT64 src)
-{
- UINT64 ret;
-
- ret = ((src & 0x00000000000000ffULL) << 56)
- | ((src & 0x000000000000ff00ULL) << 40)
- | ((src & 0x0000000000ff0000ULL) << 24)
- | ((src & 0x00000000ff000000ULL) << 8 )
- | ((src & 0x000000ff00000000ULL) >> 8 )
- | ((src & 0x0000ff0000000000ULL) >> 24)
- | ((src & 0x00ff000000000000ULL) >> 40)
- | ((src & 0xff00000000000000ULL) >> 56);
-
- return ret;
-}
-
-static UINT64 read_to_qword(UINT8* region)
-{
- int i;
- UINT64 ret = 0;
-
- for (i=0;i<8;i++)
- {
- UINT8 byte = region[i];
- ret += (UINT64)byte << (56-(8*i));
- }
-
- return ret;
-}
-
-
-static void write_from_qword(UINT8* region, UINT64 qword)
-{
- int i;
- for (i=0;i<8;i++)
- {
- region[i] = qword >> (56-(i*8));
- }
-}
-
-void naomi_game_decrypt(running_machine& machine, UINT64 key, UINT8* region, int length)
-{
- int i;
-
- des_generate_subkeys (rev64(key), des_subkeys);
-
- #ifdef MAME_DEBUG
- /* save the original file */
- {
- FILE *fp;
- char filename[256];
- sprintf(filename,"encrypted %s", machine.system().name);
- fp=fopen(filename, "w+b");
- if (fp)
- {
- fwrite(region, length, 1, fp);
- fclose(fp);
- }
- }
- #endif
-
- for(i=0;i<length;i+=8)
- {
- UINT64 ret;
- ret = read_to_qword(region+i);
- ret = rev64(ret);
- ret = des_encrypt_decrypt(1, ret);
- ret = rev64(ret);
- write_from_qword(region+i, ret);
- }
-
- #ifdef MAME_DEBUG
- /* save the decrypted file */
- {
- FILE *fp;
- char filename[256];
- sprintf(filename,"decrypted %s", machine.system().name);
- fp=fopen(filename, "w+b");
- if (fp)
- {
- fwrite(region, length, 1, fp);
- fclose(fp);
- }
- }
- #endif
-}
-
diff --git a/src/mame/machine/maple-dc.c b/src/mame/machine/maple-dc.c
index 30c5ad7ef2e..6f3e8355083 100644
--- a/src/mame/machine/maple-dc.c
+++ b/src/mame/machine/maple-dc.c
@@ -39,6 +39,7 @@ void maple_dc_device::register_port(int port, maple_device *device)
void maple_dc_device::device_start()
{
+ fprintf(stderr, "Device started\n");
cpu = machine().device<sh4_device>(maincpu_tag);
timer = timer_alloc(0);
diff --git a/src/mame/machine/naomibd.c b/src/mame/machine/naomibd.c
index ce6ba2f9a9e..2d4f62086da 100644
--- a/src/mame/machine/naomibd.c
+++ b/src/mame/machine/naomibd.c
@@ -1,14 +1,8 @@
-/*************************************************************************
+#define ADDRESS_MAP_MODERN
- Naomi plug-in board emulator
-
- emulator by Samuele Zannoli and R. Belmont
- reverse engineering by ElSemi, Deunan Knute, Andreas Naive, Olivier Galibert, and Cah4e3
-
- TODO: "M4" boards allow direct access to the flash chips' commands and IDs.
- Can't implement this w/o access to the ROM test however.
-
-**************************************************************************/
+#include "emu.h"
+#include "naomibd.h"
+#include "machine/x76f100.h"
/*
Naomi ROM board info from ElSemi:
@@ -29,23 +23,6 @@
To access the board using DMA, use the DMA_OFFSETL/H. DMA_COUNT is in units of 0x20 bytes. Then trigger a GDROM DMA request.
- Dimm board registers (add more information if you find it):
-
- Name: Naomi Dimm Bd.
- NAOMI_DIMM_COMMAND = 5f703c 14000014 (16 bit):
- if bits all 1 no dimm board present and other registers not used
- bit 15: during an interrupt is 1 if the dimm board has a command to be executed
- bit 14-9: 6 bit command number (naomi bios understands 0 1 3 4 5 6 8 9 a)
- bit 7-0: higher 8 bits of 24 bit offset parameter
- NAOMI_DIMM_OFFSETL = 5f7040 14000018 (16 bit):
- bit 15-0: lower 16 bits of 24 bit offset parameter
- NAOMI_DIMM_PARAMETERL = 5f7044 1400001c (16 bit)
- NAOMI_DIMM_PARAMETERH = 5f7048 14000020 (16 bit)
- NAOMI_DIMM_STATUS = 5f704c 14000024 (16 bit):
- bit 0: when 0 signal interrupt from naomi to dimm board
- bit 8: when 0 signal interrupt from dimm board to naomi
-
-
Cartridge protection info from Deunan Knute:
NAOMI cart can hold up to 256MB of data (well, 512 is possible too I guess), so the highest bits are used for other, dark and scary purposes.
@@ -72,2127 +49,165 @@
Or it could really be the last address bit to allow up to 512MB of data on a cart?
Normal address starts with 0xa0000000 to enable auto-advance and standard addressing mode.
-
-------------------------
-
-Atomiswave ROM board specs from Cah4e3 @ http://cah4e3.wordpress.com/2009/07/26/some-atomiswave-info/
-
- AW_EPR_OFFSETL Register addres: 0x5f7000
- +-------------------------------------------------------------------------------+
- | bit15-0 |
- +-------------------------------------------------------------------------------+
- | EPR data offset low word |
- +-------------------------------------------------------------------------------+
-
- AW_EPR_OFFSETH Register addres: 0x5f7004
- +-------------------------------------------------------------------------------+
- | bit15-0 |
- +-------------------------------------------------------------------------------+
- | EPR data offset hi word |
- +-------------------------------------------------------------------------------+
-
- Both low and high words of 32-bit offset from start of EPR-ROM area. Used for
- reading header and programm code data, cannot be used for reading MPR-ROMs data.
-
- AW_MPR_RECORD_INDEX Register addres: 0x5f700c
- +-------------------------------------------------------------------------------+
- | bit15-0 |
- +-------------------------------------------------------------------------------+
- | File system record index |
- +-------------------------------------------------------------------------------+
-
- This register contains index of MPR-ROM file system record (64-bytes in size) to
- read throught DMA. Internal DMA offset register is assigned as AW_MPR_RECORD_INDEX<<6
- from start of MPR-ROM area. Size of DMA transaction not limited, it is possible
- to read any number of records or just part of it.
-
- AW_MPR_FIRST_FILE_INDEX Register addres: 0x5f7010
- +-------------------------------------------------------------------------------+
- | bit15-0 |
- +-------------------------------------------------------------------------------+
- | First file record index |
- +-------------------------------------------------------------------------------+
-
- This register assign for internal cart circuit index of record in MPR-ROM file
- system sub-area that contain information about first file of MPR-ROM files
- sub-area. Internal circuit using this record to read absolute first file offset
- from start of MPR-ROM area and calculate normal offset for each other file
- requested, since MPR-ROM file data sub-area can be assighed only with relative
- offsets from start of such sub-area.
-
- AW_MPR_FILE_OFFSETL Register addres: 0x5f7014
- +-------------------------------------------------------------------------------+
- | bit15-0 |
- +-------------------------------------------------------------------------------+
- | MPR file offset low word |
- +-------------------------------------------------------------------------------+
-
- AW_MPR_FILE_OFFSETH Register addres: 0x5f7018
- +-------------------------------------------------------------------------------+
- | bit15-0 |
- +-------------------------------------------------------------------------------+
- | MPR file offset hi word |
- +-------------------------------------------------------------------------------+
-
- Both low and high words of 32-bit relative offset from start of MPR-ROM files
- sub-area. Used by internal circuit to calculate absolute offset using data
- from AW_MPR_FIRST_FILE_INDEX register. Cannot be used for reading EPR-ROM
- data nor even MPR-ROM file system sub-area data.
-
- In short:
-
- EPR-ROM
- +--------------+ 0x00000000
- | |
- | HEADER +- AW_EPR_OFFSET << 1
- | |
- +--------------+
- | |
- | CODE +- AW_EPR_OFFSET << 1
- | |
- | |
- +--------------+ 0x007fffff
-
- MPR-ROMS
- +--------------+ 0x00000000
- | FS_HEADER |
- | FS_RECORD[1] +- (AW_MPR_RECORD_INDEX << 6)
- | FS_RECORD[2] |
- | FS_RECORD[3] +- (AW_MPR_FIRST_FILE_INDEX << 6)
- | ... |
- | FS_RECORD[N] |
- +--------------+- FS_RECORD[AW_MPR_FIRST_FILE_INDEX].FILE_ABS_OFFSET
- | FILE_0 |
- | FILE_1 +- (AW_MPR_FILE_OFFSET << 1) + FS_RECORD[AW_MPR_FIRST_FILE_INDEX].FILE_ABS_OFFSET
- | ... |
- | FILE_N |
- +--------------+ 0x07ffffff
-
*/
-// NOTE: all accesses are 16 or 32 bits wide but only 16 bits are valid
-
-#include "emu.h"
-#include "profiler.h"
-#include "machine/x76f100.h"
-#include "cdrom.h"
-#include "includes/naomi.h"
-#include "includes/naomibd.h"
-#include "naomim4decoder.h"
-
-#define NAOMIBD_FLAG_AUTO_ADVANCE (8) // address auto-advances on read
-#define NAOMIBD_FLAG_SPECIAL_MODE (4) // used to access protection registers
-#define NAOMIBD_FLAG_DMA_COMPRESSION (2) // 0 protection chip decompresses DMA data, 1 for normal DMA reads
-
-#define NAOMIBD_PRINTF_PROTECTION (0) // 1 to printf protection access details
-
-#define CART_RAM_SIZE (2*1024*1024) // must be the size of the largest encrypted M4 DMA transfer to be done
-
-/*************************************
- *
- * Structures
- *
- *************************************/
-
-#define PACK_BUF_SIZE (32768)
-
-enum
-{
- CMD_READY = 0,
- CMD_FETCH,
- CMD_REPEAT
-};
-
-typedef struct _naomibd_config_table naomibd_config_table;
-struct _naomibd_config_table
-{
- const char *name;
- int m2m3_key;
- int m1_key;
- int m4_key;
-};
-
-typedef struct _naomibd_prot naomibd_prot;
-struct _naomibd_prot
-{
- UINT16 last_word, aux_word, pak_word, heading_word;
- UINT16 *ptr;
- int count, pak_bit, control_bits, pak_state, dec_count, pak_buf_size, pak_buf_pos;
- int pak_fetch_ofs;
- UINT8 pak_byte, cmd_byte;
- int seed;
- UINT8 pak_buf[PACK_BUF_SIZE];
-
- UINT8 *s_input;
- UINT8 s_xor[4];
- UINT8 s_dict[111];
- int s_subst, s_out_len, s_out_cnt, s_shift, s_bits, s_in_len, s_in_pos;
-};
-
-typedef struct _naomibd_state naomibd_state;
-struct _naomibd_state
-{
- UINT8 index; /* index of board */
- UINT8 type;
- device_t *device; /* pointer to our containing device */
-
- UINT8 * memory;
- chd_file * gdromchd;
- cdrom_file * gdrom;
- UINT8 * picdata;
- UINT32 size; /* size of installed dimm memory */
- UINT32 rom_offset, rom_offset_flags, dma_count;
- UINT32 dma_offset, dma_offset_flags;
- UINT32 prot_offset, prot_key;
- UINT32 aw_offset, aw_file_base, aw_file_offset;
-
- // live decrypt vars
- UINT32 dc_gamekey, dc_seqkey, dc_dmakey, dc_m4key;
- UINT8 dc_cart_ram[CART_RAM_SIZE]; // internal cartridge RAM
- INT32 dc_m3_ptr;
-
- naomibd_prot prot;
-
- NaomiM4Decoder *m4_decoder;
-};
-
-// maps protection offsets to real addresses
-// format of array: encryption key, address written, address to switch out with. if key is -1 it's ignored and address written is the match.
-// if key is not -1, it's used for the match instead of the address written.
-static const naomibd_config_table naomibd_translate_tbl[] =
-{
- // games where on-the-fly decryption works (many of these are fully playable in MAME, just slow)
- { "18wheelr", 0x07cf54, 0 },
- { "alpilota", 0x070e41, 0 },
- { "alpiltdx", 0x070e41, 0 },
- { "asndynmt", 0xffffffff, 0, 0x00008784 }, // for M4 games, set the first key to 0xffffffff and the M4 key is the 3rd key
- { "ausfache", 0xffffffff, 0, 0x092b6007 }, // for M4 games, set the first key to 0xffffffff and the M4 key is the 3rd key
- { "capsnk", 0, 0 },
- { "capsnka", 0, 0 },
- { "crackndj", 0x1c2347, 0 },
- { "crzytaxi", 0x0d2f45, 0 },
- { "csmash", 0x103347, 0 },
- { "csmasho", 0x103347, 0 },
- { "cspike", 0x0e2010, 0 },
- { "deathcox", 0x0b64d0, 0 },
- { "derbyoc", 0x0fee35, 0 },
- { "doa2", 0x8ad01, 0 },
- { "doa2m", 0x8ad01, 0 },
- { "dybb99", 0x048a01, 0 },
- { "f355twin", 0x06efd4, 0 },
- { "f355twn2", 0x1666c6, 0 },
- { "ggram2", 0x074a61, 0 },
- { "ggx", 0x076110, 0 },
- { "gram2000", 0, 0x7f805c3f },
- { "gundmct", 0x0e8010, 0 },
- { "gwing2", 0x0b25d0, 0 },
- { "hmgeo", 0x038510, 0 },
- { "illvelo", 0xffffffff, 0, 0xf3a5982c }, // for M4 games, set the first key to 0xffffffff and the M4 key is the 3rd key
- { "jambo", 0x0fab95, 0 },
- { "kick4csh", 0, 0x820857c9 },
- { "mvsc2", 0, 0xc18b6e7c },
- { "otrigger", 0x0fea94, 0 },
- { "pjustic", 0x0725d0, 0 },
- { "pokasuka", 0xffffffff, 0, 0x4792bcde }, // for M4 games, set the first key to 0xffffffff and the M4 key is the 3rd key
- { "pstone", 0x0e69c1, 0 },
- { "pstone2", 0x0b8dc0, 0 },
- { "puyoda", 0x0acd40, 0 },
- { "qmegamis", 0, 0xcd9b4896 },
- { "ringout", 0x0b1e40, 0 },
- { "samba", 0x0a8b5d, 0 },
- { "samba2k", 0x1702cf, 0 },
- { "sgtetris", 0x8ae51, 0 },
- { "shootopl", 0, 0xa0f37ca7 },
- { "shootpl", 0, 0x9d8de9cd },
- { "shootplm", 0, 0x9d8de9cd },
- { "sl2007", 0xffffffff, 0, 0x88c274c7 }, // for M4 games, set the first key to 0xffffffff and the M4 key is the 3rd key
- { "slasho", 0x1a66ca, 0 },
- { "smlg99", 0x048a01, 0 },
- { "spawn", 0x078d01, 0 },
- { "sstrkfgt", 0x132303, 0 },
- { "suchie3", 0x0368e1, 0 },
- { "toyfight", 0x02ca85, 0 },
- { "vf4cart", 0x2ef2f96, 0 },
- { "vf4evoct", 0, 0x1e5bb0cd },
- { "virnbao", 0x68b58, 0 }, // note: "virnba" set doesn't have protection
- { "vs2_2k", 0x88b08, 0 },
- { "vtennis", 0x03eb15, 0 },
- { "vtenis2c", 0, 0x2d2d4743 },
- { "vonot", 0x010715, 0 },
- { "wldkicks", 0xae2901, 0 },
- { "wwfroyal", 0x1627c3, 0 },
- { "zerogu2", 0x07c010, 0 },
- { "zombrvn", 0x012b41, 0 },
-};
-
-// forward declaration for decrypt function
-static UINT16 block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data);
-
-/***************************************************************************
- INLINE FUNCTIONS
-***************************************************************************/
-
-/*-------------------------------------------------
- get_safe_token - makes sure that the passed
- in device is, in fact, a naomibd device
--------------------------------------------------*/
-
-INLINE naomibd_state *get_safe_token(device_t *device)
-{
- assert(device != NULL);
- assert(device->type() == NAOMI_BOARD);
-
- return (naomibd_state *)downcast<legacy_device_base *>(device)->token();
-}
-
-
-
-/*************************************
- *
- * Misc. functions
- *
- *************************************/
-
-// send interrupt to host system
-void output_interrupt(naomibd_state *st, int state)
-{
- naomibd_config *config = (naomibd_config *)downcast<const legacy_device_base *>(st->device)->inline_config();
-
- /* send out an interrupt */
- if (config->signal != NULL)
- (*config->signal)(st->device, 0, state); // 0: this signal is an interrupt
-}
-
-int naomibd_get_type(device_t *device)
-{
- naomibd_state *v = get_safe_token(device);
- return v->type;
-}
-
-// M1 decryption/decompression
-static UINT8 naomibd_m1dec_readbyte(naomibd_state *naomibd)
-{
- UINT8 v = 0;
-
- switch (naomibd->prot.s_in_pos & 3)
- {
- case 0:
- v = naomibd->prot.s_input[naomibd->prot.s_in_pos + 3];
- v ^= naomibd->prot.s_input[naomibd->prot.s_in_pos + 1];
- break;
-
- case 1:
- v = naomibd->prot.s_input[naomibd->prot.s_in_pos + 1];
- v ^= naomibd->prot.s_input[naomibd->prot.s_in_pos - 1];
- break;
-
- case 2:
- v = naomibd->prot.s_input[naomibd->prot.s_in_pos - 1];
- break;
-
- case 3:
- v = naomibd->prot.s_input[naomibd->prot.s_in_pos - 3];
- break;
- }
-
- v ^= naomibd->prot.s_xor[naomibd->prot.s_in_pos & 3];
- naomibd->prot.s_in_pos++;
- return v;
-}
-
-static void naomibd_m1dec_storebyte (naomibd_state *naomibd, UINT8 b)
-{
- if (naomibd->prot.s_subst && naomibd->prot.s_out_cnt >= 2)
- {
- b = naomibd->dc_cart_ram[naomibd->prot.s_out_cnt - 2] - b;
- }
- naomibd->dc_cart_ram[naomibd->prot.s_out_cnt] = b;
- naomibd->prot.s_out_cnt++;
-
- if (naomibd->prot.s_out_cnt >= (256*1024))
- {
- fatalerror("naomibd: M1 decode exceeds buffer size!\n");
- }
-}
-
-static void naomibd_m1dec_shiftin(naomibd_state *naomibd)
-{
- naomibd->prot.s_shift <<= 8;
- naomibd->prot.s_shift |= naomibd_m1dec_readbyte(naomibd);
- naomibd->prot.s_bits += 8;
-}
-
-static void naomibd_m1_decode(naomibd_state *naomibd)
-{
- int i, eos;
-
- naomibd->prot.s_xor [0] = (UINT8)naomibd->dc_dmakey;
- naomibd->prot.s_xor [1] = (UINT8)(naomibd->dc_dmakey >> 8);
- naomibd->prot.s_xor [2] = (UINT8)(naomibd->dc_dmakey >> 16);
- naomibd->prot.s_xor [3] = (UINT8)(naomibd->dc_dmakey >> 24);
-
- #if NAOMIBD_PRINTF_PROTECTION
- printf("M1 decode: dma offset %x, key %x\n", naomibd->dma_offset, naomibd->dc_dmakey);
- #endif
-
- naomibd->prot.s_input = naomibd->memory + naomibd->dma_offset;
- naomibd->prot.s_in_pos = 0;
-
- // read in the dictionary
- for (i = 0; i < 111; i++)
- {
- naomibd->prot.s_dict [i] = naomibd_m1dec_readbyte(naomibd);
- }
-
- // control bits
- naomibd->prot.s_subst = (naomibd->prot.s_dict [0] & 64) ? 1 : 0;
-
- // command stream
- naomibd->prot.s_out_cnt = 0, eos = 0;
- naomibd->prot.s_shift = 0, naomibd->prot.s_bits = 0;
- while (!eos)
- {
- int code, addr, t;
-
- if (naomibd->prot.s_bits < 2)
- naomibd_m1dec_shiftin(naomibd);
-
- code = (naomibd->prot.s_shift >> (naomibd->prot.s_bits - 2)) & 3;
- switch (code)
- {
- case 0:
- // 00-aa
- if (naomibd->prot.s_bits < 4)
- naomibd_m1dec_shiftin(naomibd);
- addr = (naomibd->prot.s_shift >> (naomibd->prot.s_bits - 4)) & 3;
- naomibd->prot.s_bits -= 4;
- if (addr == 0)
- {
- // quotation
- if (naomibd->prot.s_bits < 8)
- naomibd_m1dec_shiftin (naomibd);
- t = (naomibd->prot.s_shift >> (naomibd->prot.s_bits - 8)) & 255;
- naomibd->prot.s_bits -= 8;
- naomibd_m1dec_storebyte(naomibd, t);
- break;
- }
- naomibd_m1dec_storebyte(naomibd, naomibd->prot.s_dict [addr]);
- break;
+DEVICE_ADDRESS_MAP_START(submap, 16, naomi_board)
+ AM_RANGE(0x00, 0x01) AM_WRITE(rom_offseth_w)
+ AM_RANGE(0x02, 0x03) AM_WRITE(rom_offsetl_w)
+ AM_RANGE(0x04, 0x05) AM_READWRITE(rom_data_r, rom_data_w)
+ AM_RANGE(0x06, 0x07) AM_WRITE(dma_offseth_w)
+ AM_RANGE(0x08, 0x09) AM_WRITE(dma_offsetl_w)
+ AM_RANGE(0x0a, 0x0b) AM_WRITE(dma_count_w)
+ AM_RANGE(0x3c, 0x3d) AM_WRITE(boardid_w)
+ AM_RANGE(0x3e, 0x3f) AM_READ(boardid_r)
- case 1:
- if (naomibd->prot.s_bits < 5)
- naomibd_m1dec_shiftin (naomibd);
- t = (naomibd->prot.s_shift >> (naomibd->prot.s_bits - 3)) & 1;
- if (t == 0)
- {
- // 010-aa
- addr = (naomibd->prot.s_shift >> (naomibd->prot.s_bits - 5)) & 3;
- addr += 4;
- naomibd->prot.s_bits -= 5;
- }
- else
- {
- // 011-aaa
- if (naomibd->prot.s_bits < 6)
- naomibd_m1dec_shiftin (naomibd);
- addr = (naomibd->prot.s_shift >> (naomibd->prot.s_bits - 6)) & 7;
- addr += 8;
- naomibd->prot.s_bits -= 6;
- }
- naomibd_m1dec_storebyte(naomibd, naomibd->prot.s_dict [addr]);
- break;
+ AM_RANGE(0x00, 0xff) AM_READ(default_r)
+ADDRESS_MAP_END
- case 2:
- if (naomibd->prot.s_bits < 7)
- naomibd_m1dec_shiftin(naomibd);
- // 10-aaaaa
- addr = (naomibd->prot.s_shift >> (naomibd->prot.s_bits - 7)) & 31;
- addr += 16;
- naomibd->prot.s_bits -= 7;
- naomibd_m1dec_storebyte(naomibd, naomibd->prot.s_dict [addr]);
- break;
-
- case 3:
- if (naomibd->prot.s_bits < 8)
- naomibd_m1dec_shiftin(naomibd);
- // 11-aaaaaa
- addr = (naomibd->prot.s_shift >> (naomibd->prot.s_bits - 8)) & 63;
- addr += 48;
- naomibd->prot.s_bits -= 8;
- if (addr == 111)
- {
- // end of stream
- eos = 1;
- }
- else
- {
- naomibd_m1dec_storebyte(naomibd, naomibd->prot.s_dict [addr]);
- }
- break;
- }
- }
-}
-
-// Streaming M2/M3 protection and decompression
-
-INLINE UINT16 naomi_bswap16(UINT16 in)
-{
- return ((in>>8) | (in<<8));
-}
-
-static UINT16 naomibd_get_decrypted_stream(naomibd_state *naomibd)
+naomi_board::naomi_board(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock)
+ : naomi_g1_device(mconfig, type, name, tag, owner, clock)
{
- UINT16 wordn = naomi_bswap16(naomibd->prot.ptr[naomibd->prot.count++]);
-
- naomibd->prot.aux_word = block_decrypt(naomibd->dc_gamekey, naomibd->dc_seqkey, naomibd->prot.seed++, wordn);
- wordn = (naomibd->prot.last_word&~3) | (naomibd->prot.aux_word&3);
- naomibd->prot.last_word = naomibd->prot.aux_word;
-
- return wordn;
+ eeprom_tag = 0;
}
-static void naomibd_init_stream(naomibd_state *naomibd)
+void naomi_board::static_set_eeprom_tag(device_t &device, const char *_eeprom_tag)
{
- naomibd->prot.last_word = 0;
-
- naomibd->prot.control_bits = naomibd_get_decrypted_stream(naomibd);
- naomibd->prot.heading_word = naomibd_get_decrypted_stream(naomibd);
-
- if (naomibd->prot.control_bits & 2)
- {
- naomibd->prot.pak_bit = 0;
- naomibd->prot.pak_state = CMD_READY;
- naomibd->prot.dec_count = 0;
- naomibd->prot.pak_buf_size = 256 << (naomibd->prot.control_bits & 1);
- naomibd->prot.pak_buf_pos = 0;
- }
+ naomi_board &dev = downcast<naomi_board &>(device);
+ dev.eeprom_tag = _eeprom_tag;
}
-static UINT16 naomibd_get_compressed_bit(naomibd_state *naomibd)
-{
- if(naomibd->prot.pak_bit == 0)
- {
- naomibd->prot.pak_bit = 15;
- naomibd->prot.pak_word = naomibd_get_decrypted_stream(naomibd);
- }
- else
- {
- naomibd->prot.pak_bit--;
- naomibd->prot.pak_word<<=1;
- }
- return naomibd->prot.pak_word >> 15;
-}
-static UINT16 naomibd_get_decompressed_stream(naomibd_state *naomibd)
+void naomi_board::device_start()
{
-/* node format
-0xxxxxxx - next node index
-1a0bbccc - end node
- a - 0 = repeat
- 1 = fetch
- b - if a = 1
- 00 - fetch 0
- 01 - fetch 1
- 11 - fetch -1
- if a = 0
- 000
- c - repeat/fetch counter
- count = ccc + 1
-11111111 - empty node
-*/
- static UINT8 trees[9][2][32] = {
- {
- {0x01,0x10,0x0f,0x05,0xc4,0x13,0x87,0x0a,0xcc,0x81,0xce,0x0c,0x86,0x0e,0x84,0xc2,
- 0x11,0xc1,0xc3,0xcf,0x15,0xc8,0xcd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc7,0x02,0x03,0x04,0x80,0x06,0x07,0x08,0x09,0xc9,0x0b,0x0d,0x82,0x83,0x85,0xc0,
- 0x12,0xc6,0xc5,0x14,0x16,0xca,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x02,0x80,0x05,0x04,0x81,0x10,0x15,0x82,0x09,0x83,0x0b,0x0c,0x0d,0xdc,0x0f,0xde,
- 0x1c,0xcf,0xc5,0xdd,0x86,0x16,0x87,0x18,0x19,0x1a,0xda,0xca,0xc9,0x1e,0xce,0xff,},
- {0x01,0x17,0x03,0x0a,0x08,0x06,0x07,0xc2,0xd9,0xc4,0xd8,0xc8,0x0e,0x84,0xcb,0x85,
- 0x11,0x12,0x13,0x14,0xcd,0x1b,0xdb,0xc7,0xc0,0xc1,0x1d,0xdf,0xc3,0xc6,0xcc,0xff,},
- },
- {
- {0xc6,0x80,0x03,0x0b,0x05,0x07,0x82,0x08,0x15,0xdc,0xdd,0x0c,0xd9,0xc2,0x14,0x10,
- 0x85,0x86,0x18,0x16,0xc5,0xc4,0xc8,0xc9,0xc0,0xcc,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0x01,0x02,0x12,0x04,0x81,0x06,0x83,0xc3,0x09,0x0a,0x84,0x11,0x0d,0x0e,0x0f,0x19,
- 0xca,0xc1,0x13,0xd8,0xda,0xdb,0x17,0xde,0xcd,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0x80,0x0d,0x04,0x05,0x15,0x83,0x08,0xd9,0x10,0x0b,0x0c,0x84,0x0e,0xc0,0x14,
- 0x12,0xcb,0x13,0xca,0xc8,0xc2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc5,0x02,0x03,0x07,0x81,0x06,0x82,0xcc,0x09,0x0a,0xc9,0x11,0xc4,0x0f,0x85,0xd8,
- 0xda,0xdb,0xc3,0xdc,0xdd,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0x80,0x06,0x0c,0x05,0x81,0xd8,0x84,0x09,0xdc,0x0b,0x0f,0x0d,0x0e,0x10,0xdb,
- 0x11,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc4,0x02,0x03,0x04,0xcb,0x0a,0x07,0x08,0xd9,0x82,0xc8,0x83,0xc0,0xc1,0xda,0xc2,
- 0xc9,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0x02,0x06,0x0a,0x83,0x0b,0x07,0x08,0x09,0x82,0xd8,0x0c,0xd9,0xda,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc3,0x80,0x03,0x04,0x05,0x81,0xca,0xc8,0xdb,0xc9,0xc0,0xc1,0x0d,0xc2,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0x02,0x03,0x04,0x81,0x07,0x08,0xd8,0xda,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc2,0x80,0x05,0xc9,0xc8,0x06,0x82,0xc0,0x09,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0x80,0x04,0xc8,0xc0,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc1,0x02,0x03,0x81,0x05,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- {
- {0x01,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- {0xc0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
- },
- };
+ naomi_g1_device::device_start();
- UINT32 word_complete = 2;
- UINT16 wordn = 0;
-
- while(word_complete)
- {
- switch(naomibd->prot.pak_state)
- {
- case CMD_READY:
- {
- UINT32 tmp = 0;
- INT32 slot = (naomibd->prot.pak_buf_pos & (naomibd->prot.pak_buf_size-1));
- if(slot > 0)
- {
- if(slot < (naomibd->prot.pak_buf_size-7))
- slot = 1;
- else
- slot = (slot & 7) + 1;
- }
- while (!(tmp&0x80))
- if(naomibd_get_compressed_bit(naomibd))
- tmp = trees[slot][1][tmp];
- else
- tmp = trees[slot][0][tmp];
- if(tmp != 0xff)
- {
- naomibd->prot.pak_byte = (tmp&7)+1;
- if(tmp&0x40)
- {
- static INT32 cmds[4] = {0, 1, 0, -1};
- naomibd->prot.pak_fetch_ofs = cmds[(tmp&0x18)>>3];
- naomibd->prot.pak_state = CMD_FETCH;
- }
- else
- {
- UINT8 byten;
- naomibd->prot.pak_state = CMD_REPEAT;
- byten = naomibd_get_compressed_bit(naomibd) << 1;
- byten = (byten | naomibd_get_compressed_bit(naomibd)) << 1;
- byten = (byten | naomibd_get_compressed_bit(naomibd)) << 1;
- byten = (byten | naomibd_get_compressed_bit(naomibd)) << 1;
- byten = (byten | naomibd_get_compressed_bit(naomibd)) << 1;
- byten = (byten | naomibd_get_compressed_bit(naomibd)) << 1;
- byten = (byten | naomibd_get_compressed_bit(naomibd)) << 1;
- byten = byten | naomibd_get_compressed_bit(naomibd);
- naomibd->prot.cmd_byte = byten;
- }
- }
- break;
- }
- case CMD_FETCH:
- naomibd->prot.cmd_byte = naomibd->prot.pak_buf[(naomibd->prot.pak_buf_pos-naomibd->prot.pak_buf_size+naomibd->prot.pak_fetch_ofs)&(PACK_BUF_SIZE-1)];
-
- case CMD_REPEAT:
- naomibd->prot.pak_buf[naomibd->prot.pak_buf_pos&(PACK_BUF_SIZE-1)]=naomibd->prot.cmd_byte;
- if(word_complete&2)
- {
- wordn = naomibd->prot.cmd_byte << 8;
- }
- else
- {
- wordn = wordn | naomibd->prot.cmd_byte;
- }
- word_complete--;
- naomibd->prot.pak_byte--;
- naomibd->prot.pak_buf_pos++;
- if(naomibd->prot.pak_byte == 0) naomibd->prot.pak_state = CMD_READY;
- break;
- }
- }
- return wordn;
-}
-
-// stream read protected PIO hook
-//-----------------------------------------------------------
-static UINT16 naomibd_get_data_stream(naomibd_state *naomibd)
-{
- UINT16 wordn;
+ save_item(NAME(rom_offset));
+ save_item(NAME(dma_offset));
+ save_item(NAME(dma_count));
+ save_item(NAME(dma_cur_offset));
+ save_item(NAME(pio_ready));
+ save_item(NAME(dma_ready));
- if(naomibd->prot.control_bits&2)
- {
- wordn = naomibd_get_decompressed_stream(naomibd);
- }
+ if(eeprom_tag)
+ eeprom = machine().device<x76f100_device>(eeprom_tag);
else
- {
- wordn = naomibd_get_decrypted_stream(naomibd);
- }
-
- return wordn;
+ eeprom = 0;
}
-void *naomibd_get_memory(device_t *device, UINT32 length)
+void naomi_board::device_reset()
{
- naomibd_state *naomibd = get_safe_token(device);
-
- // for M1 decodes, return the buffer we'll DMA from
- if (!(naomibd->dma_offset_flags & NAOMIBD_FLAG_DMA_COMPRESSION) && (naomibd->type == ROM_BOARD) && (naomibd->dc_dmakey != 0))
- {
- // perform the M1 decode
- naomibd_m1_decode(naomibd);
-
- // return the pointer to our output buffer
- return naomibd->dc_cart_ram;
- }
- else if (!(naomibd->dma_offset_flags & NAOMIBD_FLAG_DMA_COMPRESSION) && (naomibd->type == ROM_BOARD) && (naomibd->dc_m4key != 0))
- {
- if (length > CART_RAM_SIZE) // make sure we stay in bounds
- {
- fatalerror("M4 encrypted DMA length too large, adjust CART_RAM_SIZE: %d\n", length);
- assert(0);
- }
-
- #if NAOMIBD_PRINTF_PROTECTION
- printf("Doing M4 DMA of length %x\n", length);
- #endif
-
- // decrypt the required number of bytes
- naomibd->m4_decoder->init();
- UINT8 *m4src = naomibd->memory + naomibd->dma_offset;
- for (int i = 0; i < length; i+=2)
- {
- UINT16 temp = naomibd->m4_decoder->decrypt(m4src[i] | (m4src[i+1]<<8));
-
- naomibd->dc_cart_ram[i] = temp & 0xff;
- naomibd->dc_cart_ram[i+1] = (temp>>8) & 0xff;
- }
-
- // return the pointer to our output buffer
- return naomibd->dc_cart_ram;
- }
-
- if (!(naomibd->dma_offset_flags & NAOMIBD_FLAG_DMA_COMPRESSION) && (naomibd->type == ROM_BOARD))
- {
- logerror("Unhandled M1 DMA with key %x, flags %x, offset %x\n", naomibd->dc_dmakey, naomibd->dma_offset_flags, naomibd->dma_offset);
- }
-
- return get_safe_token(device)->memory;
+ naomi_g1_device::device_reset();
+ rom_offset = 0;
+ dma_offset = 0;
+ dma_cur_offset = 0;
+ pio_ready = false;
+ dma_ready = false;
}
-offs_t naomibd_get_dmaoffset(device_t *device)
+void naomi_board::dma_get_position(UINT8 *&base, UINT32 &limit, bool to_mainram)
{
- naomibd_state *naomibd = get_safe_token(device);
- offs_t result = 0;
-
- #if NAOMIBD_PRINTF_PROTECTION
- printf("DMA source %08x, flags %x\n", get_safe_token(device)->dma_offset, get_safe_token(device)->dma_offset_flags);
- #endif
+ if(!to_mainram) {
+ base = 0;
+ limit = 0;
+ return;
+ }
- // if the flag is cleared that lets the protection chip go,
- // we need to handle this specially. but not on DIMM boards or if there's no key.
- if (!(naomibd->dma_offset_flags & NAOMIBD_FLAG_DMA_COMPRESSION) && (naomibd->type == ROM_BOARD) && (naomibd->dc_dmakey != 0))
- {
- // no offset, start at the beginning of cart ram for M1 transfers
- result = 0;
+ if(!dma_ready) {
+ if(!(dma_offset & 0x80000000))
+ throw emu_fatalerror("NAOMI BOARD: Unsupported, non-incrementing DMA.\n");
+ board_setup_address(dma_offset, true);
+ dma_cur_offset = 0;
+ dma_ready = true;
}
- else
- {
- result = get_safe_token(device)->dma_offset;
- }
- return result;
+ board_get_buffer(base, limit);
+ UINT32 blimit = 0x20*dma_count - dma_cur_offset;
+ if(0 && limit > blimit)
+ limit = blimit;
}
-
-/*************************************
- *
- * Common initialization
- *
- *************************************/
-
-
-
-static void naomibd_postload(naomibd_state *v)
+void naomi_board::dma_advance(UINT32 size)
{
+ dma_cur_offset += size;
+ board_advance(size);
}
-
-static void init_save_state(device_t *device)
+WRITE16_MEMBER(naomi_board::rom_offseth_w)
{
- naomibd_state *v = get_safe_token(device);
-
- device->machine().save().register_postload(save_prepost_delegate(FUNC(naomibd_postload), v));
-
- /* register states */
- device->save_item(NAME(v->rom_offset));
- device->save_item(NAME(v->rom_offset_flags));
- device->save_item(NAME(v->dma_count));
- device->save_item(NAME(v->dma_offset));
- device->save_item(NAME(v->dma_offset_flags));
- device->save_item(NAME(v->prot_offset));
- device->save_item(NAME(v->prot_key));
- device->save_item(NAME(v->aw_offset));
- device->save_item(NAME(v->aw_file_base));
- device->save_item(NAME(v->aw_file_offset));
- device->save_item(NAME(v->dc_m3_ptr));
- device->save_item(NAME(v->dc_cart_ram));
- device->save_item(NAME(v->prot.last_word));
- device->save_item(NAME(v->prot.aux_word));
- device->save_item(NAME(v->prot.pak_word));
- device->save_item(NAME(v->prot.heading_word));
- device->save_item(NAME(v->prot.count));
- device->save_item(NAME(v->prot.pak_bit));
- device->save_item(NAME(v->prot.control_bits));
- device->save_item(NAME(v->prot.pak_state));
- device->save_item(NAME(v->prot.dec_count));
- device->save_item(NAME(v->prot.pak_buf_size));
- device->save_item(NAME(v->prot.pak_buf_pos));
- device->save_item(NAME(v->prot.pak_fetch_ofs));
- device->save_item(NAME(v->prot.pak_byte));
- device->save_item(NAME(v->prot.cmd_byte));
- device->save_item(NAME(v->prot.seed));
- device->save_item(NAME(v->prot.s_xor));
- device->save_item(NAME(v->prot.s_dict));
- device->save_item(NAME(v->prot.s_subst));
- device->save_item(NAME(v->prot.s_out_len));
- device->save_item(NAME(v->prot.s_out_cnt));
- device->save_item(NAME(v->prot.s_shift));
- device->save_item(NAME(v->prot.s_bits));
- device->save_item(NAME(v->prot.s_in_len));
- device->save_item(NAME(v->prot.s_in_pos));
+ rom_offset = (rom_offset & 0x0000ffff) | (data << 16);
+ pio_ready = false;
}
-
-
-/*************************************
- *
- * Reset
- *
- *************************************/
-
-static void soft_reset(naomibd_state *v)
+WRITE16_MEMBER(naomi_board::rom_offsetl_w)
{
- v->dc_m3_ptr = 0;
- v->dc_seqkey = 0;
+ rom_offset = (rom_offset & 0xffff0000) | data;
+ pio_ready = false;
}
-
-
-/*************************************
- *
- * Handlers
- *
- *************************************/
-
-READ64_DEVICE_HANDLER( naomibd_r )
+READ16_MEMBER(naomi_board::rom_data_r)
{
- naomibd_state *v = get_safe_token(device);
- UINT8 *ROM = (UINT8 *)v->memory;
-
- // AW board is different, shouldn't ever be read
- if (v->type == AW_ROM_BOARD)
- {
- mame_printf_debug("AW_ROM_BOARD read @ %x mask %" I64FMT "x\n", offset, mem_mask);
- return U64(0xffffffffffffffff);
+ if(!pio_ready) {
+ board_setup_address(rom_offset, false);
+ pio_ready = true;
}
- // ROM_DATA
- if ((offset == 1) && ACCESSING_BITS_0_15)
- {
- UINT64 ret = 0;
-
- if (v->rom_offset_flags & NAOMIBD_FLAG_SPECIAL_MODE)
- {
- // can we live-decrypt this game?
- if (v->dc_gamekey != -1)
- {
- ret = (UINT64)naomibd_get_data_stream(v);
- }
- else if (v->dc_m4key != 0)
- {
- if (v->m4_decoder)
- {
- ret = (UINT64)v->m4_decoder->decrypt(ROM[v->rom_offset] | (ROM[v->rom_offset+1]<<8));
- }
- else
- {
- ret = U64(0); // $$$M4 TODO
- }
- }
- else
- {
- ret = (UINT64)(ROM[v->rom_offset] | (ROM[v->rom_offset+1]<<8));
- }
- }
- else
- {
- ret = (UINT64)(ROM[v->rom_offset] | (ROM[v->rom_offset+1]<<8));
- }
-
- if (v->rom_offset_flags & NAOMIBD_FLAG_AUTO_ADVANCE)
- {
- v->rom_offset += 2;
- }
-
- return ret;
- }
- else if ((offset == 2) && ACCESSING_BITS_32_63)
- {
- // Actel FPGA ID, used on some games for a "special" ROM test.
- //
- // without this (by returning 0xffff) some games will do a rom test where
- // the IC numbers tested do not relate to the actual ROMs on the cart,
- // and a fake 'IC1' will be tested, which returns mirrored data from the
- // other roms in order to pass if enabled on the real hardware.
- // (certain bios / board combinations will also cause this, so it is
- // important that we mirror the data in the rom loading using ROM_COPY)
-
- //return (UINT64)0xffff << 32;
- return (UINT64)actel_id << 32;
- }
- else if ((offset == 6) && ACCESSING_BITS_32_47)
- {
- return (UINT64)0x5500<<32; // flash ID for M4 carts?
- }
- else if ((offset == 7) && ACCESSING_BITS_32_47)
- {
- // 5f703c
- mame_printf_verbose("ROM: read 5f703c\n");
- return (UINT64)0xffff << 32;
- }
- else if ((offset == 8) && ACCESSING_BITS_0_15)
- {
- // 5f7040
- #if NAOMIBD_PRINTF_PROTECTION
- printf("ROM: read 5f7040\n");
- #endif
- return 0;
- }
- else if ((offset == 8) && ACCESSING_BITS_32_47)
- {
- // 5f7044
- #if NAOMIBD_PRINTF_PROTECTION
- printf("ROM: read 5f7044\n");
- #endif
- return 0;
- }
- else if ((offset == 9) && ACCESSING_BITS_0_15)
- {
- // 5f7048
- #if NAOMIBD_PRINTF_PROTECTION
- printf("ROM: read 5f7048\n");
- #endif
- return 0;
- }
- else if ((offset == 9) && ACCESSING_BITS_32_47)
- {
- // 5f704c
- #if NAOMIBD_PRINTF_PROTECTION
- printf("ROM: read 5f704c\n");
- #endif
- return (UINT64)1 << 32;
- }
- else if ((offset == 15) && ACCESSING_BITS_32_47) // boardid read
- {
- UINT64 ret;
-
- ret = device->machine().device<x76f100_device>("naomibd_eeprom")->sda_r() << 15;
-
- return ret << 32;
- }
- #if NAOMIBD_PRINTF_PROTECTION
- else
- {
- printf("%s:ROM: read mask %" I64FMT "x @ %x\n", device->machine().describe_context(), mem_mask, offset);
- }
- #endif
- return U64(0xffffffffffffffff);
+ UINT8 *buffer;
+ UINT32 size;
+ UINT16 res;
+ board_get_buffer(buffer, size);
+ assert(size > 1);
+ res = buffer[0] | (buffer[1] << 8);
+ if(rom_offset & 0x80000000)
+ board_advance(2);
+ return res;
}
-WRITE64_DEVICE_HANDLER( naomibd_w )
+WRITE16_MEMBER(naomi_board::rom_data_w)
{
- naomibd_state *v = get_safe_token(device);
-
- // AW board
- if (v->type == AW_ROM_BOARD)
- {
- //printf("AW: %" I64FMT "x to ROM board @ %x (mask %" I64FMT "x)\n", data, offset, mem_mask);
-
- switch (offset)
- {
- case 0:
- {
- if(ACCESSING_BITS_0_15)
- {
- // EPR_OFFSETL
- v->aw_offset &= 0xffff0000;
- v->aw_offset |= (data & 0xffff);
- v->dma_offset = v->aw_offset*2;
- //printf("EPR_OFFSETL = %x, dma_offset %x\n", (UINT32)data, v->dma_offset);
- }
- else if(ACCESSING_BITS_32_47 || ACCESSING_BITS_32_63)
- {
- // EPR_OFFSETH
- v->aw_offset &= 0xffff;
- v->aw_offset |= ((data>>16) & 0xffff0000);
- v->dma_offset = v->aw_offset*2;
- v->dma_offset_flags = NAOMIBD_FLAG_DMA_COMPRESSION|NAOMIBD_FLAG_AUTO_ADVANCE; // force normal DMA mode
- //printf("EPR_OFFSETH = %x, dma_offset %x\n", (UINT32)(data>>32), v->dma_offset);
- }
-
- }
- break;
-
- case 1:
- {
- if(ACCESSING_BITS_32_47 || ACCESSING_BITS_32_63)
- {
- // MPR_RECORD_INDEX
- //printf("%x to RECORD_INDEX\n", (UINT32)(data>>32));
- v->dma_offset = 0x1000000 + (0x40 * (data>>32));
- }
- }
- break;
-
- case 2:
- {
- if(ACCESSING_BITS_0_15)
- {
- UINT8 *ROM = (UINT8 *)v->memory;
- UINT32 base;
-
- // MPR_FIRST_FILE_INDEX (usually 3)
- base = data * 64;
- v->aw_file_base = ROM[0x100000b+base]<<24 | ROM[0x100000a+base]<<16 | ROM[0x1000009+base]<<8 | ROM[0x1000008+base];
- v->aw_file_base += 0x1000000;
- //printf("%x to FIRST_FILE_INDEX, file_base = %x\n", (UINT32)data, v->aw_file_base);
- }
- else if(ACCESSING_BITS_32_47 || ACCESSING_BITS_32_63)
- {
- // MPR_FILE_OFFSETL
- v->aw_file_offset &= 0xffff0000;
- v->aw_file_offset |= (data>>32) & 0xffff;
- v->dma_offset = v->aw_file_base + (v->aw_file_offset*2);
- //printf("%x to FILE_OFFSETL, file_offset %x, dma_offset %x\n", (UINT32)(data>>32), v->aw_file_offset, v->dma_offset);
- }
- }
- break;
-
- case 3:
- {
- if(ACCESSING_BITS_0_15)
- {
- // MPR_FILE_OFFSETH
- v->aw_file_offset &= 0xffff;
- v->aw_file_offset |= (data & 0xffff)<<16;
- v->dma_offset = v->aw_file_base + (v->aw_file_offset*2);
- //printf("%x to FILE_OFFSETH, file_offset %x, dma_offset %x\n", (UINT32)data, v->aw_file_offset, v->dma_offset);
- }
- }
- break;
+ board_write(rom_offset, data);
- default:
- logerror("AW: unhandled %" I64FMT "x to ROM board @ %x (mask %" I64FMT "x)\n", data, offset, mem_mask);
- break;
- }
-
- return;
- }
-
- switch(offset)
- {
- case 0:
- {
- if(ACCESSING_BITS_0_15)
- {
- // ROM_OFFSETH
- v->rom_offset &= 0xffff;
- v->rom_offset |= (data & 0x1fff)<<16;
- v->rom_offset_flags = data >> 12;
- }
- if(ACCESSING_BITS_32_47)
- {
- // ROM_OFFSETL
- v->rom_offset &= 0xffff0000;
- v->rom_offset |= ((data >> 32) & 0xffff);
- }
-
- v->rom_offset &= ~1; // always clear bit 0 as per Deunan
-
- if (v->m4_decoder)
- {
- v->m4_decoder->init();
- }
-
- #if NAOMIBD_PRINTF_PROTECTION
- printf("PIO: offset to %x (flags %x)\n", v->rom_offset, v->rom_offset_flags);
- #endif
- }
- break;
- case 1:
- {
- if(ACCESSING_BITS_32_47 || ACCESSING_BITS_32_63)
- {
- // DMA_OFFSETH
- v->dma_offset &= 0xffff;
- v->dma_offset |= (data >> 16) & 0x1fff0000;
- v->dma_offset_flags = (data>>(28+16));
- }
- if(ACCESSING_BITS_0_15)
- {
- // ROM_DATA - used to access registers in the protection chip
- switch (v->rom_offset)
- {
- case 0x1fff8: // offset low
- v->prot_offset &= 0xffff0000;
- v->prot_offset |= (UINT32)data;
- break;
-
- case 0x1fffa: // offset high
- v->prot_offset &= 0xffff;
- v->prot_offset |= (UINT32)data<<16;
- break;
-
- case 0x1fffc: // decryption key
- v->prot_key = data;
-
- #if NAOMIBD_PRINTF_PROTECTION
- printf("Protection: set up read @ %x, key %x (PIO %x DMA %x) [%s]\n", v->prot_offset*2, v->prot_key, v->rom_offset, v->dma_offset, device->machine().describe_context());
- #endif
-
- // if dc_gamekey isn't -1, we can live-decrypt this one
- if (v->dc_gamekey != -1)
- {
- UINT8 *ROM = (UINT8 *)v->memory;
-
- v->dc_seqkey = v->prot_key;
-
- if (v->prot_offset != 0x2000000/2)
- {
- // M2: decrypt from ROM
- v->prot.ptr = (UINT16 *)&ROM[v->prot_offset*2];
- v->prot.seed = v->prot_offset&0xffff;
- #if NAOMIBD_PRINTF_PROTECTION
- printf("M2 decrypt: gamekey %x seqkey %x length %x\n", v->dc_gamekey, v->dc_seqkey, v->dc_m3_ptr);
- #endif
- }
- else
- {
- // M3: decrypt from cart ram
- v->prot.ptr = (UINT16 *)v->dc_cart_ram;
- v->prot.seed = 0;
- #if NAOMIBD_PRINTF_PROTECTION
- printf("M3 decrypt: gamekey %x seqkey %x length %x\n", v->dc_gamekey, v->dc_seqkey, v->dc_m3_ptr);
- #endif
- }
-
- v->prot.count = 0;
- naomibd_init_stream(v);
-
- v->dc_m3_ptr = 0;
- }
- #if NAOMIBD_PRINTF_PROTECTION
- else
- {
- printf("naomibd: protection not handled for this game\n");
- }
- #endif
- break;
-
- case 0x2000000:
- case 0x2020000:
- v->dc_cart_ram[v->dc_m3_ptr] = (data&0xff);
- v->dc_cart_ram[v->dc_m3_ptr+1] = (data>>8)&0xff;
- v->dc_m3_ptr += 2;
- break;
-
- default:
- #if NAOMIBD_PRINTF_PROTECTION
- printf("naomibd: unknown protection write %x @ %x\n", (UINT32)data, v->rom_offset);
- #endif
- break;
- }
- }
- }
- break;
- case 2:
- {
- if(ACCESSING_BITS_0_15)
- {
- // DMA_OFFSETL
- v->dma_offset &= 0xffff0000;
- v->dma_offset |= (data & 0xffff);
- }
- if(ACCESSING_BITS_32_63)
- {
- // NAOMI_DMA_COUNT
- v->dma_count = data >> 32;
- }
- }
- break;
- case 15:
- {
- if(ACCESSING_BITS_0_15)
- {
- x76f100_device *x76f100 = device->machine().device<x76f100_device>("naomibd_eeprom");
- // NAOMI_BOARDID_WRITE
- x76f100->cs_w((data >> 2) & 1);
- x76f100->rst_w((data >> 3) & 1);
- x76f100->scl_w((data >> 1) & 1);
- x76f100->sda_w((data >> 0) & 1);
- }
- #if NAOMIBD_PRINTF_PROTECTION
- else
- {
- printf("naomibd: case 15 unknown bits %llx mask %llx\n", data, mem_mask);
- }
- #endif
- }
- break;
- default:
- logerror("%s: ROM: write %" I64FMT "x to %x, mask %" I64FMT "x\n", device->machine().describe_context(), data, offset, mem_mask);
- break;
- }
+ if(rom_offset & 0x80000000)
+ rom_offset += 2;
}
-
-
-/*************************************
- *
- * Load rom file from gdrom
- *
- *************************************/
-
-#define FILENAME_LENGTH 24
-
-static void load_rom_gdrom(running_machine& machine, naomibd_state *v)
+WRITE16_MEMBER(naomi_board::dma_offseth_w)
{
-// UINT32 result;
- cdrom_file *gdromfile;
- UINT8 buffer[2048];
- UINT8 *ptr;
- UINT32 start,size,sectors,dir;
- int pos,len,a;
- char name[128];
- UINT64 key;
- UINT8* realpic; // todo, add to device
-
- memset(name,'\0',128);
-
- realpic = machine.region("pic")->base();
-
- if (realpic)
- {
- //printf("Real PIC binary found\n");
- int i;
- for (i=0;i<7;i++)
- {
- name[i] = realpic[0x7c0+i*2];
- }
- for (i=0;i<7;i++)
- {
- name[i+7] = realpic[0x7e0+i*2];
- }
- }
- else
- {
- // use extracted pic data
- logerror("This PIC key hasn't been converted to a proper PIC binary yet!\n");
- memcpy(name, v->picdata+33, 7);
- memcpy(name+7, v->picdata+25, 7);
- }
-
- gdromfile = cdrom_open(v->gdromchd);
- // primary volume descriptor
- // read frame 0xb06e (frame=sector+150)
- // dimm board firmware starts straight from this frame
- cdrom_read_data(gdromfile, 0xb06e - 150, buffer, CD_TRACK_MODE1);
- start=((buffer[0x8c+0] << 0) |
- (buffer[0x8c+1] << 8) |
- (buffer[0x8c+2] << 16) |
- (buffer[0x8c+3] << 24));
- // path table
- cdrom_read_data(gdromfile, start, buffer, CD_TRACK_MODE1);
- start=((buffer[0x2+0] << 0) |
- (buffer[0x2+1] << 8) |
- (buffer[0x2+2] << 16) |
- (buffer[0x2+3] << 24));
- dir = start;
- // directory
- cdrom_read_data(gdromfile, dir, buffer, CD_TRACK_MODE1);
- // find data of file
- start = 0;
- size = 0;
- logerror("Looking for file %s\n", name);
- for (pos = 0;pos < 2048;pos += buffer[pos])
- {
- a=0;
- if (!(buffer[pos+25] & 2))
- {
- len=buffer[pos+32];
- for (a=0;a < FILENAME_LENGTH;a++)
- {
- if ((buffer[pos+33+a] == ';') && (name[a] == 0))
- {
- a=FILENAME_LENGTH+1;
- break;
- }
- if (buffer[pos+33+a] != name[a])
- break;
- if (a == len)
- {
- if (name[a] == 0)
- a = FILENAME_LENGTH+1;
- else
- a = FILENAME_LENGTH;
- }
- }
- }
- if (a == FILENAME_LENGTH+1)
- {
- // start sector and size of file
- start=((buffer[pos+2] << 0) |
- (buffer[pos+3] << 8) |
- (buffer[pos+4] << 16) |
- (buffer[pos+5] << 24));
- size =((buffer[pos+10] << 0) |
- (buffer[pos+11] << 8) |
- (buffer[pos+12] << 16) |
- (buffer[pos+13] << 24));
-
- logerror("start %08x size %08x\n", start,size);
- break;
- }
- if (buffer[pos] == 0)
- break;
- }
-
- if ((start != 0) && (size == 0x100))
- {
- // read file
- cdrom_read_data(gdromfile, start, buffer, CD_TRACK_MODE1);
- // get "rom" file name
- memset(name,'\0', 128);
- memcpy(name, buffer+0xc0, FILENAME_LENGTH-1);
-
-
- // directory
- cdrom_read_data(gdromfile, dir, buffer, CD_TRACK_MODE1);
- // find data of "rom" file
- start = 0;
- size = 0;
-
- logerror("Looking for file %s\n", name);
- for (pos = 0;pos < 2048;pos += buffer[pos])
- {
- a = 0;
- if (!(buffer[pos+25] & 2))
- {
- len = buffer[pos+32];
- for (a=0;a < FILENAME_LENGTH;a++)
- {
- if ((buffer[pos+33+a] == ';') && (name[a] == 0))
- {
- a=FILENAME_LENGTH+1;
- break;
- }
- if (buffer[pos+33+a] != name[a])
- break;
- if (a == len)
- {
- if (name[a] == 0)
- a = (FILENAME_LENGTH+1);
- else
- a = FILENAME_LENGTH;
- }
- }
- }
- if (a == (FILENAME_LENGTH+1))
- {
- // start sector and size of file
- start=((buffer[pos+2] << 0) |
- (buffer[pos+3] << 8) |
- (buffer[pos+4] << 16) |
- (buffer[pos+5] << 24));
- size =((buffer[pos+10] << 0) |
- (buffer[pos+11] << 8) |
- (buffer[pos+12] << 16) |
- (buffer[pos+13] << 24));
-
- logerror("start %08x size %08x\n", start,size);
- break;
- }
- if (buffer[pos] == 0)
- break;
- }
- if (start != 0)
- {
- // check for size
- assert(size <= v->size);
- // read encrypted data into memory
- ptr = v->memory;
- sectors = (size+2047)/2048;
- while (sectors > 0)
- {
- cdrom_read_data(gdromfile, start, ptr, CD_TRACK_MODE1);
- ptr += 2048;
- start++;
- sectors--;
- }
- }
- }
- // get des key
- realpic = machine.region("pic")->base();
-
- if (realpic)
- {
- int i;
- key = 0;
- for (i=0;i<7;i++)
- {
- key |= (UINT64)realpic[0x780+i*2] << (56 - i*8);
- }
-
- key |= (UINT64)realpic[0x7a0];
- }
- else
- {
- key =(((UINT64)v->picdata[0x31] << 56) |
- ((UINT64)v->picdata[0x32] << 48) |
- ((UINT64)v->picdata[0x33] << 40) |
- ((UINT64)v->picdata[0x34] << 32) |
- ((UINT64)v->picdata[0x35] << 24) |
- ((UINT64)v->picdata[0x36] << 16) |
- ((UINT64)v->picdata[0x37] << 8) |
- ((UINT64)v->picdata[0x29] << 0));
- }
-
- logerror("key is %08x%08x\n", (UINT32)((key & 0xffffffff00000000ULL)>>32), (UINT32)(key & 0x00000000ffffffffULL));
-
- // decrypt loaded data
- naomi_game_decrypt(machine, key, v->memory, size);
- cdrom_close(gdromfile);
+ dma_offset = (dma_offset & 0x0000ffff) | (data << 16);
+ dma_ready = false;
}
-/***************************************************************************
- DECRYPTION EMULATION
-
-By convention, we label the three known cart protection methods this way (using Deunan Knute's wording):
-M1: DMA read of protected ROM area
-M2: special read of ROM area which supplies decryption key first
-M3: normal read followed by write to cart's decryption buffer (up to 64kB), followed by M2 but from buffer area
-
-Notes below refer to M2 & M3.
-
-The encryption is done by a stream cipher operating in counter mode, which use a 16-bits internal block cipher.
-
-There are 2 "control bits" at the start of the decrypted stream which control the mode of operation: bit #1 set to 1 means
-that the decrypted stream needs to be decompressed after being decrypted. More on this later.
-
-The next 16-bits are part of the header (they don't belong to the plaintext), but his meaning is unclear. It has been
-conjectured that it could stablish when to "reset" the process and start processing a new stream (based on some tests
-on WWFROYAL, in which the decryption's output doesn't seem to be valid for more than some dozens of words), but some
-more testing would be needed for clarifying that.
-
-After those 18 heading bits, we find the proper plaintext. It must be noted that, due to the initial 2 special bits,
-the 16-bits words of the plaintext are shifted 2 bits respect to the word-boundaries of the output stream of the
-internal block-cipher. So, at a given step, the internal block cipher will output 16-bits, 14 of which will go to a
-given plaintext word, and the remaining 2 to the next plaintext word.
-
-The underlying block cipher consists of two 4-round Feistel Networks (FN): the first one takes the counter (16 bits),
-the game-key (>=26 bits) and the sequence-key (16 bits) and output a middle result (16 bits) which will act as another key
-for the second one. The second FN will take the encrypted word (16 bits), the game-key, the sequence-key and the result
-from the first FN and will output the decrypted word (16 bits).
-
-Each round of the Feistel Networks use four substitution sboxes, each having 6 inputs and 2 outputs. The input can be the
-XOR of at most two "sources bits", being source bits the bits from the previous round and the bits from the different keys.
-
-The underlying block cipher has the same structure than the one used by the CPS-2 (Capcom Play System 2) and,
-indeed, some of the used sboxes are exactly the same and appear in the same FN/round in both systems (this is not evident,
-as you need to apply a bitswapping and some XORs to the input & output of the sboxes to get the same values due). However,
-the key scheduling used by this implementation is much weaker than the CPS-2's one. Many s-boxes inputs are XORed with any
-key bit.
-
-Due to the small key-length, no sophisticated attacks are needed to recover the keys; a brute-force attack knowing just
-some (encrypted word-decrypted word) pairs suffice. However, due to the weak key scheduling, it should be noted that some
-related keys can produce the same output bytes for some (short) input sequences.
-
-The only difference in the decryption process between M2 and M3 is the initialization of the counter. In M3, the counter is
-always set to 0 at the beginning of the decryption while, in M2, the bits #1-#16 of the ciphertext's address are used
-to initialize the counter.
-
-Due to the nature of the cipher, there are some degrees of freedom when choosing the s-boxes and keys values; by example,
-you could apply a fixed bitswapping and XOR to the keys and the decryption would remain the same as long as you change
-accordingly the s-boxes' definitions. So the order of the bits in the keys is arbitrary, and the s-boxes values have been
-chosen so as to make the key for CAPSNK equal to 0.
-
-It can be observed that a couple of sboxes have incomplete tables (a 255 value indicate an unknown value). The recovered keys
-as of december/2010 show small randomness and big correlations, making possible that some unseen bits could make the
-decryption need those incomplete parts.
-
-****************************************************************************************/
-
-struct sbox
-{
- UINT8 table[64];
- int inputs[6]; // positions of the inputs bits, -1 means no input except from key
- int outputs[2]; // positions of the output bits
-};
-
-
-static const struct sbox fn1_sboxes[4][4] =
-{
- { // 1st round
- {
- {
- 0,3,2,2,1,3,1,2,3,2,1,2,1,2,3,1,3,2,2,0,2,1,3,0,0,3,2,3,2,1,2,0,
- 2,3,1,1,2,2,1,1,1,0,2,3,3,0,2,1,1,1,1,1,3,0,3,2,1,0,1,2,0,3,1,3,
- },
- {3,4,5,7,-1,-1},
- {0,4}
- },
-
- {
- {
- 2,2,2,0,3,3,0,1,2,2,3,2,3,0,2,2,1,1,0,3,3,2,0,2,0,1,0,1,2,3,1,1,
- 0,1,3,3,1,3,3,1,2,3,2,0,0,0,2,2,0,3,1,3,0,3,2,2,0,3,0,3,1,1,0,2,
- },
- {0,1,2,5,6,7},
- {1,6}
- },
-
- {
- {
- 0,1,3,0,3,1,1,1,1,2,3,1,3,0,2,3,3,2,0,2,1,1,2,1,1,3,1,0,0,2,0,1,
- 1,3,1,0,0,3,2,3,2,0,3,3,0,0,0,0,1,2,3,3,2,0,3,2,1,0,0,0,2,2,3,3,
- },
- {0,2,5,6,7,-1},
- {2,3}
- },
-
- {
- {
- 3,2,1,2,1,2,3,2,0,3,2,2,3,1,3,3,0,2,3,0,3,3,2,1,1,1,2,0,2,2,0,1,
- 1,3,3,0,0,3,0,3,0,2,1,3,2,1,0,0,0,1,1,2,0,1,0,0,0,1,3,3,2,0,3,3,
- },
- {1,2,3,4,6,7},
- {5,7}
- },
- },
- { // 2nd round
- {
- {
- 3,3,1,2,0,0,2,2,2,1,2,1,3,1,1,3,3,0,0,3,0,3,3,2,1,1,3,2,3,2,1,3,
- 2,3,0,1,3,2,0,1,2,1,3,1,2,2,3,3,3,1,2,2,0,3,1,2,2,1,3,0,3,0,1,3,
- },
- {0,1,3,4,5,7},
- {0,4}
- },
-
- {
- {
- 2,0,1,0,0,3,2,0,3,3,1,2,1,3,0,2,0,2,0,0,0,2,3,1,3,1,1,2,3,0,3,0,
- 3,0,2,0,0,2,2,1,0,2,3,3,1,3,1,0,1,3,3,0,0,1,3,1,0,2,0,3,2,1,0,1,
- },
- {0,1,3,4,6,-1},
- {1,5}
- },
-
- {
- {
- 2,2,2,3,1,1,0,1,0,1,2,2,3,3,0,2,0,3,2,3,3,0,2,1,0,3,1,0,0,2,3,2,
- 3,2,0,3,2,0,1,0,3,3,1,1,2,2,2,0,2,1,3,1,1,1,1,2,2,2,3,0,1,3,0,0,
- },
- {1,2,5,6,7,-1},
- {2,7}
- },
-
- {
- {
- 0,1,3,3,3,1,3,3,1,0,2,0,2,0,0,3,1,2,1,3,1,2,3,2,2,0,1,3,0,3,3,3,
- 0,0,0,2,1,1,2,3,2,2,3,1,1,2,0,2,0,2,1,3,1,1,3,3,1,1,3,0,2,3,0,0,
- },
- {2,3,4,5,6,7},
- {3,6}
- },
- },
- { // 3rd round
- {
- {
- 0,0,1,0,1,0,0,3,2,0,0,3,0,1,0,2,0,3,0,0,2,0,3,2,2,1,3,2,2,1,1,2,
- 0,0,0,3,0,1,1,0,0,2,1,0,3,1,2,2,2,0,3,1,3,0,1,2,2,1,1,1,0,2,3,1,
- },
- {1,2,3,4,5,7},
- {0,5}
- },
-
- {
- {
- 1,2,1,0,3,1,1,2,0,0,2,3,2,3,1,3,2,0,3,2,2,3,1,1,1,1,0,3,2,0,0,1,
- 1,0,0,1,3,1,2,3,0,0,2,3,3,0,1,0,0,2,3,0,1,2,0,1,3,3,3,1,2,0,2,1,
- },
- {0,2,4,5,6,7},
- {1,6}
- },
-
- {
- {
- 0,3,0,2,1,2,0,0,1,1,0,0,3,1,1,0,0,3,0,0,2,3,3,2,3,1,2,0,0,2,3,0,
- // unused?
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- },
- {0,2,4,6,7,-1},
- {2,3}
- },
-
- {
- {
- 0,0,1,0,0,1,0,2,3,3,0,3,3,2,3,0,2,2,2,0,3,2,0,3,1,0,0,3,3,0,0,0,
- 2,2,1,0,2,0,3,2,0,0,3,1,3,3,0,0,2,1,1,2,1,0,1,1,0,3,1,2,0,2,0,3,
- },
- {0,1,2,3,6,-1},
- {4,7}
- },
- },
- { // 4th round
- {
- {
- 0,3,3,3,3,3,2,0,0,1,2,0,2,2,2,2,1,1,0,2,2,1,3,2,3,2,0,1,2,3,2,1,
- 3,2,2,3,1,0,1,0,0,2,0,1,2,1,2,3,1,2,1,1,2,2,1,0,1,3,2,3,2,0,3,1,
- },
- {0,1,3,4,5,6},
- {0,5}
- },
-
- {
- {
- 0,3,0,0,2,0,3,1,1,1,2,2,2,1,3,1,2,2,1,3,2,2,3,3,0,3,1,0,3,2,0,1,
- 3,0,2,0,1,0,2,1,3,3,1,2,2,0,2,3,3,2,3,0,1,1,3,3,0,2,1,3,0,2,2,3,
- },
- {0,1,2,3,5,7},
- {1,7}
- },
-
- {
- {
- 0,1,2,3,3,3,3,1,2,0,2,3,2,1,0,1,2,2,1,2,0,3,2,0,1,1,0,1,3,1,3,1,
- 3,1,0,0,1,0,0,0,0,1,2,2,1,1,3,3,1,2,3,3,3,2,3,0,2,2,1,3,3,0,2,0,
- },
- {2,3,4,5,6,7},
- {2,3}
- },
-
- {
- {
- 0,2,1,1,3,2,0,3,1,0,1,0,3,2,1,1,2,2,0,3,1,0,1,2,2,2,3,3,0,0,0,0,
- 1,2,1,0,2,1,2,2,2,3,2,3,0,1,3,0,0,1,3,0,0,1,1,0,1,0,0,0,0,2,0,1,
- },
- {0,1,2,4,6,7},
- {4,6}
- },
- },
-};
-
-
-static const struct sbox fn2_sboxes[4][4] =
-{
- { // 1st round
- {
- {
- 3,3,0,1,0,1,0,0,0,3,0,0,1,3,1,2,0,3,3,3,2,1,0,1,1,1,2,2,2,3,2,2,
- 2,1,3,3,1,3,1,1,0,0,1,2,0,2,2,1,1,2,3,1,2,1,3,1,2,2,0,1,3,0,2,2,
- },
- {1,3,4,5,6,7},
- {0,7}
- },
-
- {
- {
- 0,2,3,2,1,1,0,0,2,1,0,3,3,0,0,0,3,2,0,2,1,1,2,1,0,0,3,1,2,2,3,1,
- 3,1,3,0,0,0,1,3,1,0,0,3,2,2,3,1,1,3,0,0,2,1,3,3,1,3,1,2,3,1,2,1,
- },
- {0,3,5,6,-1,-1},
- {1,2}
- },
-
- {
- {
- 0,2,2,1,0,1,2,1,2,0,1,2,3,3,0,1,3,1,1,2,1,2,1,3,3,2,3,3,2,1,0,1,
- 0,1,0,2,0,1,1,3,2,0,3,2,1,1,1,3,2,3,0,2,3,0,2,2,1,3,0,1,1,2,2,2,
- },
- {0,2,3,4,7,-1},
- {3,4}
- },
-
- {
- {
- 2,3,1,3,2,0,1,2,0,0,3,3,3,3,3,1,2,0,2,1,2,3,0,2,0,1,0,3,0,2,1,0,
- 2,3,0,1,3,0,3,2,3,1,2,0,3,1,1,2,0,3,0,0,2,0,2,1,2,2,3,2,1,2,3,1,
- },
- {1,2,5,6,-1,-1},
- {5,6}
- },
- },
- { // 2nd round
- {
- {
- 2,3,1,3,1,0,3,3,3,2,3,3,2,0,0,3,2,3,0,3,1,1,2,3,1,1,2,2,0,1,0,0,
- 2,1,0,1,2,0,1,2,0,3,1,1,2,3,1,2,0,2,0,1,3,0,1,0,2,2,3,0,3,2,3,0,
- },
- {0,1,4,5,6,7},
- {0,7}
- },
-
- {
- {
- 0,2,2,0,2,2,0,3,2,3,2,1,3,2,3,3,1,1,0,0,3,0,2,1,1,3,3,2,3,2,0,1,
- 1,2,3,0,1,0,3,0,3,1,0,2,1,2,0,3,2,3,1,2,2,0,3,2,3,0,0,1,2,3,3,3,
- },
- {0,2,3,6,7,-1},
- {1,5}
- },
-
- {
- {
- 1,2,3,2,0,3,2,3,0,1,1,0,0,2,2,3,2,0,0,3,0,2,3,3,2,2,1,0,2,1,0,3,
- 1,0,2,0,1,1,0,1,0,0,1,0,3,0,3,3,2,2,0,2,1,1,1,0,3,0,1,3,2,3,2,1,
- },
- {2,3,4,6,7,-1},
- {2,3}
- },
-
- {
- {
- 2,3,1,3,1,1,2,3,3,1,1,0,1,0,2,3,2,1,0,0,2,2,0,1,0,2,2,2,0,2,1,0,
- 3,1,2,3,1,3,0,2,1,0,1,0,0,1,2,2,3,2,3,1,3,2,1,1,2,0,2,1,3,3,1,0,
- },
- {1,2,3,4,5,6},
- {4,6}
- },
- },
- { // 3rd round
- {
- {
- 0,3,0,1,0,2,3,3,1,0,1,3,2,2,1,1,3,3,3,0,2,0,2,0,0,0,2,3,1,1,0,0,
- 3,3,0,3,3,0,0,2,1,1,1,0,2,2,2,0,3,0,3,1,2,2,0,3,0,0,3,2,0,3,2,1,
- },
- {1,4,5,6,7,-1},
- {0,5}
- },
-
- {
- {
- 0,3,0,1,3,0,3,1,3,2,2,2,3,0,3,2,2,1,2,2,0,3,2,2,0,0,2,1,1,3,2,3,
- 2,3,3,1,2,0,1,2,2,1,0,0,0,0,2,3,1,2,0,3,1,3,1,2,3,2,1,0,3,0,0,2,
- },
- {0,2,3,4,6,7},
- {1,7}
- },
-
- {
- {
- 2,2,3,2,0,3,2,3,1,1,2,0,2,3,1,3,0,0,0,3,2,0,1,0,1,3,2,3,3,3,1,0,
- // unused?
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
- },
- {1,2,4,7,-1,-1},
- {2,4}
- },
-
- {
- {
- 0,2,3,1,3,1,1,0,0,1,3,0,2,1,3,3,2,0,2,1,1,2,3,3,0,0,0,2,0,2,3,0,
- 3,3,3,3,2,3,3,2,3,0,1,0,2,3,3,2,0,1,3,1,0,1,2,3,3,0,2,0,3,0,3,3,
- },
- {0,1,2,3,5,7},
- {3,6}
- },
- },
- { // 4th round
- {
- {
- 0,1,1,0,0,1,0,2,3,3,0,1,2,3,0,2,1,0,3,3,2,0,3,0,0,2,1,0,1,0,1,3,
- 0,3,3,1,2,0,3,0,1,3,2,0,3,3,1,3,0,2,3,3,2,1,1,2,2,1,2,1,2,0,1,1,
- },
- {0,1,2,4,7,-1},
- {0,5}
- },
-
- {
- {
- 2,0,0,2,3,0,2,3,3,1,1,1,2,1,1,0,0,2,1,0,0,3,1,0,0,3,3,0,1,0,1,2,
- 0,2,0,2,0,1,2,3,2,1,1,0,3,3,3,3,3,3,1,0,3,0,0,2,0,3,2,0,2,2,0,1,
- },
- {0,1,3,5,6,-1},
- {1,3}
- },
-
- {
- {
- 0,1,1,2,1,3,1,1,0,0,3,1,1,1,2,0,3,2,0,1,1,2,3,3,3,0,3,0,0,2,0,3,
- 3,2,0,0,3,2,3,1,2,3,0,3,2,0,1,2,2,2,0,2,0,1,2,2,3,1,2,2,1,1,1,1,
- },
- {0,2,3,4,5,7},
- {2,7}
- },
-
- {
- {
- 0,1,2,0,3,3,0,3,2,1,3,3,0,3,1,1,3,2,3,2,3,0,0,0,3,0,2,2,3,2,2,3,
- 2,2,3,1,2,3,1,2,0,3,0,2,3,1,0,0,3,2,1,2,1,2,1,3,1,0,2,3,3,1,3,2,
- },
- {2,3,4,5,6,7},
- {4,6}
- },
- },
-};
-
-static const int fn1_game_key_scheduling[38][2] =
-{
- {1,29}, {1,71}, {2,4}, {2,54}, {3,8}, {4,56}, {4,73}, {5,11},
- {6,51}, {7,92}, {8,89}, {9,9}, {9,10}, {9,39}, {9,41}, {9,58},
- {9,59}, {9,86}, {10,90}, {11,6}, {12,64}, {13,49}, {14,44}, {15,40},
- {16,69}, {17,15}, {18,23}, {18,43}, {19,82}, {20,81}, {21,32}, {21,61},
- {22,5}, {23,66}, {24,13}, {24,45}, {25,12}, {25,35}
-};
-
-static const int fn2_game_key_scheduling[34][2] =
-{
- {0,0}, {1,3}, {2,11}, {3,20}, {4,22}, {5,23}, {6,29}, {7,38},
- {8,39}, {9,47}, {9,55}, {9,86}, {9,87}, {9,90}, {10,50}, {10,53},
- {11,57}, {12,59}, {13,61}, {13,64}, {14,63}, {15,67}, {16,72}, {17,83},
- {18,88}, {19,94}, {20,35}, {21,17}, {21,92}, {22,6}, {22,11}, {23,85},
- {24,16}, {25,25}
-};
-
-static const int fn1_sequence_key_scheduling[20][2] =
-{
- {0,52}, {1,34}, {2,17}, {3,36}, {4,84}, {4,88}, {5,57}, {6,48},
- {6,68}, {7,76}, {8,83}, {9,30}, {10,22}, {10,41}, {11,38}, {12,55},
- {13,74}, {14,19}, {14,80}, {15,26}
-};
-
-static const int fn2_sequence_key_scheduling[16] = {77,34,8,42,36,27,69,66,13,9,79,31,49,7,24,64};
-
-static const int fn2_middle_result_scheduling[16] = {1,10,44,68,74,78,81,95,2,4,30,40,41,51,53,58};
-
-static int feistel_function(int input, const struct sbox* sboxes, UINT32 subkeys)
+WRITE16_MEMBER(naomi_board::dma_offsetl_w)
{
- int k,m;
- int aux;
- int result=0;
-
- for (m=0; m<4; ++m) // 4 sboxes
- {
- for (k=0, aux=0; k<6; ++k)
- {
- if (sboxes[m].inputs[k]!=-1)
- {
- aux |= (BIT(input, sboxes[m].inputs[k])<<k);
- }
- }
-
- aux = sboxes[m].table[(aux^subkeys)&0x3f];
-
- for (k=0; k<2; ++k)
- {
- result |= (BIT(aux,k)<<sboxes[m].outputs[k]);
- }
-
- subkeys >>=6;
- }
-
- return result;
+ dma_offset = (dma_offset & 0xffff0000) | data;
+ dma_ready = false;
}
-/**************************
-This implementation is an "educational" version. It must be noted that it can be speed-optimized in a number of ways.
-The most evident one is to factor out the parts of the key-scheduling that must only be done once (like the game-key &
-sequence-key parts) as noted in the comments inlined in the function. More sophisticated speed-ups can be gained by
-noticing that the weak key-scheduling would allow to create some pregenerated look-up tables for doing most of the work
-of the function. Even so, it would still be pretty slow, so caching techniques could be a wiser option here.
-**************************/
-
-static UINT16 block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data)
+WRITE16_MEMBER(naomi_board::dma_count_w)
{
- int j;
- int aux,aux2;
- int A,B;
- int middle_result;
- UINT32 fn1_subkeys[4];
- UINT32 fn2_subkeys[4];
-
- /* Game-key scheduling; this could be done just once per game at initialization time */
- memset(fn1_subkeys,0,sizeof(UINT32)*4);
- memset(fn2_subkeys,0,sizeof(UINT32)*4);
-
- for (j=0; j<38; ++j)
- {
- if (BIT(game_key, fn1_game_key_scheduling[j][0])!=0)
- {
- aux = fn1_game_key_scheduling[j][1]%24;
- aux2 = fn1_game_key_scheduling[j][1]/24;
- fn1_subkeys[aux2] ^= (1<<aux);
- }
- }
-
- for (j=0; j<34; ++j)
- {
- if (BIT(game_key, fn2_game_key_scheduling[j][0])!=0)
- {
- aux = fn2_game_key_scheduling[j][1]%24;
- aux2 = fn2_game_key_scheduling[j][1]/24;
- fn2_subkeys[aux2] ^= (1<<aux);
- }
- }
- /********************************************************/
-
- /* Sequence-key scheduling; this could be done just once per decryption run */
- for (j=0; j<20; ++j)
- {
- if (BIT(sequence_key,fn1_sequence_key_scheduling[j][0])!=0)
- {
- aux = fn1_sequence_key_scheduling[j][1]%24;
- aux2 = fn1_sequence_key_scheduling[j][1]/24;
- fn1_subkeys[aux2] ^= (1<<aux);
- }
- }
-
- for (j=0; j<16; ++j)
- {
- if (BIT(sequence_key,j)!=0)
- {
- aux = fn2_sequence_key_scheduling[j]%24;
- aux2 = fn2_sequence_key_scheduling[j]/24;
- fn2_subkeys[aux2] ^= (1<<aux);
- }
- }
-
- // subkeys bits 10 & 41
- fn2_subkeys[0] ^= (BIT(sequence_key,2)<<10);
- fn2_subkeys[1] ^= (BIT(sequence_key,4)<<17);
- /**************************************************************/
-
- // First Feistel Network
-
- aux = BITSWAP16(counter,5,12,14,13,9,3,6,4, 8,1,15,11,0,7,10,2);
-
- // 1st round
- B = aux >> 8;
- A = (aux & 0xff) ^ feistel_function(B,fn1_sboxes[0],fn1_subkeys[0]);
-
- // 2nd round
- B = B ^ feistel_function(A,fn1_sboxes[1],fn1_subkeys[1]);
-
- // 3rd round
- A = A ^ feistel_function(B,fn1_sboxes[2],fn1_subkeys[2]);
-
- // 4th round
- B = B ^ feistel_function(A,fn1_sboxes[3],fn1_subkeys[3]);
-
- middle_result = (B<<8)|A;
-
-
- /* Middle-result-key sheduling */
- for (j=0; j<16; ++j)
- {
- if (BIT(middle_result,j)!=0)
- {
- aux = fn2_middle_result_scheduling[j]%24;
- aux2 = fn2_middle_result_scheduling[j]/24;
- fn2_subkeys[aux2] ^= (1<<aux);
- }
- }
- /*********************/
-
- // Second Feistel Network
-
- aux = BITSWAP16(data,14,3,8,12,13,7,15,4, 6,2,9,5,11,0,1,10);
-
- // 1st round
- B = aux >> 8;
- A = (aux & 0xff) ^ feistel_function(B,fn2_sboxes[0],fn2_subkeys[0]);
-
- // 2nd round
- B = B ^ feistel_function(A,fn2_sboxes[1],fn2_subkeys[1]);
-
- // 3rd round
- A = A ^ feistel_function(B,fn2_sboxes[2],fn2_subkeys[2]);
-
- // 4th round
- B = B ^ feistel_function(A,fn2_sboxes[3],fn2_subkeys[3]);
-
- aux = (B<<8)|A;
-
- aux = BITSWAP16(aux,15,7,6,14,13,12,5,4, 3,2,11,10,9,1,0,8);
-
- return aux;
+ dma_count = data;
}
-/***************************************************************************
- DEVICE INTERFACE
-***************************************************************************/
-
-/*-------------------------------------------------
- device start callback
--------------------------------------------------*/
-
-static DEVICE_START( naomibd )
+WRITE16_MEMBER(naomi_board::boardid_w)
{
- const naomibd_config *config = (const naomibd_config *)downcast<const legacy_device_base *>(device)->inline_config();
- naomibd_state *v = get_safe_token(device);
- int i;
-
- /* validate some basic stuff */
- assert(device->static_config() == NULL);
- assert(downcast<const legacy_device_base *>(device)->inline_config() != NULL);
-
- /* validate configuration */
- assert(config->type >= ROM_BOARD && config->type < MAX_NAOMIBD_TYPES);
-
- /* store a pointer back to the device */
- v->device = device;
-
- v->dc_dmakey = 0;
- v->m4_decoder = NULL;
-
- for (i=0; i<ARRAY_LENGTH(naomibd_translate_tbl); i++)
- {
- if (!strcmp(device->machine().system().name, naomibd_translate_tbl[i].name))
- {
- v->dc_gamekey = naomibd_translate_tbl[i].m2m3_key;
- v->dc_dmakey = naomibd_translate_tbl[i].m1_key;
- v->dc_m4key = naomibd_translate_tbl[i].m4_key;
-
- if (v->dc_m4key != 0)
- {
- v->m4_decoder = new NaomiM4Decoder(v->dc_m4key);
- }
- break;
- }
- }
-
- /* configure type-specific values */
- switch (config->type)
- {
- case ROM_BOARD:
- v->memory = (UINT8 *)device->machine().region(config->regiontag)->base();
- break;
-
- case AW_ROM_BOARD:
- v->memory = (UINT8 *)device->machine().region(config->regiontag)->base();
- break;
-
- case DIMM_BOARD:
- assert((config->size >= 256) && !(config->size & 255)); // size multiple of 256 megabytes ?
- v->size = config->size << 20;
- v->memory = (UINT8 *)auto_alloc_array_clear(device->machine(), UINT8, v->size); // 0x40000000 is needed for some Chihiro sets, Naomi should be less
- v->gdromchd = get_disk_handle(device->machine(), config->gdromregiontag);
- v->picdata = (UINT8 *)device->machine().region(config->picregiontag)->base();
- if (v->memory != NULL && v->gdromchd != NULL && v->picdata != NULL)
- load_rom_gdrom(device->machine(), v);
- break;
-
- default:
- fatalerror("Unsupported plug-in board in naomibd_start!");
- break;
- }
-
- /* set the type */
- v->index = device->machine().devicelist().indexof(device->type(), device->tag());
- v->type = config->type;
-
- /* initialize some registers */
- v->rom_offset = 0;
- v->rom_offset_flags = 0;
- v->dma_count = 0;
- v->dma_offset = 0;
- v->dma_offset_flags = 0;
- v->prot_offset = 0;
-
- /* do a soft reset to reset everything else */
- soft_reset(v);
-
- /* register for save states */
- init_save_state(device);
+ eeprom->cs_w((data >> 2) & 1);
+ eeprom->rst_w((data >> 3) & 1);
+ eeprom->scl_w((data >> 1) & 1);
+ eeprom->sda_w((data >> 0) & 1);
}
-
-/*-------------------------------------------------
- device exit callback
--------------------------------------------------*/
-
-static DEVICE_STOP( naomibd )
+READ16_MEMBER(naomi_board::boardid_r)
{
-// naomibd_state *v = get_safe_token(device);
+ return eeprom->sda_r() << 15;
}
-
-/*-------------------------------------------------
- device reset callback
--------------------------------------------------*/
-
-static DEVICE_RESET( naomibd )
+READ16_MEMBER(naomi_board::default_r)
{
- naomibd_state *v = get_safe_token(device);
- soft_reset(v);
+ logerror("NAOMIBD: unmapped read at %02x\n", offset);
+ return 0xffff;
}
-
-/*-------------------------------------------------
- device get info callback
--------------------------------------------------*/
-
-DEVICE_GET_INFO( naomibd )
+void naomi_board::board_write(offs_t offset, UINT16 data)
{
- const naomibd_config *config = (device != NULL) ? (const naomibd_config *)downcast<const legacy_device_base *>(device)->inline_config() : NULL;
- switch (state)
- {
- /* --- the following bits of info are returned as 64-bit signed integers --- */
- case DEVINFO_INT_TOKEN_BYTES: info->i = sizeof(naomibd_state); break;
- case DEVINFO_INT_INLINE_CONFIG_BYTES: info->i = sizeof(naomibd_config); break;
-
- /* --- the following bits of info are returned as pointers --- */
- case DEVINFO_PTR_ROM_REGION: info->romregion = NULL; break;
- case DEVINFO_PTR_MACHINE_CONFIG: info->machine_config = NULL; break;
-
- /* --- the following bits of info are returned as pointers to data or functions --- */
- case DEVINFO_FCT_START: info->start = DEVICE_START_NAME(naomibd); break;
- case DEVINFO_FCT_STOP: info->stop = DEVICE_STOP_NAME(naomibd); break;
- case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(naomibd); break;
-
- /* --- the following bits of info are returned as NULL-terminated strings --- */
- case DEVINFO_STR_NAME:
- switch (config->type)
- {
- default:
- case ROM_BOARD: strcpy(info->s, "Naomi Rom Board"); break;
- case AW_ROM_BOARD: strcpy(info->s, "Atomiswave Rom Board"); break;
- case DIMM_BOARD: strcpy(info->s, "Naomi Dimm Board"); break;
- }
- break;
- case DEVINFO_STR_FAMILY: strcpy(info->s, "Naomi/Atomiswave plug-in board"); break;
- case DEVINFO_STR_VERSION: strcpy(info->s, "1.1"); break;
- case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
- case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
- }
+ logerror("NAOMIBD: unhandled board write %08x, %04x\n", offset, data);
}
-
-DEFINE_LEGACY_DEVICE(NAOMI_BOARD, naomibd);
diff --git a/src/mame/machine/naomibd.h b/src/mame/machine/naomibd.h
index e69de29bb2d..1593e9e1f8f 100644
--- a/src/mame/machine/naomibd.h
+++ b/src/mame/machine/naomibd.h
@@ -0,0 +1,57 @@
+#ifndef _NAOMIBD_H_
+#define _NAOMIBD_H_
+
+#include "naomig1.h"
+
+#define MCFG_NAOMI_BOARD_ADD(_tag, type, _eeprom_tag, _maincpu_tag, _irq_cb) \
+ MCFG_NAOMI_G1_ADD(_tag, type, _maincpu_tag, _irq_cb) \
+ naomi_board::static_set_eeprom_tag(*device, _eeprom_tag);
+
+class naomi_board : public naomi_g1_device
+{
+public:
+ naomi_board(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock);
+
+ static void static_set_eeprom_tag(device_t &device, const char *_eeprom_tag);
+
+ // Can be patched in the underlying class
+ virtual DECLARE_ADDRESS_MAP(submap, 16);
+
+ DECLARE_WRITE16_MEMBER(rom_offseth_w); // 5f7000
+ DECLARE_WRITE16_MEMBER(rom_offsetl_w); // 5f7004
+ DECLARE_READ16_MEMBER( rom_data_r); // 5f7008
+ DECLARE_WRITE16_MEMBER(rom_data_w); // 5f7008
+ DECLARE_WRITE16_MEMBER(dma_offseth_w); // 5f700c
+ DECLARE_WRITE16_MEMBER(dma_offsetl_w); // 5f7010
+ DECLARE_WRITE16_MEMBER(dma_count_w); // 5f7014
+
+ DECLARE_WRITE16_MEMBER(boardid_w); // 5f7078
+ DECLARE_READ16_MEMBER( boardid_r); // 5f707c
+
+ DECLARE_READ16_MEMBER( default_r);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+ virtual void dma_get_position(UINT8 *&base, UINT32 &limit, bool to_mainram);
+ virtual void dma_advance(UINT32 size);
+
+ // To be defined in the underlying class
+ virtual void board_setup_address(UINT32 address, bool is_dma) = 0;
+ virtual void board_get_buffer(UINT8 *&base, UINT32 &limit) = 0;
+ virtual void board_advance(UINT32 size) = 0;
+
+ // To be optionally defined in the underlying class
+ virtual void board_write(offs_t offset, UINT16 data);
+
+private:
+ UINT32 rom_offset, dma_offset, dma_cur_offset;
+ UINT16 dma_count;
+ bool pio_ready, dma_ready;
+
+ const char *eeprom_tag;
+ class x76f100_device *eeprom;
+};
+
+#endif
diff --git a/src/mame/machine/naomig1.c b/src/mame/machine/naomig1.c
index e69de29bb2d..66e4eb8985f 100644
--- a/src/mame/machine/naomig1.c
+++ b/src/mame/machine/naomig1.c
@@ -0,0 +1,257 @@
+#define ADDRESS_MAP_MODERN
+
+#include "emu.h"
+#include "naomig1.h"
+
+DEVICE_ADDRESS_MAP_START(amap, 32, naomi_g1_device)
+ AM_RANGE(0x04, 0x07) AM_READWRITE(sb_gdstar_r, sb_gdstar_w)
+ AM_RANGE(0x08, 0x0b) AM_READWRITE(sb_gdlen_r, sb_gdlen_w)
+ AM_RANGE(0x0c, 0x0f) AM_READWRITE(sb_gddir_r, sb_gddir_w)
+ AM_RANGE(0x14, 0x17) AM_READWRITE(sb_gden_r, sb_gden_w)
+ AM_RANGE(0x18, 0x1b) AM_READWRITE(sb_gdst_r, sb_gdst_w)
+ AM_RANGE(0x80, 0x83) AM_WRITE(sb_g1rrc_w)
+ AM_RANGE(0x84, 0x87) AM_WRITE(sb_g1rwc_w)
+ AM_RANGE(0x88, 0x8b) AM_WRITE(sb_g1frc_w)
+ AM_RANGE(0x8c, 0x8f) AM_WRITE(sb_g1fwc_w)
+ AM_RANGE(0x90, 0x93) AM_WRITE(sb_g1crc_w)
+ AM_RANGE(0x94, 0x97) AM_WRITE(sb_g1cwc_w)
+ AM_RANGE(0xa0, 0xa3) AM_WRITE(sb_g1gdrc_w)
+ AM_RANGE(0xa4, 0xa7) AM_WRITE(sb_g1gdwc_w)
+ AM_RANGE(0xb0, 0xb3) AM_READ(sb_g1sysm_r)
+ AM_RANGE(0xb4, 0xb7) AM_WRITE(sb_g1crdyc_w)
+ AM_RANGE(0xb8, 0xbb) AM_WRITE(sb_gdapro_w)
+ AM_RANGE(0xf4, 0xf7) AM_READ(sb_gdstard_r)
+ AM_RANGE(0xf8, 0xfb) AM_READ(sb_gdlend_r)
+ADDRESS_MAP_END
+
+naomi_g1_device::naomi_g1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, type, name, tag, owner, clock)
+{
+ cpu = 0;
+}
+
+void naomi_g1_device::static_set_maincpu_tag(device_t &device, const char *maincpu_tag)
+{
+ naomi_g1_device &naomi_g1 = downcast<naomi_g1_device &>(device);
+ naomi_g1.maincpu_tag = maincpu_tag;
+}
+
+void naomi_g1_device::static_set_irq_cb(device_t &device, void (*irq_cb)(running_machine &))
+{
+ naomi_g1_device &naomi_g1 = downcast<naomi_g1_device &>(device);
+ naomi_g1.irq_cb = irq_cb;
+}
+
+void naomi_g1_device::device_start()
+{
+ cpu = machine().device<sh4_device>(maincpu_tag);
+ timer = timer_alloc(G1_TIMER_ID);
+
+ save_item(NAME(gdstar));
+ save_item(NAME(gdlen));
+ save_item(NAME(gddir));
+ save_item(NAME(gden));
+ save_item(NAME(gdst));
+}
+
+void naomi_g1_device::device_reset()
+{
+ gdstar = 0;
+ gdlen = 0;
+ gddir = 0;
+ gden = 0;
+ gdst = 0;
+}
+
+void naomi_g1_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ timer.adjust(attotime::never);
+ if(!gdst)
+ return;
+ gdst = 0;
+ if(irq_cb)
+ irq_cb(machine());
+}
+
+READ32_MEMBER(naomi_g1_device::sb_gdstar_r)
+{
+ return gdstar;
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_gdstar_w)
+{
+ COMBINE_DATA(&gdstar);
+ logerror("G1: gdstar_w %08x @ %08x\n", data, mem_mask);
+}
+
+READ32_MEMBER(naomi_g1_device::sb_gdlen_r)
+{
+ return gdlen;
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_gdlen_w)
+{
+ COMBINE_DATA(&gdlen);
+ logerror("G1: gdlen_w %08x @ %08x\n", data, mem_mask);
+}
+
+READ32_MEMBER(naomi_g1_device::sb_gddir_r)
+{
+ return gddir;
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_gddir_w)
+{
+ COMBINE_DATA(&gddir);
+ gddir &= 1;
+ logerror("G1: gddir_w %08x @ %08x\n", data, mem_mask);
+}
+
+READ32_MEMBER(naomi_g1_device::sb_gden_r)
+{
+ return gden;
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_gden_w)
+{
+ COMBINE_DATA(&gden);
+ gden &= 1;
+ logerror("G1: gden_w %08x @ %08x\n", data, mem_mask);
+}
+
+READ32_MEMBER(naomi_g1_device::sb_gdst_r)
+{
+ return gdst;
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_gdst_w)
+{
+ UINT32 old = gdst;
+ COMBINE_DATA(&gdst);
+ gdst &= 1;
+ logerror("G1: gdst_w %08x @ %08x\n", data, mem_mask);
+ if(!old && gdst && gden) {
+ // DMA starts
+
+ UINT32 adr = gdstar;
+ UINT32 len = gdlen;
+
+ // Deunan says round up to 32, doc says complete with zeroes.
+ // Virtua Tennis requires one of the two to boot
+ // We'll go with DK for now.
+ //
+ // In any case, low bit is ignored
+ len = (len + 30) & ~30;
+
+ bool to_mainram = true;
+ while(len) {
+ UINT8 *base;
+ UINT32 limit = len;
+ dma_get_position(base, limit, to_mainram);
+
+ if(!limit)
+ break;
+ UINT32 tlen = limit > len ? len : limit;
+ dma(base, adr, tlen, to_mainram);
+ adr += tlen;
+ len -= tlen;
+ dma_advance(tlen);
+ }
+
+ while(len && to_mainram) {
+ unsigned char zero[32];
+ memset(zero, 0, sizeof(zero));
+ UINT32 tlen = len > 32 ? 32 : len;
+ dma(zero, adr, tlen, to_mainram);
+ adr += tlen;
+ len -= tlen;
+ }
+
+ timer->adjust(attotime::from_usec(500));
+ }
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_g1rrc_w)
+{
+ logerror("G1: g1rrc_w %08x @ %08x\n", data, mem_mask);
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_g1rwc_w)
+{
+ logerror("G1: g1rwc_w %08x @ %08x\n", data, mem_mask);
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_g1crc_w)
+{
+ logerror("G1: g1crc_w %08x @ %08x\n", data, mem_mask);
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_g1cwc_w)
+{
+ logerror("G1: g1cwc_w %08x @ %08x\n", data, mem_mask);
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_g1frc_w)
+{
+ logerror("G1: g1frc_w %08x @ %08x\n", data, mem_mask);
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_g1fwc_w)
+{
+ logerror("G1: g1fwc_w %08x @ %08x\n", data, mem_mask);
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_g1gdrc_w)
+{
+ logerror("G1: g1gdrc_w %08x @ %08x\n", data, mem_mask);
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_g1gdwc_w)
+{
+ logerror("G1: g1gdwc_w %08x @ %08x\n", data, mem_mask);
+}
+
+READ32_MEMBER(naomi_g1_device::sb_g1sysm_r)
+{
+ logerror("G1: g1sysm_r @ %08x\n", mem_mask);
+ return 0;
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_g1crdyc_w)
+{
+ logerror("G1: g1crdyc_w %08x @ %08x\n", data, mem_mask);
+}
+
+WRITE32_MEMBER(naomi_g1_device::sb_gdapro_w)
+{
+ logerror("G1: gdapro_w %08x @ %08x\n", data, mem_mask);
+}
+
+READ32_MEMBER(naomi_g1_device::sb_gdstard_r)
+{
+ logerror("G1: gdstard_r @ %08x\n", mem_mask);
+ return 0;
+}
+
+READ32_MEMBER(naomi_g1_device::sb_gdlend_r)
+{
+ logerror("G1: gdlend_r @ %08x\n", mem_mask);
+ return 0;
+}
+
+void naomi_g1_device::dma(void *dma_ptr, UINT32 main_adr, UINT32 size, bool to_mainram)
+{
+ sh4_ddt_dma ddt;
+ if(to_mainram)
+ ddt.destination = main_adr;
+ else
+ ddt.source = main_adr;
+ ddt.buffer = dma_ptr;
+ ddt.length = size >> 5;
+ ddt.size = 32;
+ ddt.direction = to_mainram;
+ ddt.channel = -1;
+ ddt.mode = -1;
+ sh4_dma_ddt(cpu, &ddt);
+}
+
diff --git a/src/mame/machine/naomig1.h b/src/mame/machine/naomig1.h
index e69de29bb2d..6f1432c84a1 100644
--- a/src/mame/machine/naomig1.h
+++ b/src/mame/machine/naomig1.h
@@ -0,0 +1,67 @@
+#ifndef _NAOMIG1_H_
+#define _NAOMIG1_H_
+
+#include "cpu/sh4/sh4.h"
+
+#define MCFG_NAOMI_G1_ADD(_tag, type, _maincpu_tag, _irq_cb) \
+ MCFG_DEVICE_ADD(_tag, type, 0) \
+ naomi_g1_device::static_set_maincpu_tag(*device, _maincpu_tag); \
+ naomi_g1_device::static_set_irq_cb(*device, _irq_cb);
+
+class naomi_g1_device : public device_t
+{
+public:
+ naomi_g1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock);
+ static void static_set_maincpu_tag(device_t &device, const char *maincpu_tag);
+ static void static_set_irq_cb(device_t &device, void (*irq_cb)(running_machine &));
+
+ DECLARE_ADDRESS_MAP(amap, 32);
+
+ DECLARE_READ32_MEMBER(sb_gdstar_r); // 5f7404
+ DECLARE_WRITE32_MEMBER(sb_gdstar_w); // 5f7404
+ DECLARE_READ32_MEMBER(sb_gdlen_r); // 5f7408
+ DECLARE_WRITE32_MEMBER(sb_gdlen_w); // 5f7408
+ DECLARE_READ32_MEMBER(sb_gddir_r); // 5f740c
+ DECLARE_WRITE32_MEMBER(sb_gddir_w); // 5f740c
+ DECLARE_READ32_MEMBER(sb_gden_r); // 5f7414
+ DECLARE_WRITE32_MEMBER(sb_gden_w); // 5f7414
+ DECLARE_READ32_MEMBER(sb_gdst_r); // 5f7418
+ DECLARE_WRITE32_MEMBER(sb_gdst_w); // 5f7418
+
+ DECLARE_WRITE32_MEMBER(sb_g1rrc_w); // 5f7480
+ DECLARE_WRITE32_MEMBER(sb_g1rwc_w); // 5f7484
+ DECLARE_WRITE32_MEMBER(sb_g1frc_w); // 5f7488
+ DECLARE_WRITE32_MEMBER(sb_g1fwc_w); // 5f748c
+ DECLARE_WRITE32_MEMBER(sb_g1crc_w); // 5f7490
+ DECLARE_WRITE32_MEMBER(sb_g1cwc_w); // 5f7494
+ DECLARE_WRITE32_MEMBER(sb_g1gdrc_w); // 5f74a0
+ DECLARE_WRITE32_MEMBER(sb_g1gdwc_w); // 5f74a4
+ DECLARE_READ32_MEMBER(sb_g1sysm_r); // 5f74b0
+ DECLARE_WRITE32_MEMBER(sb_g1crdyc_w); // 5f74b4
+ DECLARE_WRITE32_MEMBER(sb_gdapro_w); // 5f74b8
+
+ DECLARE_READ32_MEMBER(sb_gdstard_r); // 5f74f4
+ DECLARE_READ32_MEMBER(sb_gdlend_r); // 5f74f8
+
+protected:
+ enum { G1_TIMER_ID = 0x42 };
+
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+
+ virtual void dma_get_position(UINT8 *&base, UINT32 &limit, bool to_maincpu) = 0;
+ virtual void dma_advance(UINT32 size) = 0;
+
+private:
+ UINT32 gdstar, gdlen, gddir, gden, gdst;
+
+ sh4_device *cpu;
+ const char *maincpu_tag;
+ emu_timer *timer;
+ void (*irq_cb)(running_machine &);
+
+ void dma(void *dma_ptr, UINT32 main_adr, UINT32 size, bool to_mainram);
+};
+
+#endif
diff --git a/src/mame/machine/naomigd.c b/src/mame/machine/naomigd.c
index e69de29bb2d..69a2f35fd88 100644
--- a/src/mame/machine/naomigd.c
+++ b/src/mame/machine/naomigd.c
@@ -0,0 +1,515 @@
+#define ADDRESS_MAP_MODERN
+
+#include "emu.h"
+#include "naomigd.h"
+#include "imagedev/chd_cd.h"
+
+/*
+ Dimm board registers (add more information if you find it):
+
+ Name: Naomi Dimm Bd.
+ NAOMI_DIMM_COMMAND = 5f703c 14000014 (16 bit):
+ if bits all 1 no dimm board present and other registers not used
+ bit 15: during an interrupt is 1 if the dimm board has a command to be executed
+ bit 14-9: 6 bit command number (naomi bios understands 0 1 3 4 5 6 8 9 a)
+ bit 7-0: higher 8 bits of 24 bit offset parameter
+ NAOMI_DIMM_OFFSETL = 5f7040 14000018 (16 bit):
+ bit 15-0: lower 16 bits of 24 bit offset parameter
+ NAOMI_DIMM_PARAMETERL = 5f7044 1400001c (16 bit)
+ NAOMI_DIMM_PARAMETERH = 5f7048 14000020 (16 bit)
+ NAOMI_DIMM_STATUS = 5f704c 14000024 (16 bit):
+ bit 0: when 0 signal interrupt from naomi to dimm board
+ bit 8: when 0 signal interrupt from dimm board to naomi
+
+*/
+
+const device_type NAOMI_GDROM_BOARD = &device_creator<naomi_gdrom_board>;
+
+const UINT32 naomi_gdrom_board::DES_LEFTSWAP[] = {
+ 0x00000000, 0x00000001, 0x00000100, 0x00000101, 0x00010000, 0x00010001, 0x00010100, 0x00010101,
+ 0x01000000, 0x01000001, 0x01000100, 0x01000101, 0x01010000, 0x01010001, 0x01010100, 0x01010101
+};
+
+const UINT32 naomi_gdrom_board::DES_RIGHTSWAP[] = {
+ 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100,
+ 0x00000001, 0x01000001, 0x00010001, 0x01010001, 0x00000101, 0x01000101, 0x00010101, 0x01010101,
+};
+
+const UINT32 naomi_gdrom_board::DES_SBOX1[] = {
+ 0x00808200, 0x00000000, 0x00008000, 0x00808202, 0x00808002, 0x00008202, 0x00000002, 0x00008000,
+ 0x00000200, 0x00808200, 0x00808202, 0x00000200, 0x00800202, 0x00808002, 0x00800000, 0x00000002,
+ 0x00000202, 0x00800200, 0x00800200, 0x00008200, 0x00008200, 0x00808000, 0x00808000, 0x00800202,
+ 0x00008002, 0x00800002, 0x00800002, 0x00008002, 0x00000000, 0x00000202, 0x00008202, 0x00800000,
+ 0x00008000, 0x00808202, 0x00000002, 0x00808000, 0x00808200, 0x00800000, 0x00800000, 0x00000200,
+ 0x00808002, 0x00008000, 0x00008200, 0x00800002, 0x00000200, 0x00000002, 0x00800202, 0x00008202,
+ 0x00808202, 0x00008002, 0x00808000, 0x00800202, 0x00800002, 0x00000202, 0x00008202, 0x00808200,
+ 0x00000202, 0x00800200, 0x00800200, 0x00000000, 0x00008002, 0x00008200, 0x00000000, 0x00808002
+};
+
+const UINT32 naomi_gdrom_board::DES_SBOX2[] = {
+ 0x40084010, 0x40004000, 0x00004000, 0x00084010, 0x00080000, 0x00000010, 0x40080010, 0x40004010,
+ 0x40000010, 0x40084010, 0x40084000, 0x40000000, 0x40004000, 0x00080000, 0x00000010, 0x40080010,
+ 0x00084000, 0x00080010, 0x40004010, 0x00000000, 0x40000000, 0x00004000, 0x00084010, 0x40080000,
+ 0x00080010, 0x40000010, 0x00000000, 0x00084000, 0x00004010, 0x40084000, 0x40080000, 0x00004010,
+ 0x00000000, 0x00084010, 0x40080010, 0x00080000, 0x40004010, 0x40080000, 0x40084000, 0x00004000,
+ 0x40080000, 0x40004000, 0x00000010, 0x40084010, 0x00084010, 0x00000010, 0x00004000, 0x40000000,
+ 0x00004010, 0x40084000, 0x00080000, 0x40000010, 0x00080010, 0x40004010, 0x40000010, 0x00080010,
+ 0x00084000, 0x00000000, 0x40004000, 0x00004010, 0x40000000, 0x40080010, 0x40084010, 0x00084000
+};
+
+const UINT32 naomi_gdrom_board::DES_SBOX3[] = {
+ 0x00000104, 0x04010100, 0x00000000, 0x04010004, 0x04000100, 0x00000000, 0x00010104, 0x04000100,
+ 0x00010004, 0x04000004, 0x04000004, 0x00010000, 0x04010104, 0x00010004, 0x04010000, 0x00000104,
+ 0x04000000, 0x00000004, 0x04010100, 0x00000100, 0x00010100, 0x04010000, 0x04010004, 0x00010104,
+ 0x04000104, 0x00010100, 0x00010000, 0x04000104, 0x00000004, 0x04010104, 0x00000100, 0x04000000,
+ 0x04010100, 0x04000000, 0x00010004, 0x00000104, 0x00010000, 0x04010100, 0x04000100, 0x00000000,
+ 0x00000100, 0x00010004, 0x04010104, 0x04000100, 0x04000004, 0x00000100, 0x00000000, 0x04010004,
+ 0x04000104, 0x00010000, 0x04000000, 0x04010104, 0x00000004, 0x00010104, 0x00010100, 0x04000004,
+ 0x04010000, 0x04000104, 0x00000104, 0x04010000, 0x00010104, 0x00000004, 0x04010004, 0x00010100
+};
+
+const UINT32 naomi_gdrom_board::DES_SBOX4[] = {
+ 0x80401000, 0x80001040, 0x80001040, 0x00000040, 0x00401040, 0x80400040, 0x80400000, 0x80001000,
+ 0x00000000, 0x00401000, 0x00401000, 0x80401040, 0x80000040, 0x00000000, 0x00400040, 0x80400000,
+ 0x80000000, 0x00001000, 0x00400000, 0x80401000, 0x00000040, 0x00400000, 0x80001000, 0x00001040,
+ 0x80400040, 0x80000000, 0x00001040, 0x00400040, 0x00001000, 0x00401040, 0x80401040, 0x80000040,
+ 0x00400040, 0x80400000, 0x00401000, 0x80401040, 0x80000040, 0x00000000, 0x00000000, 0x00401000,
+ 0x00001040, 0x00400040, 0x80400040, 0x80000000, 0x80401000, 0x80001040, 0x80001040, 0x00000040,
+ 0x80401040, 0x80000040, 0x80000000, 0x00001000, 0x80400000, 0x80001000, 0x00401040, 0x80400040,
+ 0x80001000, 0x00001040, 0x00400000, 0x80401000, 0x00000040, 0x00400000, 0x00001000, 0x00401040
+};
+
+const UINT32 naomi_gdrom_board::DES_SBOX5[] = {
+ 0x00000080, 0x01040080, 0x01040000, 0x21000080, 0x00040000, 0x00000080, 0x20000000, 0x01040000,
+ 0x20040080, 0x00040000, 0x01000080, 0x20040080, 0x21000080, 0x21040000, 0x00040080, 0x20000000,
+ 0x01000000, 0x20040000, 0x20040000, 0x00000000, 0x20000080, 0x21040080, 0x21040080, 0x01000080,
+ 0x21040000, 0x20000080, 0x00000000, 0x21000000, 0x01040080, 0x01000000, 0x21000000, 0x00040080,
+ 0x00040000, 0x21000080, 0x00000080, 0x01000000, 0x20000000, 0x01040000, 0x21000080, 0x20040080,
+ 0x01000080, 0x20000000, 0x21040000, 0x01040080, 0x20040080, 0x00000080, 0x01000000, 0x21040000,
+ 0x21040080, 0x00040080, 0x21000000, 0x21040080, 0x01040000, 0x00000000, 0x20040000, 0x21000000,
+ 0x00040080, 0x01000080, 0x20000080, 0x00040000, 0x00000000, 0x20040000, 0x01040080, 0x20000080
+};
+
+const UINT32 naomi_gdrom_board::DES_SBOX6[] = {
+ 0x10000008, 0x10200000, 0x00002000, 0x10202008, 0x10200000, 0x00000008, 0x10202008, 0x00200000,
+ 0x10002000, 0x00202008, 0x00200000, 0x10000008, 0x00200008, 0x10002000, 0x10000000, 0x00002008,
+ 0x00000000, 0x00200008, 0x10002008, 0x00002000, 0x00202000, 0x10002008, 0x00000008, 0x10200008,
+ 0x10200008, 0x00000000, 0x00202008, 0x10202000, 0x00002008, 0x00202000, 0x10202000, 0x10000000,
+ 0x10002000, 0x00000008, 0x10200008, 0x00202000, 0x10202008, 0x00200000, 0x00002008, 0x10000008,
+ 0x00200000, 0x10002000, 0x10000000, 0x00002008, 0x10000008, 0x10202008, 0x00202000, 0x10200000,
+ 0x00202008, 0x10202000, 0x00000000, 0x10200008, 0x00000008, 0x00002000, 0x10200000, 0x00202008,
+ 0x00002000, 0x00200008, 0x10002008, 0x00000000, 0x10202000, 0x10000000, 0x00200008, 0x10002008
+};
+
+const UINT32 naomi_gdrom_board::DES_SBOX7[] = {
+ 0x00100000, 0x02100001, 0x02000401, 0x00000000, 0x00000400, 0x02000401, 0x00100401, 0x02100400,
+ 0x02100401, 0x00100000, 0x00000000, 0x02000001, 0x00000001, 0x02000000, 0x02100001, 0x00000401,
+ 0x02000400, 0x00100401, 0x00100001, 0x02000400, 0x02000001, 0x02100000, 0x02100400, 0x00100001,
+ 0x02100000, 0x00000400, 0x00000401, 0x02100401, 0x00100400, 0x00000001, 0x02000000, 0x00100400,
+ 0x02000000, 0x00100400, 0x00100000, 0x02000401, 0x02000401, 0x02100001, 0x02100001, 0x00000001,
+ 0x00100001, 0x02000000, 0x02000400, 0x00100000, 0x02100400, 0x00000401, 0x00100401, 0x02100400,
+ 0x00000401, 0x02000001, 0x02100401, 0x02100000, 0x00100400, 0x00000000, 0x00000001, 0x02100401,
+ 0x00000000, 0x00100401, 0x02100000, 0x00000400, 0x02000001, 0x02000400, 0x00000400, 0x00100001
+};
+
+const UINT32 naomi_gdrom_board::DES_SBOX8[] = {
+ 0x08000820, 0x00000800, 0x00020000, 0x08020820, 0x08000000, 0x08000820, 0x00000020, 0x08000000,
+ 0x00020020, 0x08020000, 0x08020820, 0x00020800, 0x08020800, 0x00020820, 0x00000800, 0x00000020,
+ 0x08020000, 0x08000020, 0x08000800, 0x00000820, 0x00020800, 0x00020020, 0x08020020, 0x08020800,
+ 0x00000820, 0x00000000, 0x00000000, 0x08020020, 0x08000020, 0x08000800, 0x00020820, 0x00020000,
+ 0x00020820, 0x00020000, 0x08020800, 0x00000800, 0x00000020, 0x08020020, 0x00000800, 0x00020820,
+ 0x08000800, 0x00000020, 0x08000020, 0x08020000, 0x08020020, 0x08000000, 0x00020000, 0x08000820,
+ 0x00000000, 0x08020820, 0x00020020, 0x08000020, 0x08020000, 0x08000800, 0x08000820, 0x00000000,
+ 0x08020820, 0x00020800, 0x00020800, 0x00000820, 0x00000820, 0x00020020, 0x08000000, 0x08020800
+};
+
+const UINT32 naomi_gdrom_board::DES_MASK_TABLE[] = {
+ 0x24000000, 0x10000000, 0x08000000, 0x02080000, 0x01000000,
+ 0x00200000, 0x00100000, 0x00040000, 0x00020000, 0x00010000,
+ 0x00002000, 0x00001000, 0x00000800, 0x00000400, 0x00000200,
+ 0x00000100, 0x00000020, 0x00000010, 0x00000008, 0x00000004,
+ 0x00000002, 0x00000001, 0x20000000, 0x10000000, 0x08000000,
+ 0x04000000, 0x02000000, 0x01000000, 0x00200000, 0x00100000,
+ 0x00080000, 0x00040000, 0x00020000, 0x00010000, 0x00002000,
+ 0x00001000, 0x00000808, 0x00000400, 0x00000200, 0x00000100,
+ 0x00000020, 0x00000011, 0x00000004, 0x00000002
+};
+
+const UINT8 naomi_gdrom_board::DES_ROTATE_TABLE[16] = {
+ 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
+};
+
+void naomi_gdrom_board::permutate(UINT32 &a, UINT32 &b, UINT32 m, int shift)
+{
+ UINT32 temp;
+ temp = ((a>>shift) ^ b) & m;
+ a ^= temp<<shift;
+ b ^= temp;
+}
+
+void naomi_gdrom_board::des_generate_subkeys(const UINT64 key, UINT32 *subkeys)
+{
+ UINT32 l = key >> 32;
+ UINT32 r = key;
+
+ permutate(r, l, 0x0f0f0f0f, 4);
+ permutate(r, l, 0x10101010, 0);
+
+ l = (DES_LEFTSWAP[(l >> 0) & 0xf] << 3) |
+ (DES_LEFTSWAP[(l >> 8) & 0xf] << 2) |
+ (DES_LEFTSWAP[(l >> 16) & 0xf] << 1) |
+ (DES_LEFTSWAP[(l >> 24) & 0xf] << 0) |
+ (DES_LEFTSWAP[(l >> 5) & 0xf] << 7) |
+ (DES_LEFTSWAP[(l >> 13) & 0xf] << 6) |
+ (DES_LEFTSWAP[(l >> 21) & 0xf] << 5) |
+ (DES_LEFTSWAP[(l >> 29) & 0xf] << 4);
+
+ r = (DES_RIGHTSWAP[(r >> 1) & 0xf] << 3) |
+ (DES_RIGHTSWAP[(r >> 9) & 0xf] << 2) |
+ (DES_RIGHTSWAP[(r >> 17) & 0xf] << 1) |
+ (DES_RIGHTSWAP[(r >> 25) & 0xf] << 0) |
+ (DES_RIGHTSWAP[(r >> 4) & 0xf] << 7) |
+ (DES_RIGHTSWAP[(r >> 12) & 0xf] << 6) |
+ (DES_RIGHTSWAP[(r >> 20) & 0xf] << 5) |
+ (DES_RIGHTSWAP[(r >> 28) & 0xf] << 4);
+
+ l &= 0x0fffffff;
+ r &= 0x0fffffff;
+
+
+ for(int round = 0; round < 16; round++) {
+ l = ((l << DES_ROTATE_TABLE[round]) | (l >> (28 - DES_ROTATE_TABLE[round]))) & 0x0fffffff;
+ r = ((r << DES_ROTATE_TABLE[round]) | (r >> (28 - DES_ROTATE_TABLE[round]))) & 0x0fffffff;
+
+ subkeys[round*2] =
+ ((l << 4) & DES_MASK_TABLE[0]) |
+ ((l << 28) & DES_MASK_TABLE[1]) |
+ ((l << 14) & DES_MASK_TABLE[2]) |
+ ((l << 18) & DES_MASK_TABLE[3]) |
+ ((l << 6) & DES_MASK_TABLE[4]) |
+ ((l << 9) & DES_MASK_TABLE[5]) |
+ ((l >> 1) & DES_MASK_TABLE[6]) |
+ ((l << 10) & DES_MASK_TABLE[7]) |
+ ((l << 2) & DES_MASK_TABLE[8]) |
+ ((l >> 10) & DES_MASK_TABLE[9]) |
+ ((r >> 13) & DES_MASK_TABLE[10])|
+ ((r >> 4) & DES_MASK_TABLE[11])|
+ ((r << 6) & DES_MASK_TABLE[12])|
+ ((r >> 1) & DES_MASK_TABLE[13])|
+ ((r >> 14) & DES_MASK_TABLE[14])|
+ ((r >> 0) & DES_MASK_TABLE[15])|
+ ((r >> 5) & DES_MASK_TABLE[16])|
+ ((r >> 10) & DES_MASK_TABLE[17])|
+ ((r >> 3) & DES_MASK_TABLE[18])|
+ ((r >> 18) & DES_MASK_TABLE[19])|
+ ((r >> 26) & DES_MASK_TABLE[20])|
+ ((r >> 24) & DES_MASK_TABLE[21]);
+
+ subkeys[round*2+1] =
+ ((l << 15) & DES_MASK_TABLE[22])|
+ ((l << 17) & DES_MASK_TABLE[23])|
+ ((l << 10) & DES_MASK_TABLE[24])|
+ ((l << 22) & DES_MASK_TABLE[25])|
+ ((l >> 2) & DES_MASK_TABLE[26])|
+ ((l << 1) & DES_MASK_TABLE[27])|
+ ((l << 16) & DES_MASK_TABLE[28])|
+ ((l << 11) & DES_MASK_TABLE[29])|
+ ((l << 3) & DES_MASK_TABLE[30])|
+ ((l >> 6) & DES_MASK_TABLE[31])|
+ ((l << 15) & DES_MASK_TABLE[32])|
+ ((l >> 4) & DES_MASK_TABLE[33])|
+ ((r >> 2) & DES_MASK_TABLE[34])|
+ ((r << 8) & DES_MASK_TABLE[35])|
+ ((r >> 14) & DES_MASK_TABLE[36])|
+ ((r >> 9) & DES_MASK_TABLE[37])|
+ ((r >> 0) & DES_MASK_TABLE[38])|
+ ((r << 7) & DES_MASK_TABLE[39])|
+ ((r >> 7) & DES_MASK_TABLE[40])|
+ ((r >> 3) & DES_MASK_TABLE[41])|
+ ((r << 2) & DES_MASK_TABLE[42])|
+ ((r >> 21) & DES_MASK_TABLE[43]);
+ }
+}
+
+UINT64 naomi_gdrom_board::des_encrypt_decrypt(bool decrypt, UINT64 src, const UINT32 *des_subkeys)
+{
+ UINT32 r = (src & 0x00000000ffffffffULL) >> 0;
+ UINT32 l = (src & 0xffffffff00000000ULL) >> 32;
+
+ permutate(l, r, 0x0f0f0f0f, 4);
+ permutate(l, r, 0x0000ffff, 16);
+ permutate(r, l, 0x33333333, 2);
+ permutate(r, l, 0x00ff00ff, 8);
+ permutate(l, r, 0x55555555, 1);
+
+ int subkey;
+ if(decrypt)
+ subkey = 30;
+ else
+ subkey = 0;
+
+ for(int i = 0; i < 32 ; i+=4) {
+ UINT32 temp;
+
+ temp = ((r<<1) | (r>>31)) ^ des_subkeys[subkey];
+ l ^= DES_SBOX8[ (temp>>0) & 0x3f ];
+ l ^= DES_SBOX6[ (temp>>8) & 0x3f ];
+ l ^= DES_SBOX4[ (temp>>16) & 0x3f ];
+ l ^= DES_SBOX2[ (temp>>24) & 0x3f ];
+ subkey++;
+
+ temp = ((r>>3) | (r<<29)) ^ des_subkeys[subkey];
+ l ^= DES_SBOX7[ (temp>>0) & 0x3f ];
+ l ^= DES_SBOX5[ (temp>>8) & 0x3f ];
+ l ^= DES_SBOX3[ (temp>>16) & 0x3f ];
+ l ^= DES_SBOX1[ (temp>>24) & 0x3f ];
+ subkey++;
+ if(decrypt)
+ subkey -= 4;
+
+ temp = ((l<<1) | (l>>31)) ^ des_subkeys[subkey];
+ r ^= DES_SBOX8[ (temp>>0) & 0x3f ];
+ r ^= DES_SBOX6[ (temp>>8) & 0x3f ];
+ r ^= DES_SBOX4[ (temp>>16) & 0x3f ];
+ r ^= DES_SBOX2[ (temp>>24) & 0x3f ];
+ subkey++;
+
+ temp = ((l>>3) | (l<<29)) ^ des_subkeys[subkey];
+ r ^= DES_SBOX7[ (temp>>0) & 0x3f ];
+ r ^= DES_SBOX5[ (temp>>8) & 0x3f ];
+ r ^= DES_SBOX3[ (temp>>16) & 0x3f ];
+ r ^= DES_SBOX1[ (temp>>24) & 0x3f ];
+ subkey++;
+ if(decrypt)
+ subkey -= 4;
+ }
+
+ permutate(r, l, 0x55555555, 1);
+ permutate(l, r, 0x00ff00ff, 8);
+ permutate(l, r, 0x33333333, 2);
+ permutate(r, l, 0x0000ffff, 16);
+ permutate(r, l, 0x0f0f0f0f, 4);
+
+ return (UINT64(r) << 32) | UINT64(l);
+}
+
+UINT64 naomi_gdrom_board::rev64(UINT64 src)
+{
+ UINT64 ret;
+
+ ret = ((src & 0x00000000000000ffULL) << 56)
+ | ((src & 0x000000000000ff00ULL) << 40)
+ | ((src & 0x0000000000ff0000ULL) << 24)
+ | ((src & 0x00000000ff000000ULL) << 8 )
+ | ((src & 0x000000ff00000000ULL) >> 8 )
+ | ((src & 0x0000ff0000000000ULL) >> 24)
+ | ((src & 0x00ff000000000000ULL) >> 40)
+ | ((src & 0xff00000000000000ULL) >> 56);
+
+ return ret;
+}
+
+UINT64 naomi_gdrom_board::read_to_qword(const UINT8 *region)
+{
+ UINT64 ret = 0;
+
+ for(int i=0;i<8;i++)
+ ret |= UINT64(region[i]) << (56-(8*i));
+
+ return ret;
+}
+
+void naomi_gdrom_board::write_from_qword(UINT8 *region, UINT64 qword)
+{
+ for(int i=0;i<8;i++)
+ region[i] = qword >> (56-(i*8));
+}
+
+naomi_gdrom_board::naomi_gdrom_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : naomi_board(mconfig, NAOMI_GDROM_BOARD, "NAOMI-GDROM-BOARD", tag, owner, clock)
+{
+ image_tag = 0;
+ pic_tag = 0;
+}
+
+void naomi_gdrom_board::static_set_tags(device_t &device, const char *_image_tag, const char *_pic_tag)
+{
+ naomi_gdrom_board &dev = downcast<naomi_gdrom_board &>(device);
+ dev.image_tag = _image_tag;
+ dev.pic_tag = _pic_tag;
+}
+
+void naomi_gdrom_board::find_file(const char *name, const UINT8 *dir_sector, UINT32 &file_start, UINT32 &file_size)
+{
+ file_start = 0;
+ file_size = 0;
+ logerror("Looking for file %s\n", name);
+ for(UINT32 pos = 0; pos < 2048; pos += dir_sector[pos]) {
+ int fnlen = 0;
+ if(!(dir_sector[pos+25] & 2)) {
+ int len = dir_sector[pos+32];
+ for(fnlen=0; fnlen < FILENAME_LENGTH; fnlen++) {
+ if((dir_sector[pos+33+fnlen] == ';') && (name[fnlen] == 0)) {
+ fnlen = FILENAME_LENGTH+1;
+ break;
+ }
+ if(dir_sector[pos+33+fnlen] != name[fnlen])
+ break;
+ if(fnlen == len) {
+ if(name[fnlen] == 0)
+ fnlen = FILENAME_LENGTH+1;
+ else
+ fnlen = FILENAME_LENGTH;
+ }
+ }
+ }
+ if(fnlen == FILENAME_LENGTH+1) {
+ // start sector and size of file
+ file_start = ((dir_sector[pos+2] << 0) |
+ (dir_sector[pos+3] << 8) |
+ (dir_sector[pos+4] << 16) |
+ (dir_sector[pos+5] << 24));
+ file_size = ((dir_sector[pos+10] << 0) |
+ (dir_sector[pos+11] << 8) |
+ (dir_sector[pos+12] << 16) |
+ (dir_sector[pos+13] << 24));
+
+ logerror("start %08x size %08x\n", file_start, file_size);
+ break;
+ }
+ if (dir_sector[pos] == 0)
+ break;
+ }
+}
+
+void naomi_gdrom_board::device_start()
+{
+ naomi_board::device_start();
+
+ dimm_data = 0;
+ dimm_data_size = 0;
+
+ char name[128];
+ memset(name,'\0',128);
+
+ UINT64 key;
+
+ const UINT8 *picdata = machine().region(pic_tag)->base();
+
+ if(machine().region(pic_tag)->bytes() == 0x4000) {
+ //printf("Real PIC binary found\n");
+ for(int i=0;i<7;i++)
+ name[i] = picdata[0x7c0+i*2];
+ for(int i=0;i<7;i++)
+ name[i+7] = picdata[0x7e0+i*2];
+
+ key = 0;
+ for(int i=0;i<7;i++)
+ key |= UINT64(picdata[0x780+i*2]) << (56 - i*8);
+
+ key |= picdata[0x7a0];
+
+ } else {
+ // use extracted pic data
+ logerror("This PIC key hasn't been converted to a proper PIC binary yet!\n");
+ memcpy(name, picdata+33, 7);
+ memcpy(name+7, picdata+25, 7);
+
+ key =((UINT64(picdata[0x31]) << 56) |
+ (UINT64(picdata[0x32]) << 48) |
+ (UINT64(picdata[0x33]) << 40) |
+ (UINT64(picdata[0x34]) << 32) |
+ (UINT64(picdata[0x35]) << 24) |
+ (UINT64(picdata[0x36]) << 16) |
+ (UINT64(picdata[0x37]) << 8) |
+ (UINT64(picdata[0x29]) << 0));
+ }
+
+ logerror("key is %08x%08x\n", (UINT32)((key & 0xffffffff00000000ULL)>>32), (UINT32)(key & 0x00000000ffffffffULL));
+
+ UINT8 buffer[2048];
+ cdrom_file *gdromfile = cdrom_open(get_disk_handle(machine(), image_tag));
+ // primary volume descriptor
+ // read frame 0xb06e (frame=sector+150)
+ // dimm board firmware starts straight from this frame
+ cdrom_read_data(gdromfile, 0xb06e - 150, buffer, CD_TRACK_MODE1);
+ UINT32 path_table = ((buffer[0x8c+0] << 0) |
+ (buffer[0x8c+1] << 8) |
+ (buffer[0x8c+2] << 16) |
+ (buffer[0x8c+3] << 24));
+ // path table
+ cdrom_read_data(gdromfile, path_table, buffer, CD_TRACK_MODE1);
+ UINT32 dir = ((buffer[0x2+0] << 0) |
+ (buffer[0x2+1] << 8) |
+ (buffer[0x2+2] << 16) |
+ (buffer[0x2+3] << 24));
+
+ // directory
+ UINT8 dir_sector[2048];
+ cdrom_read_data(gdromfile, dir, dir_sector, CD_TRACK_MODE1);
+ // find data of file
+ UINT32 file_start, file_size;
+ find_file(name, dir_sector, file_start, file_size);
+
+ if(file_start && (file_size == 0x100)) {
+ // read file
+ cdrom_read_data(gdromfile, file_start, buffer, CD_TRACK_MODE1);
+ // get "rom" file name
+ memset(name,'\0', 128);
+ memcpy(name, buffer+0xc0, FILENAME_LENGTH-1);
+
+ find_file(name, dir_sector, file_start, file_size);
+
+ if(file_start) {
+ UINT32 file_rounded_size = (file_size+2047) & -2048;
+ for(dimm_data_size = 4096; dimm_data_size < file_rounded_size; dimm_data_size <<= 1);
+ dimm_data = auto_alloc_array(machine(), UINT8, dimm_data_size);
+ if(dimm_data_size != file_rounded_size)
+ memset(dimm_data + file_rounded_size, 0, dimm_data_size - file_rounded_size);
+
+ // read encrypted data into dimm_data
+ UINT32 sectors = file_rounded_size / 2048;
+ for(UINT32 sec = 0; sec != sectors; sec++)
+ cdrom_read_data(gdromfile, file_start+sec, dimm_data + 2048*sec, CD_TRACK_MODE1);
+
+ UINT32 des_subkeys[32];
+ des_generate_subkeys(rev64(key), des_subkeys);
+
+ for(int i=0; i<file_rounded_size;i+=8)
+ write_from_qword(dimm_data+i, rev64(des_encrypt_decrypt(true, rev64(read_to_qword(dimm_data+i)), des_subkeys)));
+ }
+ }
+
+ // decrypt loaded data
+ cdrom_close(gdromfile);
+
+ if(!dimm_data)
+ throw emu_fatalerror("GDROM: Could not find the file to decrypt.");
+
+ save_item(NAME(dimm_cur_address));
+}
+
+void naomi_gdrom_board::device_reset()
+{
+ naomi_board::device_reset();
+
+ dimm_cur_address = 0;
+}
+
+void naomi_gdrom_board::board_setup_address(UINT32 address, bool is_dma)
+{
+ dimm_cur_address = address & (dimm_data_size-1);
+}
+
+void naomi_gdrom_board::board_get_buffer(UINT8 *&base, UINT32 &limit)
+{
+ base = dimm_data + dimm_cur_address;
+ limit = dimm_data_size - dimm_cur_address;
+}
+
+void naomi_gdrom_board::board_advance(UINT32 size)
+{
+ dimm_cur_address += size;
+ if(dimm_cur_address >= dimm_data_size)
+ dimm_cur_address %= dimm_data_size;
+}
diff --git a/src/mame/machine/naomigd.h b/src/mame/machine/naomigd.h
index e69de29bb2d..e7ca6133c5d 100644
--- a/src/mame/machine/naomigd.h
+++ b/src/mame/machine/naomigd.h
@@ -0,0 +1,61 @@
+#ifndef _NAOMIGD_H_
+#define _NAOMIGD_H_
+
+#include "naomibd.h"
+
+#define MCFG_NAOMI_GDROM_BOARD_ADD(_tag, _image_tag, _pic_tag, _eeprom_tag, _maincpu_tag, _irq_cb) \
+ MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_GDROM_BOARD, _eeprom_tag, _maincpu_tag, _irq_cb) \
+ naomi_gdrom_board::static_set_tags(*device, _image_tag, _pic_tag);
+
+class naomi_gdrom_board : public naomi_board
+{
+public:
+ naomi_gdrom_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ static void static_set_tags(device_t &device, const char *_image_tag, const char *_pic_tag);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+ virtual void board_setup_address(UINT32 address, bool is_dma);
+ virtual void board_get_buffer(UINT8 *&base, UINT32 &limit);
+ virtual void board_advance(UINT32 size);
+
+private:
+ enum { FILENAME_LENGTH=24 };
+
+ const char *image_tag, *pic_tag;
+
+ UINT32 dimm_cur_address;
+
+ // Note: voluntarily not saved into the state
+ UINT8 *dimm_data;
+ UINT32 dimm_data_size;
+
+ static const UINT32 DES_LEFTSWAP[];
+ static const UINT32 DES_RIGHTSWAP[];
+ static const UINT32 DES_SBOX1[];
+ static const UINT32 DES_SBOX2[];
+ static const UINT32 DES_SBOX3[];
+ static const UINT32 DES_SBOX4[];
+ static const UINT32 DES_SBOX5[];
+ static const UINT32 DES_SBOX6[];
+ static const UINT32 DES_SBOX7[];
+ static const UINT32 DES_SBOX8[];
+ static const UINT32 DES_MASK_TABLE[];
+ static const UINT8 DES_ROTATE_TABLE[16];
+
+ void find_file(const char *name, const UINT8 *dir_sector, UINT32 &file_start, UINT32 &file_size);
+
+ inline void permutate(UINT32 &a, UINT32 &b, UINT32 m, int shift);
+ void des_generate_subkeys(const UINT64 key, UINT32 *subkeys);
+ UINT64 des_encrypt_decrypt(bool decrypt, UINT64 src, const UINT32 *des_subkeys);
+ UINT64 rev64(UINT64 src);
+ UINT64 read_to_qword(const UINT8 *region);
+ void write_from_qword(UINT8 *region, UINT64 qword);
+};
+
+extern const device_type NAOMI_GDROM_BOARD;
+
+#endif
diff --git a/src/mame/machine/naomim1.c b/src/mame/machine/naomim1.c
index e69de29bb2d..4551f92b095 100644
--- a/src/mame/machine/naomim1.c
+++ b/src/mame/machine/naomim1.c
@@ -0,0 +1,223 @@
+#define ADDRESS_MAP_MODERN
+
+#include "emu.h"
+#include "naomim1.h"
+
+const device_type NAOMI_M1_BOARD = &device_creator<naomi_m1_board>;
+
+DEVICE_ADDRESS_MAP_START(submap, 16, naomi_m1_board)
+ AM_RANGE(0x0a, 0x0b) AM_READ(actel_id_r)
+
+ AM_INHERIT_FROM(naomi_board::submap)
+ADDRESS_MAP_END
+
+naomi_m1_board::naomi_m1_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : naomi_board(mconfig, NAOMI_M1_BOARD, "NAOMI-M1-BOARD", tag, owner, clock)
+{
+ key_tag = 0;
+}
+
+void naomi_m1_board::static_set_tags(device_t &device, const char *_key_tag)
+{
+ naomi_m1_board &dev = downcast<naomi_m1_board &>(device);
+ dev.key_tag = _key_tag;
+}
+
+READ16_MEMBER(naomi_m1_board::actel_id_r)
+{
+ return 0x0000;
+}
+
+void naomi_m1_board::device_start()
+{
+ naomi_board::device_start();
+
+ const UINT8 *key_data = machine().region(key_tag)->base();
+ key = (key_data[0] << 24) | (key_data[1] << 16) | (key_data[2] << 8) | key_data[3];
+ buffer = auto_alloc_array(machine(), UINT8, BUFFER_SIZE);
+
+ save_pointer(NAME(buffer), BUFFER_SIZE);
+ save_item(NAME(dict));
+ save_item(NAME(hist));
+ save_item(NAME(rom_cur_address));
+ save_item(NAME(buffer_actual_size));
+ save_item(NAME(avail_bits));
+ save_item(NAME(encryption));
+ save_item(NAME(stream_ended));
+ save_item(NAME(has_history));
+}
+
+void naomi_m1_board::device_reset()
+{
+ naomi_board::device_reset();
+ encryption = false;
+ rom_cur_address = 0;
+ buffer_actual_size = 0;
+ has_history = false;
+ stream_ended = false;
+
+ memset(dict, 0, sizeof(dict));
+ memset(hist, 0, sizeof(hist));
+
+ avail_val = 0;
+ avail_bits = 0;
+}
+
+void naomi_m1_board::board_setup_address(UINT32 address, bool is_dma)
+{
+ rom_cur_address = address & 0x1fffffff;
+ encryption = (!(address & 0x20000000)) && is_dma;
+
+ if(encryption) {
+ enc_reset();
+ enc_fill();
+ }
+}
+
+void naomi_m1_board::board_get_buffer(UINT8 *&base, UINT32 &limit)
+{
+ if(encryption) {
+ base = buffer;
+ limit = BUFFER_SIZE;
+
+ } else {
+ base = m_region->base() + rom_cur_address;
+ limit = m_region->bytes() - rom_cur_address;
+ }
+}
+
+void naomi_m1_board::board_advance(UINT32 size)
+{
+ if(encryption) {
+ if(size < buffer_actual_size) {
+ memmove(buffer, buffer + size, buffer_actual_size - size);
+ buffer_actual_size -= size;
+ } else {
+ hist[0] = buffer[buffer_actual_size-2];
+ hist[1] = buffer[buffer_actual_size-1];
+ has_history = true;
+ buffer_actual_size = 0;
+ }
+ enc_fill();
+
+ } else
+ rom_cur_address += size;
+}
+
+UINT32 naomi_m1_board::get_decrypted_32b()
+{
+ UINT8 *base = m_region->base() + rom_cur_address;
+ UINT8 a = base[0];
+ UINT8 b = base[1];
+ UINT8 c = base[2];
+ UINT8 d = base[3];
+
+ rom_cur_address += 4;
+
+ UINT32 res = key ^ (((b^d) << 24) | ((a^c) << 16) | (b << 8) | a);
+ return res;
+}
+
+void naomi_m1_board::gb_reset()
+{
+ avail_val = 0;
+ avail_bits = 0;
+}
+
+inline UINT32 naomi_m1_board::lookb(int bits)
+{
+ if(bits > avail_bits) {
+ avail_val = (avail_val << 32) | get_decrypted_32b();
+ avail_bits += 32;
+ }
+ return (avail_val >> (avail_bits - bits)) & ((1 << bits)-1);
+}
+
+inline void naomi_m1_board::skipb(int bits)
+{
+ avail_bits -= bits;
+}
+
+inline UINT32 naomi_m1_board::getb(int bits)
+{
+ UINT32 res = lookb(bits);
+ skipb(bits);
+ return res;
+}
+
+void naomi_m1_board::enc_reset()
+{
+ gb_reset();
+ stream_ended = false;
+ has_history = false;
+ buffer_actual_size = 0;
+
+ for(int i=0; i<111; i++)
+ dict[i] = getb(8);
+}
+
+void naomi_m1_board::wb(UINT8 byte)
+{
+ if(dict[0] & 64)
+ if(buffer_actual_size < 2)
+ if(has_history)
+ buffer[buffer_actual_size] = hist[buffer_actual_size] - byte;
+ else
+ buffer[buffer_actual_size] = byte;
+ else
+ buffer[buffer_actual_size] = buffer[buffer_actual_size-2] - byte;
+ else
+ buffer[buffer_actual_size] = byte;
+
+ buffer_actual_size++;
+}
+
+void naomi_m1_board::enc_fill()
+{
+ while(buffer_actual_size < BUFFER_SIZE && !stream_ended) {
+ switch(lookb(3)) {
+ // 00+2 - 0000+esc
+ case 0: case 1: {
+ skipb(2);
+ int addr = getb(2);
+ if(addr)
+ wb(dict[addr]);
+ else
+ wb(getb(8));
+ break;
+ }
+
+ // 010+2
+ case 2:
+ skipb(3);
+ wb(dict[getb(2)+4]);
+ break;
+
+ // 011+3
+ case 3:
+ skipb(3);
+ wb(dict[getb(3)+8]);
+ break;
+
+ // 10+5
+ case 4: case 5:
+ skipb(2);
+ wb(dict[getb(5)+16]);
+ break;
+
+ // 11+6
+ case 6: case 7: {
+ skipb(2);
+ int addr = getb(6)+48;
+ if(addr == 111)
+ stream_ended = true;
+ else
+ wb(dict[addr]);
+ break;
+ }
+ }
+ }
+
+ while(buffer_actual_size < BUFFER_SIZE)
+ buffer[buffer_actual_size++] = 0;
+}
diff --git a/src/mame/machine/naomim1.h b/src/mame/machine/naomim1.h
index e69de29bb2d..36adf7e3d05 100644
--- a/src/mame/machine/naomim1.h
+++ b/src/mame/machine/naomim1.h
@@ -0,0 +1,56 @@
+#ifndef _NAOMIM1_H_
+#define _NAOMIM1_H_
+
+#include "naomibd.h"
+
+#define MCFG_NAOMI_M1_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _maincpu_tag, _irq_cb) \
+ MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M1_BOARD, _eeprom_tag, _maincpu_tag, _irq_cb) \
+ naomi_m1_board::static_set_tags(*device, _key_tag);
+
+class naomi_m1_board : public naomi_board
+{
+public:
+ naomi_m1_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ static void static_set_tags(device_t &device, const char *_key_tag);
+
+ virtual DECLARE_ADDRESS_MAP(submap, 16);
+
+ DECLARE_READ16_MEMBER(actel_id_r);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+ virtual void board_setup_address(UINT32 address, bool is_dma);
+ virtual void board_get_buffer(UINT8 *&base, UINT32 &limit);
+ virtual void board_advance(UINT32 size);
+
+private:
+ enum { BUFFER_SIZE = 32768 };
+
+ const char *key_tag;
+ UINT32 key;
+
+ UINT8 *buffer;
+ UINT8 dict[111], hist[2];
+ UINT64 avail_val;
+ UINT32 rom_cur_address, buffer_actual_size, avail_bits;
+ bool encryption, stream_ended, has_history;
+
+ void gb_reset();
+ UINT32 lookb(int bits);
+ void skipb(int bits);
+ UINT32 getb(int bits);
+
+ void enc_reset();
+ void enc_fill();
+
+ UINT32 get_decrypted_32b();
+
+ void wb(UINT8 byte);
+};
+
+extern const device_type NAOMI_M1_BOARD;
+
+#endif
diff --git a/src/mame/machine/naomim2.c b/src/mame/machine/naomim2.c
index e69de29bb2d..cba2b742704 100644
--- a/src/mame/machine/naomim2.c
+++ b/src/mame/machine/naomim2.c
@@ -0,0 +1,839 @@
+#define ADDRESS_MAP_MODERN
+
+#include "emu.h"
+#include "naomim2.h"
+
+const device_type NAOMI_M2_BOARD = &device_creator<naomi_m2_board>;
+
+naomi_m2_board::naomi_m2_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : naomi_board(mconfig, NAOMI_M2_BOARD, "NAOMI-M2-BOARD", tag, owner, clock)
+{
+ key_tag = 0;
+}
+
+void naomi_m2_board::static_set_tags(device_t &device, const char *_key_tag)
+{
+ naomi_m2_board &dev = downcast<naomi_m2_board &>(device);
+ dev.key_tag = _key_tag;
+}
+
+void naomi_m2_board::device_start()
+{
+ naomi_board::device_start();
+
+ const UINT8 *key_data = machine().region(key_tag)->base();
+ key = (key_data[0] << 24) | (key_data[1] << 16) | (key_data[2] << 8) | key_data[3];
+
+ ram = auto_alloc_array(machine(), UINT8, RAM_SIZE);
+ buffer = auto_alloc_array(machine(), UINT8, BUFFER_SIZE);
+ line_buffer = auto_alloc_array(machine(), UINT8, LINE_SIZE);
+ line_buffer_prev = auto_alloc_array(machine(), UINT8, LINE_SIZE);
+
+ save_pointer(NAME(ram), RAM_SIZE);
+ save_pointer(NAME(buffer), BUFFER_SIZE);
+ save_pointer(NAME(line_buffer), LINE_SIZE);
+ save_pointer(NAME(line_buffer_prev), LINE_SIZE);
+ save_item(NAME(rom_cur_address));
+ save_item(NAME(prot_cur_address));
+ save_item(NAME(subkey));
+ save_item(NAME(enc_ready));
+ save_item(NAME(dec_hist));
+ save_item(NAME(dec_header));
+ save_item(NAME(buffer_pos));
+ save_item(NAME(line_buffer_pos));
+ save_item(NAME(line_buffer_size));
+}
+
+void naomi_m2_board::device_reset()
+{
+ naomi_board::device_reset();
+
+ memset(ram, 0, RAM_SIZE);
+ memset(buffer, 0, BUFFER_SIZE);
+ memset(line_buffer, 0, LINE_SIZE);
+ memset(line_buffer_prev, 0, LINE_SIZE);
+
+ rom_cur_address = 0;
+ prot_cur_address = 0;
+ subkey = 0;
+ dec_hist = 0;
+ dec_header = 0;
+ enc_ready = false;
+
+ buffer_pos = 0;
+ line_buffer_pos = 0;
+ line_buffer_size = 0;
+ buffer_bit = 0;
+}
+
+void naomi_m2_board::board_setup_address(UINT32 address, bool is_dma)
+{
+ rom_cur_address = address;
+}
+
+void naomi_m2_board::board_get_buffer(UINT8 *&base, UINT32 &limit)
+{
+ if(rom_cur_address & 0x40000000) {
+
+ if(rom_cur_address == 0x4001fffe) {
+ if(!enc_ready)
+ enc_start();
+ if(dec_header & FLAG_COMPRESSED) {
+ if(line_buffer_pos == line_buffer_size)
+ line_fill();
+ base = line_buffer + line_buffer_pos;
+ line_buffer_pos += 2;
+ } else {
+ if(buffer_pos == BUFFER_SIZE)
+ enc_fill();
+ base = buffer + buffer_pos;
+ buffer_pos += 2;
+ }
+ limit = 2;
+
+ } else
+ throw emu_fatalerror("NAOMIM2: Unsupported, read from %08x", rom_cur_address);
+
+ } else {
+ base = m_region->base() + (rom_cur_address & 0x1fffffff);
+ limit = m_region->bytes() - (rom_cur_address & 0x1fffffff);
+ }
+}
+
+void naomi_m2_board::board_advance(UINT32 size)
+{
+ rom_cur_address += size;
+}
+
+void naomi_m2_board::board_write(offs_t offset, UINT16 data)
+{
+ if(offset & 0x40000000) {
+ if((offset & 0x0f000000) == 0x02000000) {
+ offset &= RAM_SIZE-1;
+ ram[offset] = data;
+ ram[offset+1] = data >> 8;
+ return;
+ }
+ switch(offset & 0x1fffffff) {
+ case 0x1fff8: prot_cur_address = (prot_cur_address & 0xffff0000) | data; enc_ready = false; return;
+ case 0x1fffa: prot_cur_address = (prot_cur_address & 0x0000ffff) | (data << 16); enc_ready = false; return;
+ case 0x1fffc: subkey = data; enc_ready = false; return;
+ }
+ }
+ throw emu_fatalerror("NAOMIM2: unhandled board write %08x, %04x\n", offset, data);
+}
+
+/***************************************************************************
+ DECRYPTION EMULATION
+
+By convention, we label the three known cart protection methods this way (using Deunan Knute's wording):
+M1: DMA read of protected ROM area
+M2: special read of ROM area which supplies decryption key first
+M3: normal read followed by write to cart's decryption buffer (up to 64kB), followed by M2 but from buffer area
+
+Notes below refer to M2 & M3.
+
+The encryption is done by a stream cipher operating in counter mode, which use a 16-bits internal block cipher.
+
+There are 2 "control bits" at the start of the decrypted stream which control the mode of operation: bit #1 set to 1 means
+that the decrypted stream needs to be decompressed after being decrypted. More on this later.
+
+The next 16-bits are part of the header (they don't belong to the plaintext), but his meaning is unclear. It has been
+conjectured that it could stablish when to "reset" the process and start processing a new stream (based on some tests
+on WWFROYAL, in which the decryption's output doesn't seem to be valid for more than some dozens of words), but some
+more testing would be needed for clarifying that.
+
+After those 18 heading bits, we find the proper plaintext. It must be noted that, due to the initial 2 special bits,
+the 16-bits words of the plaintext are shifted 2 bits respect to the word-boundaries of the output stream of the
+internal block-cipher. So, at a given step, the internal block cipher will output 16-bits, 14 of which will go to a
+given plaintext word, and the remaining 2 to the next plaintext word.
+
+The underlying block cipher consists of two 4-round Feistel Networks (FN): the first one takes the counter (16 bits),
+the game-key (>=26 bits) and the sequence-key (16 bits) and output a middle result (16 bits) which will act as another key
+for the second one. The second FN will take the encrypted word (16 bits), the game-key, the sequence-key and the result
+from the first FN and will output the decrypted word (16 bits).
+
+Each round of the Feistel Networks use four substitution sboxes, each having 6 inputs and 2 outputs. The input can be the
+XOR of at most two "sources bits", being source bits the bits from the previous round and the bits from the different keys.
+
+The underlying block cipher has the same structure than the one used by the CPS-2 (Capcom Play System 2) and,
+indeed, some of the used sboxes are exactly the same and appear in the same FN/round in both systems (this is not evident,
+as you need to apply a bitswapping and some XORs to the input & output of the sboxes to get the same values due). However,
+the key scheduling used by this implementation is much weaker than the CPS-2's one. Many s-boxes inputs are XORed with any
+key bit.
+
+Due to the small key-length, no sophisticated attacks are needed to recover the keys; a brute-force attack knowing just
+some (encrypted word-decrypted word) pairs suffice. However, due to the weak key scheduling, it should be noted that some
+related keys can produce the same output bytes for some (short) input sequences.
+
+The only difference in the decryption process between M2 and M3 is the initialization of the counter. In M3, the counter is
+always set to 0 at the beginning of the decryption while, in M2, the bits #1-#16 of the ciphertext's address are used
+to initialize the counter.
+
+Note that this implementation considers that the counter initialization for ram decryption is 0 simply because the ram is
+mapped to multiples of 128K.
+
+Due to the nature of the cipher, there are some degrees of freedom when choosing the s-boxes and keys values; by example,
+you could apply a fixed bitswapping and XOR to the keys and the decryption would remain the same as long as you change
+accordingly the s-boxes' definitions. So the order of the bits in the keys is arbitrary, and the s-boxes values have been
+chosen so as to make the key for CAPSNK equal to 0.
+
+It can be observed that a couple of sboxes have incomplete tables (a 255 value indicate an unknown value). The recovered keys
+as of december/2010 show small randomness and big correlations, making possible that some unseen bits could make the
+decryption need those incomplete parts.
+
+****************************************************************************************/
+
+const naomi_m2_board::sbox naomi_m2_board::fn1_sboxes[4][4] = {
+ { // 1st round
+ {
+ {
+ 0,3,2,2,1,3,1,2,3,2,1,2,1,2,3,1,3,2,2,0,2,1,3,0,0,3,2,3,2,1,2,0,
+ 2,3,1,1,2,2,1,1,1,0,2,3,3,0,2,1,1,1,1,1,3,0,3,2,1,0,1,2,0,3,1,3,
+ },
+ {3,4,5,7,-1,-1},
+ {0,4}
+ },
+
+ {
+ {
+ 2,2,2,0,3,3,0,1,2,2,3,2,3,0,2,2,1,1,0,3,3,2,0,2,0,1,0,1,2,3,1,1,
+ 0,1,3,3,1,3,3,1,2,3,2,0,0,0,2,2,0,3,1,3,0,3,2,2,0,3,0,3,1,1,0,2,
+ },
+ {0,1,2,5,6,7},
+ {1,6}
+ },
+
+ {
+ {
+ 0,1,3,0,3,1,1,1,1,2,3,1,3,0,2,3,3,2,0,2,1,1,2,1,1,3,1,0,0,2,0,1,
+ 1,3,1,0,0,3,2,3,2,0,3,3,0,0,0,0,1,2,3,3,2,0,3,2,1,0,0,0,2,2,3,3,
+ },
+ {0,2,5,6,7,-1},
+ {2,3}
+ },
+
+ {
+ {
+ 3,2,1,2,1,2,3,2,0,3,2,2,3,1,3,3,0,2,3,0,3,3,2,1,1,1,2,0,2,2,0,1,
+ 1,3,3,0,0,3,0,3,0,2,1,3,2,1,0,0,0,1,1,2,0,1,0,0,0,1,3,3,2,0,3,3,
+ },
+ {1,2,3,4,6,7},
+ {5,7}
+ },
+ },
+ { // 2nd round
+ {
+ {
+ 3,3,1,2,0,0,2,2,2,1,2,1,3,1,1,3,3,0,0,3,0,3,3,2,1,1,3,2,3,2,1,3,
+ 2,3,0,1,3,2,0,1,2,1,3,1,2,2,3,3,3,1,2,2,0,3,1,2,2,1,3,0,3,0,1,3,
+ },
+ {0,1,3,4,5,7},
+ {0,4}
+ },
+
+ {
+ {
+ 2,0,1,0,0,3,2,0,3,3,1,2,1,3,0,2,0,2,0,0,0,2,3,1,3,1,1,2,3,0,3,0,
+ 3,0,2,0,0,2,2,1,0,2,3,3,1,3,1,0,1,3,3,0,0,1,3,1,0,2,0,3,2,1,0,1,
+ },
+ {0,1,3,4,6,-1},
+ {1,5}
+ },
+
+ {
+ {
+ 2,2,2,3,1,1,0,1,0,1,2,2,3,3,0,2,0,3,2,3,3,0,2,1,0,3,1,0,0,2,3,2,
+ 3,2,0,3,2,0,1,0,3,3,1,1,2,2,2,0,2,1,3,1,1,1,1,2,2,2,3,0,1,3,0,0,
+ },
+ {1,2,5,6,7,-1},
+ {2,7}
+ },
+
+ {
+ {
+ 0,1,3,3,3,1,3,3,1,0,2,0,2,0,0,3,1,2,1,3,1,2,3,2,2,0,1,3,0,3,3,3,
+ 0,0,0,2,1,1,2,3,2,2,3,1,1,2,0,2,0,2,1,3,1,1,3,3,1,1,3,0,2,3,0,0,
+ },
+ {2,3,4,5,6,7},
+ {3,6}
+ },
+ },
+ { // 3rd round
+ {
+ {
+ 0,0,1,0,1,0,0,3,2,0,0,3,0,1,0,2,0,3,0,0,2,0,3,2,2,1,3,2,2,1,1,2,
+ 0,0,0,3,0,1,1,0,0,2,1,0,3,1,2,2,2,0,3,1,3,0,1,2,2,1,1,1,0,2,3,1,
+ },
+ {1,2,3,4,5,7},
+ {0,5}
+ },
+
+ {
+ {
+ 1,2,1,0,3,1,1,2,0,0,2,3,2,3,1,3,2,0,3,2,2,3,1,1,1,1,0,3,2,0,0,1,
+ 1,0,0,1,3,1,2,3,0,0,2,3,3,0,1,0,0,2,3,0,1,2,0,1,3,3,3,1,2,0,2,1,
+ },
+ {0,2,4,5,6,7},
+ {1,6}
+ },
+
+ {
+ {
+ 0,3,0,2,1,2,0,0,1,1,0,0,3,1,1,0,0,3,0,0,2,3,3,2,3,1,2,0,0,2,3,0,
+ // unused?
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ },
+ {0,2,4,6,7,-1},
+ {2,3}
+ },
+
+ {
+ {
+ 0,0,1,0,0,1,0,2,3,3,0,3,3,2,3,0,2,2,2,0,3,2,0,3,1,0,0,3,3,0,0,0,
+ 2,2,1,0,2,0,3,2,0,0,3,1,3,3,0,0,2,1,1,2,1,0,1,1,0,3,1,2,0,2,0,3,
+ },
+ {0,1,2,3,6,-1},
+ {4,7}
+ },
+ },
+ { // 4th round
+ {
+ {
+ 0,3,3,3,3,3,2,0,0,1,2,0,2,2,2,2,1,1,0,2,2,1,3,2,3,2,0,1,2,3,2,1,
+ 3,2,2,3,1,0,1,0,0,2,0,1,2,1,2,3,1,2,1,1,2,2,1,0,1,3,2,3,2,0,3,1,
+ },
+ {0,1,3,4,5,6},
+ {0,5}
+ },
+
+ {
+ {
+ 0,3,0,0,2,0,3,1,1,1,2,2,2,1,3,1,2,2,1,3,2,2,3,3,0,3,1,0,3,2,0,1,
+ 3,0,2,0,1,0,2,1,3,3,1,2,2,0,2,3,3,2,3,0,1,1,3,3,0,2,1,3,0,2,2,3,
+ },
+ {0,1,2,3,5,7},
+ {1,7}
+ },
+
+ {
+ {
+ 0,1,2,3,3,3,3,1,2,0,2,3,2,1,0,1,2,2,1,2,0,3,2,0,1,1,0,1,3,1,3,1,
+ 3,1,0,0,1,0,0,0,0,1,2,2,1,1,3,3,1,2,3,3,3,2,3,0,2,2,1,3,3,0,2,0,
+ },
+ {2,3,4,5,6,7},
+ {2,3}
+ },
+
+ {
+ {
+ 0,2,1,1,3,2,0,3,1,0,1,0,3,2,1,1,2,2,0,3,1,0,1,2,2,2,3,3,0,0,0,0,
+ 1,2,1,0,2,1,2,2,2,3,2,3,0,1,3,0,0,1,3,0,0,1,1,0,1,0,0,0,0,2,0,1,
+ },
+ {0,1,2,4,6,7},
+ {4,6}
+ },
+ },
+};
+
+
+const naomi_m2_board::sbox naomi_m2_board::fn2_sboxes[4][4] = {
+ { // 1st round
+ {
+ {
+ 3,3,0,1,0,1,0,0,0,3,0,0,1,3,1,2,0,3,3,3,2,1,0,1,1,1,2,2,2,3,2,2,
+ 2,1,3,3,1,3,1,1,0,0,1,2,0,2,2,1,1,2,3,1,2,1,3,1,2,2,0,1,3,0,2,2,
+ },
+ {1,3,4,5,6,7},
+ {0,7}
+ },
+
+ {
+ {
+ 0,2,3,2,1,1,0,0,2,1,0,3,3,0,0,0,3,2,0,2,1,1,2,1,0,0,3,1,2,2,3,1,
+ 3,1,3,0,0,0,1,3,1,0,0,3,2,2,3,1,1,3,0,0,2,1,3,3,1,3,1,2,3,1,2,1,
+ },
+ {0,3,5,6,-1,-1},
+ {1,2}
+ },
+
+ {
+ {
+ 0,2,2,1,0,1,2,1,2,0,1,2,3,3,0,1,3,1,1,2,1,2,1,3,3,2,3,3,2,1,0,1,
+ 0,1,0,2,0,1,1,3,2,0,3,2,1,1,1,3,2,3,0,2,3,0,2,2,1,3,0,1,1,2,2,2,
+ },
+ {0,2,3,4,7,-1},
+ {3,4}
+ },
+
+ {
+ {
+ 2,3,1,3,2,0,1,2,0,0,3,3,3,3,3,1,2,0,2,1,2,3,0,2,0,1,0,3,0,2,1,0,
+ 2,3,0,1,3,0,3,2,3,1,2,0,3,1,1,2,0,3,0,0,2,0,2,1,2,2,3,2,1,2,3,1,
+ },
+ {1,2,5,6,-1,-1},
+ {5,6}
+ },
+ },
+ { // 2nd round
+ {
+ {
+ 2,3,1,3,1,0,3,3,3,2,3,3,2,0,0,3,2,3,0,3,1,1,2,3,1,1,2,2,0,1,0,0,
+ 2,1,0,1,2,0,1,2,0,3,1,1,2,3,1,2,0,2,0,1,3,0,1,0,2,2,3,0,3,2,3,0,
+ },
+ {0,1,4,5,6,7},
+ {0,7}
+ },
+
+ {
+ {
+ 0,2,2,0,2,2,0,3,2,3,2,1,3,2,3,3,1,1,0,0,3,0,2,1,1,3,3,2,3,2,0,1,
+ 1,2,3,0,1,0,3,0,3,1,0,2,1,2,0,3,2,3,1,2,2,0,3,2,3,0,0,1,2,3,3,3,
+ },
+ {0,2,3,6,7,-1},
+ {1,5}
+ },
+
+ {
+ {
+ 1,2,3,2,0,3,2,3,0,1,1,0,0,2,2,3,2,0,0,3,0,2,3,3,2,2,1,0,2,1,0,3,
+ 1,0,2,0,1,1,0,1,0,0,1,0,3,0,3,3,2,2,0,2,1,1,1,0,3,0,1,3,2,3,2,1,
+ },
+ {2,3,4,6,7,-1},
+ {2,3}
+ },
+
+ {
+ {
+ 2,3,1,3,1,1,2,3,3,1,1,0,1,0,2,3,2,1,0,0,2,2,0,1,0,2,2,2,0,2,1,0,
+ 3,1,2,3,1,3,0,2,1,0,1,0,0,1,2,2,3,2,3,1,3,2,1,1,2,0,2,1,3,3,1,0,
+ },
+ {1,2,3,4,5,6},
+ {4,6}
+ },
+ },
+ { // 3rd round
+ {
+ {
+ 0,3,0,1,0,2,3,3,1,0,1,3,2,2,1,1,3,3,3,0,2,0,2,0,0,0,2,3,1,1,0,0,
+ 3,3,0,3,3,0,0,2,1,1,1,0,2,2,2,0,3,0,3,1,2,2,0,3,0,0,3,2,0,3,2,1,
+ },
+ {1,4,5,6,7,-1},
+ {0,5}
+ },
+
+ {
+ {
+ 0,3,0,1,3,0,3,1,3,2,2,2,3,0,3,2,2,1,2,2,0,3,2,2,0,0,2,1,1,3,2,3,
+ 2,3,3,1,2,0,1,2,2,1,0,0,0,0,2,3,1,2,0,3,1,3,1,2,3,2,1,0,3,0,0,2,
+ },
+ {0,2,3,4,6,7},
+ {1,7}
+ },
+
+ {
+ {
+ 2,2,3,2,0,3,2,3,1,1,2,0,2,3,1,3,0,0,0,3,2,0,1,0,1,3,2,3,3,3,1,0,
+ // unused?
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+ },
+ {1,2,4,7,-1,-1},
+ {2,4}
+ },
+
+ {
+ {
+ 0,2,3,1,3,1,1,0,0,1,3,0,2,1,3,3,2,0,2,1,1,2,3,3,0,0,0,2,0,2,3,0,
+ 3,3,3,3,2,3,3,2,3,0,1,0,2,3,3,2,0,1,3,1,0,1,2,3,3,0,2,0,3,0,3,3,
+ },
+ {0,1,2,3,5,7},
+ {3,6}
+ },
+ },
+ { // 4th round
+ {
+ {
+ 0,1,1,0,0,1,0,2,3,3,0,1,2,3,0,2,1,0,3,3,2,0,3,0,0,2,1,0,1,0,1,3,
+ 0,3,3,1,2,0,3,0,1,3,2,0,3,3,1,3,0,2,3,3,2,1,1,2,2,1,2,1,2,0,1,1,
+ },
+ {0,1,2,4,7,-1},
+ {0,5}
+ },
+
+ {
+ {
+ 2,0,0,2,3,0,2,3,3,1,1,1,2,1,1,0,0,2,1,0,0,3,1,0,0,3,3,0,1,0,1,2,
+ 0,2,0,2,0,1,2,3,2,1,1,0,3,3,3,3,3,3,1,0,3,0,0,2,0,3,2,0,2,2,0,1,
+ },
+ {0,1,3,5,6,-1},
+ {1,3}
+ },
+
+ {
+ {
+ 0,1,1,2,1,3,1,1,0,0,3,1,1,1,2,0,3,2,0,1,1,2,3,3,3,0,3,0,0,2,0,3,
+ 3,2,0,0,3,2,3,1,2,3,0,3,2,0,1,2,2,2,0,2,0,1,2,2,3,1,2,2,1,1,1,1,
+ },
+ {0,2,3,4,5,7},
+ {2,7}
+ },
+
+ {
+ {
+ 0,1,2,0,3,3,0,3,2,1,3,3,0,3,1,1,3,2,3,2,3,0,0,0,3,0,2,2,3,2,2,3,
+ 2,2,3,1,2,3,1,2,0,3,0,2,3,1,0,0,3,2,1,2,1,2,1,3,1,0,2,3,3,1,3,2,
+ },
+ {2,3,4,5,6,7},
+ {4,6}
+ },
+ },
+};
+
+const int naomi_m2_board::fn1_game_key_scheduling[38][2] = {
+ {1,29}, {1,71}, {2,4}, {2,54}, {3,8}, {4,56}, {4,73}, {5,11},
+ {6,51}, {7,92}, {8,89}, {9,9}, {9,10}, {9,39}, {9,41}, {9,58},
+ {9,59}, {9,86}, {10,90}, {11,6}, {12,64}, {13,49}, {14,44}, {15,40},
+ {16,69}, {17,15}, {18,23}, {18,43}, {19,82}, {20,81}, {21,32}, {21,61},
+ {22,5}, {23,66}, {24,13}, {24,45}, {25,12}, {25,35}
+};
+
+const int naomi_m2_board::fn2_game_key_scheduling[34][2] = {
+ {0,0}, {1,3}, {2,11}, {3,20}, {4,22}, {5,23}, {6,29}, {7,38},
+ {8,39}, {9,47}, {9,55}, {9,86}, {9,87}, {9,90}, {10,50}, {10,53},
+ {11,57}, {12,59}, {13,61}, {13,64}, {14,63}, {15,67}, {16,72}, {17,83},
+ {18,88}, {19,94}, {20,35}, {21,17}, {21,92}, {22,6}, {22,11}, {23,85},
+ {24,16}, {25,25}
+};
+
+const int naomi_m2_board::fn1_sequence_key_scheduling[20][2] = {
+ {0,52}, {1,34}, {2,17}, {3,36}, {4,84}, {4,88}, {5,57}, {6,48},
+ {6,68}, {7,76}, {8,83}, {9,30}, {10,22}, {10,41}, {11,38}, {12,55},
+ {13,74}, {14,19}, {14,80}, {15,26}
+};
+
+const int naomi_m2_board::fn2_sequence_key_scheduling[16] = {77,34,8,42,36,27,69,66,13,9,79,31,49,7,24,64};
+
+const int naomi_m2_board::fn2_middle_result_scheduling[16] = {1,10,44,68,74,78,81,95,2,4,30,40,41,51,53,58};
+
+int naomi_m2_board::feistel_function(int input, const struct sbox *sboxes, UINT32 subkeys)
+{
+ int k,m;
+ int aux;
+ int result=0;
+
+ for (m=0; m<4; ++m) { // 4 sboxes
+ for (k=0, aux=0; k<6; ++k)
+ if (sboxes[m].inputs[k]!=-1)
+ aux |= BIT(input, sboxes[m].inputs[k]) << k;
+
+ aux = sboxes[m].table[(aux^subkeys)&0x3f];
+
+ for (k=0; k<2; ++k)
+ result |= BIT(aux,k) << sboxes[m].outputs[k];
+
+ subkeys >>=6;
+ }
+
+ return result;
+}
+
+/**************************
+This implementation is an "educational" version. It must be noted that it can be speed-optimized in a number of ways.
+The most evident one is to factor out the parts of the key-scheduling that must only be done once (like the game-key &
+sequence-key parts) as noted in the comments inlined in the function. More sophisticated speed-ups can be gained by
+noticing that the weak key-scheduling would allow to create some pregenerated look-up tables for doing most of the work
+of the function. Even so, it would still be pretty slow, so caching techniques could be a wiser option here.
+**************************/
+
+UINT16 naomi_m2_board::block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data)
+{
+ int j;
+ int aux,aux2;
+ int A,B;
+ int middle_result;
+ UINT32 fn1_subkeys[4];
+ UINT32 fn2_subkeys[4];
+
+ /* Game-key scheduling; this could be done just once per game at initialization time */
+ memset(fn1_subkeys,0,sizeof(UINT32)*4);
+ memset(fn2_subkeys,0,sizeof(UINT32)*4);
+
+ for (j=0; j<38; ++j) {
+ if (BIT(game_key, fn1_game_key_scheduling[j][0])!=0) {
+ aux = fn1_game_key_scheduling[j][1]%24;
+ aux2 = fn1_game_key_scheduling[j][1]/24;
+ fn1_subkeys[aux2] ^= (1<<aux);
+ }
+ }
+
+ for (j=0; j<34; ++j) {
+ if (BIT(game_key, fn2_game_key_scheduling[j][0])!=0) {
+ aux = fn2_game_key_scheduling[j][1]%24;
+ aux2 = fn2_game_key_scheduling[j][1]/24;
+ fn2_subkeys[aux2] ^= (1<<aux);
+ }
+ }
+ /********************************************************/
+
+ /* Sequence-key scheduling; this could be done just once per decryption run */
+ for (j=0; j<20; ++j) {
+ if (BIT(sequence_key,fn1_sequence_key_scheduling[j][0])!=0) {
+ aux = fn1_sequence_key_scheduling[j][1]%24;
+ aux2 = fn1_sequence_key_scheduling[j][1]/24;
+ fn1_subkeys[aux2] ^= (1<<aux);
+ }
+ }
+
+ for (j=0; j<16; ++j) {
+ if (BIT(sequence_key,j)!=0) {
+ aux = fn2_sequence_key_scheduling[j]%24;
+ aux2 = fn2_sequence_key_scheduling[j]/24;
+ fn2_subkeys[aux2] ^= (1<<aux);
+ }
+ }
+
+ // subkeys bits 10 & 41
+ fn2_subkeys[0] ^= (BIT(sequence_key,2)<<10);
+ fn2_subkeys[1] ^= (BIT(sequence_key,4)<<17);
+ /**************************************************************/
+
+ // First Feistel Network
+
+ aux = BITSWAP16(counter,5,12,14,13,9,3,6,4, 8,1,15,11,0,7,10,2);
+
+ // 1st round
+ B = aux >> 8;
+ A = (aux & 0xff) ^ feistel_function(B,fn1_sboxes[0],fn1_subkeys[0]);
+
+ // 2nd round
+ B = B ^ feistel_function(A,fn1_sboxes[1],fn1_subkeys[1]);
+
+ // 3rd round
+ A = A ^ feistel_function(B,fn1_sboxes[2],fn1_subkeys[2]);
+
+ // 4th round
+ B = B ^ feistel_function(A,fn1_sboxes[3],fn1_subkeys[3]);
+
+ middle_result = (B<<8)|A;
+
+
+ /* Middle-result-key sheduling */
+ for (j=0; j<16; ++j) {
+ if (BIT(middle_result,j)!=0) {
+ aux = fn2_middle_result_scheduling[j]%24;
+ aux2 = fn2_middle_result_scheduling[j]/24;
+ fn2_subkeys[aux2] ^= (1<<aux);
+ }
+ }
+ /*********************/
+
+ // Second Feistel Network
+
+ aux = BITSWAP16(data,14,3,8,12,13,7,15,4, 6,2,9,5,11,0,1,10);
+
+ // 1st round
+ B = aux >> 8;
+ A = (aux & 0xff) ^ feistel_function(B,fn2_sboxes[0],fn2_subkeys[0]);
+
+ // 2nd round
+ B = B ^ feistel_function(A,fn2_sboxes[1],fn2_subkeys[1]);
+
+ // 3rd round
+ A = A ^ feistel_function(B,fn2_sboxes[2],fn2_subkeys[2]);
+
+ // 4th round
+ B = B ^ feistel_function(A,fn2_sboxes[3],fn2_subkeys[3]);
+
+ aux = (B<<8)|A;
+
+ aux = BITSWAP16(aux,15,7,6,14,13,12,5,4, 3,2,11,10,9,1,0,8);
+
+ return aux;
+}
+
+UINT16 naomi_m2_board::get_decrypted_16()
+{
+ UINT16 enc;
+
+ if((prot_cur_address & 0xffff0000) == 0x01000000) {
+ int base = 2*(prot_cur_address & 0x7fff);
+ enc = ram[base+1] | (ram[base] << 8);
+ } else {
+ const UINT8 *base = m_region->base() + 2*prot_cur_address;
+ enc = base[1] | (base[0] << 8);
+ }
+
+ UINT16 dec = block_decrypt(key, subkey, prot_cur_address, enc);
+ UINT16 res = (dec & 3) | (dec_hist & 0xfffc);
+ dec_hist = dec;
+
+ prot_cur_address ++;
+ return res;
+}
+
+void naomi_m2_board::enc_start()
+{
+ buffer_pos = BUFFER_SIZE;
+ dec_header = get_decrypted_16() << 16;
+ dec_header |= get_decrypted_16();
+
+ if(dec_header & FLAG_COMPRESSED) {
+ line_buffer_size = dec_header & FLAG_LINE_SIZE_512 ? 512 : 256;
+ line_buffer_pos = line_buffer_size;
+ buffer_bit = 7;
+ }
+ enc_ready = true;
+}
+
+void naomi_m2_board::enc_fill()
+{
+ assert(buffer_pos == BUFFER_SIZE);
+ for(int i = 0; i != BUFFER_SIZE; i+=2) {
+ UINT16 val = get_decrypted_16();
+ buffer[i] = val;
+ buffer[i+1] = val >> 8;
+ }
+ buffer_pos = 0;
+}
+
+/* node format
+0xxxxxxx - next node index
+1a0bbccc - end node
+ a - 0 = repeat
+ 1 = fetch
+ b - if a = 1
+ 00 - fetch 0
+ 01 - fetch 1
+ 11 - fetch -1
+ if a = 0
+ 000
+ c - repeat/fetch counter
+ count = ccc + 1
+11111111 - empty node
+*/
+const UINT8 naomi_m2_board::trees[9][2][32] = {
+ {
+ {0x01,0x10,0x0f,0x05,0xc4,0x13,0x87,0x0a,0xcc,0x81,0xce,0x0c,0x86,0x0e,0x84,0xc2,
+ 0x11,0xc1,0xc3,0xcf,0x15,0xc8,0xcd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc7,0x02,0x03,0x04,0x80,0x06,0x07,0x08,0x09,0xc9,0x0b,0x0d,0x82,0x83,0x85,0xc0,
+ 0x12,0xc6,0xc5,0x14,0x16,0xca,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x02,0x80,0x05,0x04,0x81,0x10,0x15,0x82,0x09,0x83,0x0b,0x0c,0x0d,0xdc,0x0f,0xde,
+ 0x1c,0xcf,0xc5,0xdd,0x86,0x16,0x87,0x18,0x19,0x1a,0xda,0xca,0xc9,0x1e,0xce,0xff,},
+ {0x01,0x17,0x03,0x0a,0x08,0x06,0x07,0xc2,0xd9,0xc4,0xd8,0xc8,0x0e,0x84,0xcb,0x85,
+ 0x11,0x12,0x13,0x14,0xcd,0x1b,0xdb,0xc7,0xc0,0xc1,0x1d,0xdf,0xc3,0xc6,0xcc,0xff,},
+ },
+ {
+ {0xc6,0x80,0x03,0x0b,0x05,0x07,0x82,0x08,0x15,0xdc,0xdd,0x0c,0xd9,0xc2,0x14,0x10,
+ 0x85,0x86,0x18,0x16,0xc5,0xc4,0xc8,0xc9,0xc0,0xcc,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0x01,0x02,0x12,0x04,0x81,0x06,0x83,0xc3,0x09,0x0a,0x84,0x11,0x0d,0x0e,0x0f,0x19,
+ 0xca,0xc1,0x13,0xd8,0xda,0xdb,0x17,0xde,0xcd,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0x80,0x0d,0x04,0x05,0x15,0x83,0x08,0xd9,0x10,0x0b,0x0c,0x84,0x0e,0xc0,0x14,
+ 0x12,0xcb,0x13,0xca,0xc8,0xc2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc5,0x02,0x03,0x07,0x81,0x06,0x82,0xcc,0x09,0x0a,0xc9,0x11,0xc4,0x0f,0x85,0xd8,
+ 0xda,0xdb,0xc3,0xdc,0xdd,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0x80,0x06,0x0c,0x05,0x81,0xd8,0x84,0x09,0xdc,0x0b,0x0f,0x0d,0x0e,0x10,0xdb,
+ 0x11,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc4,0x02,0x03,0x04,0xcb,0x0a,0x07,0x08,0xd9,0x82,0xc8,0x83,0xc0,0xc1,0xda,0xc2,
+ 0xc9,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0x02,0x06,0x0a,0x83,0x0b,0x07,0x08,0x09,0x82,0xd8,0x0c,0xd9,0xda,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc3,0x80,0x03,0x04,0x05,0x81,0xca,0xc8,0xdb,0xc9,0xc0,0xc1,0x0d,0xc2,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0x02,0x03,0x04,0x81,0x07,0x08,0xd8,0xda,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc2,0x80,0x05,0xc9,0xc8,0x06,0x82,0xc0,0x09,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0x80,0x04,0xc8,0xc0,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc1,0x02,0x03,0x81,0x05,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+ {
+ {0x01,0xd8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ {0xc0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,},
+ },
+};
+
+int naomi_m2_board::get_compressed_bit()
+{
+ if(buffer_pos == BUFFER_SIZE)
+ enc_fill();
+ int res = (buffer[buffer_pos^1] >> buffer_bit) & 1;
+ buffer_bit--;
+ if(buffer_bit == -1) {
+ buffer_bit = 7;
+ buffer_pos++;
+ }
+ return res;
+}
+
+void naomi_m2_board::line_fill()
+{
+ assert(line_buffer_pos == line_buffer_size);
+ UINT8 *lp = line_buffer;
+ UINT8 *lc = line_buffer_prev;
+ line_buffer = lc;
+ line_buffer_prev = lp;
+ line_buffer_pos = 0;
+
+ UINT32 line_buffer_mask = line_buffer_size-1;
+
+ for(int i=0; i != line_buffer_size;) {
+ // vlc 0: start of line
+ // vlc 1: interior of line
+ // vlc 2-9: 7-1 bytes from end of line
+
+ int slot = i ? i < line_buffer_size - 7 ? 1 : (i & 7) + 1 : 0;
+
+ UINT32 tmp = 0;
+ while (!(tmp&0x80))
+ if(get_compressed_bit())
+ tmp = trees[slot][1][tmp];
+ else
+ tmp = trees[slot][0][tmp];
+ if(tmp != 0xff) {
+ int count = (tmp & 7) + 1;
+
+ if(tmp&0x40) {
+ // Copy from previous line
+
+ static int offsets[4] = {0, 1, 0, -1};
+ int offset = offsets[(tmp & 0x18) >> 3];
+ for(int j=0; j != count; j++) {
+ lc[i^1] = lp[((i+offset) & line_buffer_mask)^1];
+ i++;
+ }
+
+ } else {
+ // Get a byte in the stream and write n times
+ UINT8 byte;
+ byte = get_compressed_bit() << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = (byte | get_compressed_bit()) << 1;
+ byte = byte | get_compressed_bit();
+ for(int j=0; j != count; j++)
+ lc[(i++)^1] = byte;
+
+ }
+ }
+ }
+}
+
diff --git a/src/mame/machine/naomim2.h b/src/mame/machine/naomim2.h
index e69de29bb2d..e4e6cbe871e 100644
--- a/src/mame/machine/naomim2.h
+++ b/src/mame/machine/naomim2.h
@@ -0,0 +1,73 @@
+#ifndef _NAOMIM2_H_
+#define _NAOMIM2_H_
+
+#include "naomibd.h"
+
+#define MCFG_NAOMI_M2_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _maincpu_tag, _irq_cb) \
+ MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M2_BOARD, _eeprom_tag, _maincpu_tag, _irq_cb) \
+ naomi_m2_board::static_set_tags(*device, _key_tag);
+
+class naomi_m2_board : public naomi_board
+{
+public:
+ naomi_m2_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ static void static_set_tags(device_t &device, const char *_key_tag);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+ virtual void board_setup_address(UINT32 address, bool is_dma);
+ virtual void board_get_buffer(UINT8 *&base, UINT32 &limit);
+ virtual void board_advance(UINT32 size);
+ virtual void board_write(offs_t offset, UINT16 data);
+
+private:
+ enum {
+ RAM_SIZE = 65536, BUFFER_SIZE = 32768, LINE_SIZE = 512,
+ FLAG_COMPRESSED = 0x10000, FLAG_LINE_SIZE_512 = 0x20000
+ };
+
+ const char *key_tag;
+ UINT32 key;
+
+ UINT8 *ram, *buffer, *line_buffer, *line_buffer_prev;
+ UINT32 rom_cur_address, prot_cur_address;
+ UINT16 subkey, dec_hist;
+ UINT32 dec_header;
+ bool enc_ready;
+
+ int buffer_pos, line_buffer_pos, line_buffer_size, buffer_bit;
+
+ struct sbox {
+ UINT8 table[64];
+ int inputs[6]; // positions of the inputs bits, -1 means no input except from key
+ int outputs[2]; // positions of the output bits
+ };
+
+ static const sbox fn1_sboxes[4][4];
+ static const sbox fn2_sboxes[4][4];
+
+ static const int fn1_game_key_scheduling[38][2];
+ static const int fn2_game_key_scheduling[34][2];
+ static const int fn1_sequence_key_scheduling[20][2];
+ static const int fn2_sequence_key_scheduling[16];
+ static const int fn2_middle_result_scheduling[16];
+
+ static const UINT8 trees[9][2][32];
+
+ int feistel_function(int input, const struct sbox *sboxes, UINT32 subkeys);
+ UINT16 block_decrypt(UINT32 game_key, UINT16 sequence_key, UINT16 counter, UINT16 data);
+
+ UINT16 get_decrypted_16();
+ int get_compressed_bit();
+
+ void enc_start();
+ void enc_fill();
+ void line_fill();
+};
+
+extern const device_type NAOMI_M2_BOARD;
+
+#endif
diff --git a/src/mame/machine/naomim4.c b/src/mame/machine/naomim4.c
index e69de29bb2d..a6d72933771 100644
--- a/src/mame/machine/naomim4.c
+++ b/src/mame/machine/naomim4.c
@@ -0,0 +1,165 @@
+#define ADDRESS_MAP_MODERN
+
+#include "emu.h"
+#include "naomim4.h"
+
+// Decoder for M4-type NAOMI cart encryption
+
+// In hardware, the decryption is managed by the XC3S50 Xilinx Spartan FPGA (IC2)
+// and the annexed PIC16C621A PIC MCU (IC3).
+// - The FPGA control the clock line of the security PIC.
+// - The protocol between the FPGA and the MCU is nibble-based, though it hasn't been RE for now.
+// - The decryption algorithm is clearly nibble-based too.
+
+// The decryption algorithm itself implements a stream cipher built on top of a 16-bits block cipher.
+// The underlying block-cipher is a SP-network of 2 rounds (both identical in structure). In every
+// round, the substitution phase is done using 4 fixed 4-to-4 sboxes acting on every nibble. The permutation
+// phase is indeed a nibble-based linear combination.
+// With that block cipher, a stream cipher is constructed by feeding the output result of the 1st round
+// of a certain 16-bits block as a whitening value for the next block. The cart dependent data used by
+// the algorithm is comprised by a 16-bits "key" and a 16-bits IV (initialization vector) --though they
+// will be merged in a only 32-bits number in the code--. The hardware auto-reset the feed value
+// to the cart-based IV every 16 blocks (32 bytes); that reset is not address-based, but index-based.
+
+const device_type NAOMI_M4_BOARD = &device_creator<naomi_m4_board>;
+
+const UINT8 naomi_m4_board::k_sboxes[4][16] = {
+ {13,14,1,11,7,9,10,0,15,6,4,5,8,2,12,3},
+ {12,3,14,6,7,15,2,13,1,4,11,0,9,10,8,5},
+ {6,12,0,10,1,5,14,9,7,2,15,13,4,11,3,8},
+ {9,12,8,7,10,4,0,15,1,11,14,2,13,5,6,3}
+};
+
+naomi_m4_board::naomi_m4_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : naomi_board(mconfig, NAOMI_M4_BOARD, "NAOMI-M1-BOARD", tag, owner, clock)
+{
+ key_tag = 0;
+}
+
+void naomi_m4_board::static_set_tags(device_t &device, const char *_key_tag)
+{
+ naomi_m4_board &dev = downcast<naomi_m4_board &>(device);
+ dev.key_tag = _key_tag;
+}
+
+void naomi_m4_board::device_start()
+{
+ naomi_board::device_start();
+
+ const UINT8 *key_data = machine().region(key_tag)->base();
+ key = (key_data[2] << 8) | key_data[3];
+ iv = (key_data[0] << 8) | key_data[1];
+ buffer = auto_alloc_array(machine(), UINT8, BUFFER_SIZE);
+ enc_init();
+
+ save_pointer(NAME(buffer), BUFFER_SIZE);
+ save_item(NAME(rom_cur_address));
+ save_item(NAME(buffer_actual_size));
+ save_item(NAME(encryption));
+ save_item(NAME(counter));
+}
+
+void naomi_m4_board::enc_init()
+{
+ one_round = auto_alloc_array(machine(), UINT16, 0x10000);
+
+ for(int round_input = 0; round_input < 0x10000; round_input++) {
+ UINT8 input_nibble[4];
+ UINT8 output_nibble[4];
+
+ for (int nibble_idx = 0; nibble_idx < 4; ++nibble_idx) {
+ input_nibble[nibble_idx] = (round_input >> (nibble_idx*4)) & 0xf;
+ output_nibble[nibble_idx] = 0;
+ }
+
+ UINT8 aux_nibble = input_nibble[3];
+ for (int nibble_idx = 0; nibble_idx < 4; ++nibble_idx) { // 4 s-boxes per round
+ aux_nibble ^= k_sboxes[nibble_idx][input_nibble[nibble_idx]];
+ for (int i = 0; i < 4; ++i) // diffusion of the bits
+ output_nibble[(nibble_idx - i) & 3] |= aux_nibble & (1 << i);
+ }
+
+ UINT16 result = 0;
+ for (int nibble_idx = 0; nibble_idx < 4; ++nibble_idx)
+ result |= (output_nibble[nibble_idx] << (4 * nibble_idx));
+
+ one_round[round_input] = result;
+ }
+}
+
+void naomi_m4_board::device_reset()
+{
+ naomi_board::device_reset();
+ rom_cur_address = 0;
+ buffer_actual_size = 0;
+ encryption = false;
+ counter = 0;
+ cur_iv = 0;
+}
+
+void naomi_m4_board::board_setup_address(UINT32 address, bool is_dma)
+{
+ rom_cur_address = address & 0x1fffffff;
+ encryption = !(address & 0x20000000);
+
+ if(encryption) {
+ enc_reset();
+ enc_fill();
+ }
+}
+
+void naomi_m4_board::board_get_buffer(UINT8 *&base, UINT32 &limit)
+{
+ if(encryption) {
+ base = buffer;
+ limit = BUFFER_SIZE;
+
+ } else {
+ base = m_region->base() + rom_cur_address;
+ limit = m_region->bytes() - rom_cur_address;
+ }
+}
+
+void naomi_m4_board::board_advance(UINT32 size)
+{
+ if(encryption) {
+ if(size < buffer_actual_size) {
+ memmove(buffer, buffer + size, buffer_actual_size - size);
+ buffer_actual_size -= size;
+ } else
+ buffer_actual_size = 0;
+ enc_fill();
+
+ } else
+ rom_cur_address += size;
+}
+
+void naomi_m4_board::enc_reset()
+{
+ buffer_actual_size = 0;
+ cur_iv = iv;
+ counter = 0;
+}
+
+void naomi_m4_board::enc_fill()
+{
+ const UINT8 *base = m_region->base() + rom_cur_address;
+ while(buffer_actual_size < BUFFER_SIZE) {
+ UINT16 enc = base[0] | (base[1] << 8);
+ UINT16 output_whitening = key ^ cur_iv;
+ cur_iv = one_round[enc ^ cur_iv];
+ UINT16 dec = one_round[key ^ cur_iv] ^ output_whitening;
+
+ buffer[buffer_actual_size++] = dec;
+ buffer[buffer_actual_size++] = dec >> 8;
+
+ base += 2;
+ rom_cur_address += 2;
+
+ counter++;
+ if(counter == 16) {
+ counter = 0;
+ cur_iv = iv;
+ }
+ }
+}
diff --git a/src/mame/machine/naomim4.h b/src/mame/machine/naomim4.h
index e69de29bb2d..82529b07da2 100644
--- a/src/mame/machine/naomim4.h
+++ b/src/mame/machine/naomim4.h
@@ -0,0 +1,47 @@
+#ifndef _NAOMIM4_H_
+#define _NAOMIM4_H_
+
+#include "naomibd.h"
+
+#define MCFG_NAOMI_M4_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _maincpu_tag, _irq_cb) \
+ MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M4_BOARD, _eeprom_tag, _maincpu_tag, _irq_cb) \
+ naomi_m4_board::static_set_tags(*device, _key_tag);
+
+class naomi_m4_board : public naomi_board
+{
+public:
+ naomi_m4_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ static void static_set_tags(device_t &device, const char *_key_tag);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+ virtual void board_setup_address(UINT32 address, bool is_dma);
+ virtual void board_get_buffer(UINT8 *&base, UINT32 &limit);
+ virtual void board_advance(UINT32 size);
+
+private:
+ enum { BUFFER_SIZE = 32768 };
+
+ static const UINT8 k_sboxes[4][16];
+
+ const char *key_tag;
+ UINT16 key, iv;
+ UINT16 *one_round;
+
+ UINT8 *buffer;
+ UINT32 rom_cur_address, buffer_actual_size;
+ UINT16 cur_iv;
+ UINT8 counter;
+ bool encryption;
+
+ void enc_init();
+ void enc_reset();
+ void enc_fill();
+};
+
+extern const device_type NAOMI_M4_BOARD;
+
+#endif
diff --git a/src/mame/machine/naomim4decoder.c b/src/mame/machine/naomim4decoder.c
deleted file mode 100755
index 0bcc7f5dd95..00000000000
--- a/src/mame/machine/naomim4decoder.c
+++ /dev/null
@@ -1,73 +0,0 @@
-#include "naomim4decoder.h"
-
-const UINT8 NaomiM4Decoder::k_sboxes[4][16] = {
- {13,14,1,11,7,9,10,0,15,6,4,5,8,2,12,3},
- {12,3,14,6,7,15,2,13,1,4,11,0,9,10,8,5},
- {6,12,0,10,1,5,14,9,7,2,15,13,4,11,3,8},
- {9,12,8,7,10,4,0,15,1,11,14,2,13,5,6,3}
-};
-
-NaomiM4Decoder::NaomiM4Decoder(UINT32 cart_key)
-: m_key(cart_key & 0xffff)
-, m_iv(cart_key >> 16) // initialization vector
-{
- m_one_round = global_alloc_array(UINT16,0x10000);
-
- // populate the lookup table for one of the internal rounds of the cipher
- for (UINT32 i=0; i<0x10000; ++i)
- {
- m_one_round[i] = one_round_core(i);
- }
-}
-
-NaomiM4Decoder::~NaomiM4Decoder()
-{
- global_free(m_one_round);
-}
-
-void NaomiM4Decoder::init()
-{
- m_counter = 0;
-}
-
-UINT16 NaomiM4Decoder::decrypt(UINT16 ciphertext) // decrypt the next 16-bits value in the stream
-{
- if (0 == (m_counter++ & 0xf)) // the iv is recovered every 16 values (32 bytes)
- m_middle_value = m_iv;
-
- UINT16 output_whitening = m_key ^ m_middle_value;
-
- m_middle_value = m_one_round[ciphertext ^ m_middle_value];
-
- return m_one_round[m_middle_value ^ m_key] ^ output_whitening;
-}
-
-UINT16 NaomiM4Decoder::one_round_core(UINT16 round_input)
-{
- UINT8 input_nibble[4];
- UINT8 output_nibble[4];
- UINT8 aux_nibble;
- UINT8 nibble_idx;
- UINT8 i;
- UINT16 result;
-
- for (nibble_idx = 0; nibble_idx < 4; ++nibble_idx, round_input >>= 4)
- {
- input_nibble[nibble_idx] = round_input & 0xf;
- output_nibble[nibble_idx] = 0;
- }
-
- aux_nibble = input_nibble[3];
- for (nibble_idx = 0; nibble_idx < 4; ++nibble_idx) // 4 s-boxes per round
- {
- aux_nibble ^= k_sboxes[nibble_idx][input_nibble[nibble_idx]];
- for (i = 0; i < 4; ++i) // diffusion of the bits
- output_nibble[(nibble_idx - i) & 3] |= aux_nibble & (1 << i);
- }
-
- for (nibble_idx = 0, result = 0; nibble_idx < 4; ++nibble_idx)
- result |= (output_nibble[nibble_idx] << (4 * nibble_idx));
-
- return result;
-}
-
diff --git a/src/mame/machine/naomim4decoder.h b/src/mame/machine/naomim4decoder.h
deleted file mode 100755
index 6407a9da203..00000000000
--- a/src/mame/machine/naomim4decoder.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-
-#ifndef __NAOMIM4DECODER_H__
-#define __NAOMIM4DECODER_H__
-
-#include "emu.h"
-
-// Decoder for M4-type NAOMI cart encryption
-
-// In hardware, the decryption is managed by the XC3S50 Xilinx Spartan FPGA (IC2)
-// and the annexed PIC16C621A PIC MCU (IC3).
-// - The FPGA control the clock line of the security PIC.
-// - The protocol between the FPGA and the MCU is nibble-based, though it hasn't been RE for now.
-// - The decryption algorithm is clearly nibble-based too.
-
-// The decryption algorithm itself implements a stream cipher built on top of a 16-bits block cipher.
-// The underlying block-cipher is a SP-network of 2 rounds (both identical in structure). In every
-// round, the substitution phase is done using 4 fixed 4-to-4 sboxes acting on every nibble. The permutation
-// phase is indeed a nibble-based linear combination.
-// With that block cipher, a stream cipher is constructed by feeding the output result of the 1st round
-// of a certain 16-bits block as a whitening value for the next block. The cart dependent data used by
-// the algorithm is comprised by a 16-bits "key" and a 16-bits IV (initialization vector) --though they
-// will be merged in a only 32-bits number in the code--. The hardware auto-reset the feed value
-// to the cart-based IV every 16 blocks (32 bytes); that reset is not address-based, but index-based.
-
-class NaomiM4Decoder
-{
-public:
- NaomiM4Decoder(UINT32 cart_key);
- ~NaomiM4Decoder();
-
- void init(); // initialize the decryption of a new stream (set the IV)
- UINT16 decrypt(UINT16 ciphertext); // decrypt the next 16-bits value in the stream
-
-private:
- UINT16 one_round_core(UINT16 round_input);
-
- static const UINT8 k_sboxes[4][16];
- UINT16 *m_one_round;
- const UINT16 m_key;
- const UINT16 m_iv;
- UINT16 m_middle_value; // used by the stream cipher as feeding to the next block
- UINT8 m_counter;
-};
-
-#endif // __NAOMIM4DECODER_H__
diff --git a/src/mame/machine/naomirom.c b/src/mame/machine/naomirom.c
index e69de29bb2d..1f8e710e536 100644
--- a/src/mame/machine/naomirom.c
+++ b/src/mame/machine/naomirom.c
@@ -0,0 +1,40 @@
+#define ADDRESS_MAP_MODERN
+
+#include "emu.h"
+#include "naomirom.h"
+
+const device_type NAOMI_ROM_BOARD = &device_creator<naomi_rom_board>;
+
+naomi_rom_board::naomi_rom_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : naomi_board(mconfig, NAOMI_ROM_BOARD, "NAOMI-ROM-BOARD", tag, owner, clock)
+{
+}
+
+void naomi_rom_board::device_start()
+{
+ naomi_board::device_start();
+ save_item(NAME(rom_cur_address));
+}
+
+void naomi_rom_board::device_reset()
+{
+ naomi_board::device_reset();
+ rom_cur_address = 0;
+}
+
+void naomi_rom_board::board_setup_address(UINT32 address, bool is_dma)
+{
+ rom_cur_address = address & 0x1fffffff;
+}
+
+void naomi_rom_board::board_get_buffer(UINT8 *&base, UINT32 &limit)
+{
+ base = m_region->base() + rom_cur_address;
+ limit = m_region->bytes() - rom_cur_address;
+}
+
+void naomi_rom_board::board_advance(UINT32 size)
+{
+ rom_cur_address += size;
+}
+
diff --git a/src/mame/machine/naomirom.h b/src/mame/machine/naomirom.h
index e69de29bb2d..d81bcb5e6bc 100644
--- a/src/mame/machine/naomirom.h
+++ b/src/mame/machine/naomirom.h
@@ -0,0 +1,28 @@
+#ifndef _NAOMIROM_H_
+#define _NAOMIROM_H_
+
+#include "naomibd.h"
+
+#define MCFG_NAOMI_ROM_BOARD_ADD(_tag, _eeprom_tag, _maincpu_tag, _irq_cb) \
+ MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_ROM_BOARD, _eeprom_tag, _maincpu_tag, _irq_cb)
+
+class naomi_rom_board : public naomi_board
+{
+public:
+ naomi_rom_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+
+ virtual void board_setup_address(UINT32 address, bool is_dma);
+ virtual void board_get_buffer(UINT8 *&base, UINT32 &limit);
+ virtual void board_advance(UINT32 size);
+
+private:
+ UINT32 rom_cur_address;
+};
+
+extern const device_type NAOMI_ROM_BOARD;
+
+#endif
diff --git a/src/mame/mame.mak b/src/mame/mame.mak
index 9d938b4670e..79049a3bb93 100644
--- a/src/mame/mame.mak
+++ b/src/mame/mame.mak
@@ -1191,9 +1191,9 @@ $(MAMEOBJ)/sega.a: \
$(DRIVERS)/model1.o $(MACHINE)/model1.o $(VIDEO)/model1.o \
$(DRIVERS)/model2.o $(VIDEO)/model2.o \
$(DRIVERS)/model3.o $(VIDEO)/model3.o $(MACHINE)/model3.o \
- $(DRIVERS)/naomi.o $(MACHINE)/dc.o $(VIDEO)/dc.o $(MACHINE)/gdcrypt.o $(MACHINE)/naomibd.o $(MACHINE)/naomi.o $(MACHINE)/naomim4decoder.o\
- $(MACHINE)/mie.o $(MACHINE)/maple-dc.o $(MACHINE)/mapledev.o $(MACHINE)/dc-ctrl.o \
- $(MACHINE)/jvs13551.o \
+ $(DRIVERS)/naomi.o $(MACHINE)/dc.o $(VIDEO)/dc.o $(MACHINE)/naomi.o \
+ $(MACHINE)/naomig1.o $(MACHINE)/naomibd.o $(MACHINE)/naomirom.o $(MACHINE)/naomigd.o $(MACHINE)/naomim1.o $(MACHINE)/naomim2.o $(MACHINE)/naomim4.o $(MACHINE)/awboard.o \
+ $(MACHINE)/mie.o $(MACHINE)/maple-dc.o $(MACHINE)/mapledev.o $(MACHINE)/dc-ctrl.o $(MACHINE)/jvs13551.o \
$(DRIVERS)/triforce.o \
$(DRIVERS)/puckpkmn.o \
$(DRIVERS)/segac2.o \