diff options
author | Olivier Galibert <galibert@pobox.com> | 2011-08-23 18:47:49 +0000 |
---|---|---|
committer | Olivier Galibert <galibert@pobox.com> | 2011-08-23 18:47:49 +0000 |
commit | 2393deea8608118698c74417031f2a0d804d62b6 (patch) | |
tree | c034e8b706c7aa2f4bb2230e2cad8cb6f45e578b /src | |
parent | ca3a17ace0e7fae840c84cd1a27651b1994f9155 (diff) |
naomi: Split the rom boards into a collection of devices. [O. Galibert]
Diffstat (limited to 'src')
28 files changed, 4115 insertions, 4101 deletions
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 \ |