This commit is contained in:
Olivier Galibert 2015-01-26 22:42:17 +01:00
parent 65523cb53f
commit 5e9c24767f
8 changed files with 37 additions and 118 deletions

View File

@ -381,7 +381,6 @@ Notes:
#include "emu.h"
#include "cpu/sh4/sh4.h"
#include "machine/naomicrypt.h"
#define CPU_CLOCK (200000000)
/* MD2 MD1 MD0 MD6 MD4 MD3 MD5 MD7 MD8 */
@ -740,7 +739,7 @@ ROM_START( sgnascar )
// 317-0283-COM Actel A54SX32
// ID 0x4252
_NAOMI_M1_KEYFILE( "sgnascar-key.bin", CRC(f1452f9e) SHA1(86fb0f278a2eb0aba66a24032fb683f7a516b32b) )
ROM_PARAMETER( ":rom_board:key", "56dedf33" )
ROM_END
GAME( 2000, hikaru, 0, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Hikaru Bios", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )

View File

@ -1509,7 +1509,6 @@ Sushi Bar
#include "machine/jvs13551.h"
#include "includes/dc.h"
#include "includes/naomi.h"
#include "machine/naomicrypt.h"
#define CPU_CLOCK (200000000)
@ -2654,7 +2653,7 @@ MACHINE_CONFIG_END
*/
static MACHINE_CONFIG_DERIVED( naomim1, naomi_base )
MCFG_NAOMI_M1_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", ":boardid", WRITE8(dc_state, g1_irq))
MCFG_NAOMI_M1_BOARD_ADD("rom_board", "naomibd_eeprom", ":boardid", WRITE8(dc_state, g1_irq))
MACHINE_CONFIG_END
/*
@ -4075,7 +4074,8 @@ ROM_START( gram2000 )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
_NAOMI_M1_KEYFILE( "gram2000-key.bin", CRC(179314d9) SHA1(3dbbc04e9ff62800d08c4a239af3a83252a28dc0) )
// 840-0039 2000
ROM_PARAMETER( ":rom_board:key", "3f5c807f" )
ROM_END
ROM_START( tduno )
@ -4116,7 +4116,8 @@ ROM_START( tduno2 )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
_NAOMI_M1_KEYFILE("tduno2.key", CRC(8e0f0f3b) SHA1(914d3db8746c806d559539cc0851169161d32c04) )
// 840-0022 2000
ROM_PARAMETER( ":rom_board:key", "2f6f0f8d" )
ROM_END
ROM_START( mtkob2 )
@ -4134,7 +4135,8 @@ ROM_START( mtkob2 )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
_NAOMI_M1_KEYFILE("mtkob2-key.bin", CRC(db088208) SHA1(14d65ad2555183a445abcd93907c85df4032b41d) )
// 840-0150 2003
ROM_PARAMETER( ":rom_board:key", "3892fb3a" )
ROM_END
ROM_START( mushi2k5 )
@ -4498,7 +4500,8 @@ ROM_START( mvsc2 )
ROM_COPY( "rom_board", 0x1200000, 0x400000, 0x400000 )
_NAOMI_M1_KEYFILE( "mvsc2-key.bin", CRC(76f095b4) SHA1(773fd67e1eb471a989b3ee6e969a3d33bf61e779) )
// 841-0007-02 2000
ROM_PARAMETER( ":rom_board:key", "7c6e8bc1" )
ROM_END
/* toy fighter - 1999 sega */
@ -5102,7 +5105,8 @@ ROM_START( qmegamis )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
_NAOMI_M1_KEYFILE("qmegamis-key.bin", CRC(b08650c0) SHA1(9e6b0fac6fb05209da9e01bb1a5437949d218078) )
// 840-0030 2000
ROM_PARAMETER( ":rom_board:key", "96489bcd" )
ROM_END
/*
@ -5233,7 +5237,8 @@ ROM_START( shootopl )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
_NAOMI_M1_KEYFILE( "shootopl-key.bin", CRC(45547e02) SHA1(4f79f478ff1eea14bc939a67ff570143cb56a4bf) )
// 840-0098 2002
ROM_PARAMETER( ":rom_board:key", "a77cf3a0" )
ROM_END
// Shootout Pool Prize
@ -5250,7 +5255,8 @@ ROM_START( shootpl )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
_NAOMI_M1_KEYFILE( "shootpl-key.bin", CRC(03c30b17) SHA1(e8e8659aa27b3d1cac2268850d3973d9afeaeba9) )
// 840-0128 2002
ROM_PARAMETER( ":rom_board:key", "cde98d9d" )
ROM_END
// Shootout Pool Prize Ver. B
@ -5267,7 +5273,8 @@ ROM_START( shootplm )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
_NAOMI_M1_KEYFILE( "shootpl-key.bin", CRC(03c30b17) SHA1(e8e8659aa27b3d1cac2268850d3973d9afeaeba9) )
// 840-0128 2002
ROM_PARAMETER( ":rom_board:key", "cde98d9d" )
ROM_END
/* Oinori-daimyoujin Matsuri (medal) */
@ -6249,7 +6256,8 @@ ROM_START( vtenis2c )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
_NAOMI_M1_KEYFILE("vtenis2c-key.bin", CRC(b8c5b510) SHA1(f36d037a62a576e71211093e075f0ffa7e312c2d) )
// 840-0084 2001
ROM_PARAMETER( ":rom_board:key", "43472d2d" )
ROM_END
ROM_START( kick4csh )
@ -6278,7 +6286,8 @@ ROM_START( kick4csh )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
_NAOMI_M1_KEYFILE( "kick4csh-key.bin", CRC(889d2ea1) SHA1(daf7acf41b6bc607d443a93221a3e4554b99547f) )
// 840-0140 2004
ROM_PARAMETER( ":rom_board:key", "c9570882" )
ROM_END
ROM_START( wrungp )
@ -6587,7 +6596,7 @@ ROM_START( puyofevp )
ROM_COPY( "rom_board", 0x01000000, 0x400000, 0xc00000 )
// M1 board, but it doesn't appear the protection is used
_NAOMI_M1_KEYFILE_UNUSED
ROM_PARAMETER( ":rom_board:key", "0" )
// this dump can't be used as main_eeprom, because that's exactly 0x80 bytes
ROM_REGION(0x84, "some_eeprom", 0)
@ -7949,7 +7958,8 @@ ROM_START( vf4evoct )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
_NAOMI_M1_KEYFILE( "vf4evoct-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111) )
// 840-0106 2002
ROM_PARAMETER( ":rom_board:key", "cdb05b1e" )
ROM_END
ROM_START( hopper )

View File

@ -2,7 +2,6 @@
#define _NAOMIBD_H_
#include "machine/naomig1.h"
#include "machine/naomicrypt.h"
#define MCFG_NAOMI_BOARD_ADD(_tag, type, _eeprom_tag, _actel_tag, _irq_cb) \
MCFG_NAOMI_G1_ADD(_tag, type, _irq_cb) \

View File

@ -1,65 +0,0 @@
/* Sega 'M1' type encryption ( using an Actel A54SX32 )
see naomim1.c for Naomi hokup details
The keys here are totally arbitrary and have nothing to do with the real keys.
used by
Naomi
Hikaru
*/
#include "emu.h"
#include "naomicrypt.h"
struct game_keys
{
const char *name; /* game driver name */
const UINT32 key;
};
static const struct game_keys keys_table[] =
{
// name key gameid # year
// M1
{ "tduno2", 0x2f6f0f8d }, // 840-0022 2000
{ "qmegamis", 0x96489bcd }, // 840-0030 2000
{ "gram2000", 0x3f5c807f }, // 840-0039 2000
{ "vtenis2c", 0x43472d2d }, // 840-0084 2001
{ "shootopl", 0xa77cf3a0 }, // 840-0098 2002
{ "vf4evoct", 0xcdb05b1e }, // 840-0106 2002
{ "shootpl", 0xcde98d9d }, // 840-0128 2002
{ "shootplm", 0xcde98d9d }, // 840-0136 2002
{ "kick4csh", 0xc9570882 }, // 840-0140 2004
{ "mtkob2", 0x3892fb3a }, // 840-0150 2003
{ "mvsc2", 0x7c6e8bc1 }, // 841-0007-02 2000
// sgnascar (Hikaru)
{ NULL, 0 } // end of table
};
UINT32 get_naomi_key(running_machine &machine)
{
const char *gamename = machine.system().name;
const struct game_keys *k = &keys_table[0];
while (k->name)
{
if (strcmp(k->name, gamename) == 0)
{
// we have a proper key so return it
return k->key;
}
++k;
}
printf("get_naomi_key : KEY NOT FOUND\n");
return 0;
}

View File

@ -1,15 +0,0 @@
/* naomicrypt.h */
// use internal M1 key tables, or external files (0 = external files)
#define USE_NAOMICRYPT 0
UINT32 get_naomi_key(running_machine &machine);
#define _NAOMI_M1_KEYFILE(name,hash) \
ROM_REGION( 4, "rom_key", 0 ) \
ROM_LOAD( name, 0, 4, hash )
#define _NAOMI_M1_KEYFILE_UNUSED \
ROM_REGION( 4, "rom_key", ROMREGION_ERASE00 ) \

View File

@ -13,13 +13,6 @@ 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, "Sega NAOMI M1 Board", tag, owner, clock, "naomi_m1_board", __FILE__)
{
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)
@ -37,12 +30,15 @@ void naomi_m1_board::device_start()
{
naomi_board::device_start();
#if USE_NAOMICRYPT
key = get_naomi_key(machine());
#else
const UINT8 *key_data = memregion(key_tag)->base();
key = (key_data[0] << 24) | (key_data[1] << 16) | (key_data[2] << 8) | key_data[3];
#endif
astring skey = parameter("key");
if(skey)
key = strtoll(skey.cstr(), 0, 16);
else
{
logerror("%s: Warning: key not provided\n", tag());
key = 0;
}
buffer = auto_alloc_array(machine(), UINT8, BUFFER_SIZE);
save_pointer(NAME(buffer), BUFFER_SIZE);

View File

@ -3,17 +3,14 @@
#include "naomibd.h"
#define MCFG_NAOMI_M1_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _actel_tag, _irq_cb) \
MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M1_BOARD, _eeprom_tag, _actel_tag, _irq_cb) \
naomi_m1_board::static_set_tags(*device, _key_tag);
#define MCFG_NAOMI_M1_BOARD_ADD(_tag, _eeprom_tag, _actel_tag, _irq_cb) \
MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M1_BOARD, _eeprom_tag, _actel_tag, _irq_cb)
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);
@ -28,8 +25,6 @@ protected:
private:
enum { BUFFER_SIZE = 32768 };
const char *key_tag;
UINT32 key;
UINT8 *buffer;

View File

@ -1721,7 +1721,7 @@ $(MAMEOBJ)/sega.a: \
$(DRIVERS)/monacogp.o \
$(DRIVERS)/naomi.o $(MACHINE)/dc.o $(VIDEO)/powervr2.o $(MACHINE)/naomi.o \
$(MACHINE)/naomig1.o $(MACHINE)/naomibd.o $(MACHINE)/naomirom.o $(MACHINE)/naomigd.o \
$(MACHINE)/naomicrypt.o $(MACHINE)/naomim1.o $(MACHINE)/naomim2.o $(MACHINE)/naomim4.o \
$(MACHINE)/naomim1.o $(MACHINE)/naomim2.o $(MACHINE)/naomim4.o \
$(MACHINE)/315-5881_crypt.o \
$(MACHINE)/awboard.o \
$(MACHINE)/mie.o $(MACHINE)/maple-dc.o $(MACHINE)/mapledev.o $(MACHINE)/dc-ctrl.o $(MACHINE)/jvs13551.o \