summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author couriersud <couriersud@arcor.de>2015-01-25 22:12:59 +0100
committer couriersud <couriersud@arcor.de>2015-01-25 22:12:59 +0100
commit41408bae3b2d761ea53a0f9f826855d4c2542e87 (patch)
tree8019511b2870a9453789867309fca2980886bcd0
parent36c9bba47db88ab3e42e422d26a35de3536d1d76 (diff)
parent35947ff256bc7e066f8b49ad45c7383b14a9e8ee (diff)
Merge branch 'master' of https://github.com/mamedev/mame.git
-rw-r--r--src/emu/cpu/i386/pentops.inc130
-rw-r--r--src/emu/cpu/mips/mips3drc.c2
-rw-r--r--src/emu/cpu/powerpc/ppcdrc.c4
-rw-r--r--src/emu/cpu/rsp/rspdrc.c2
-rw-r--r--src/emu/device.c17
-rw-r--r--src/emu/device.h1
-rw-r--r--src/emu/emu.h1
-rw-r--r--src/emu/emu.mak1
-rw-r--r--src/emu/machine.c1
-rw-r--r--src/emu/machine.h2
-rw-r--r--src/emu/parameters.c27
-rw-r--r--src/emu/parameters.h48
-rw-r--r--src/emu/romload.c62
-rw-r--r--src/emu/romload.h20
-rw-r--r--src/emu/video/h63484.c63
-rw-r--r--src/emu/video/h63484.h2
-rw-r--r--src/lib/util/astring.h2
-rw-r--r--src/mame/drivers/hikaru.c15
-rw-r--r--src/mame/drivers/model2.c41
-rw-r--r--src/mame/drivers/model3.c71
-rw-r--r--src/mame/drivers/naomi.c289
-rw-r--r--src/mame/drivers/segajw.c8
-rw-r--r--src/mame/drivers/stv.c18
-rw-r--r--src/mame/machine/315-5881_crypt.c14
-rw-r--r--src/mame/machine/315-5881_crypt.h3
-rw-r--r--src/mame/machine/315-5881_helper.c183
-rw-r--r--src/mame/machine/315-5881_helper.h33
-rw-r--r--src/mame/machine/naomim2.c14
-rw-r--r--src/mame/machine/naomim2.h11
-rw-r--r--src/mame/machine/stvprot.c3
-rw-r--r--src/mame/mame.mak1
-rw-r--r--src/mess/drivers/slicer.c140
-rw-r--r--src/mess/mess.lst5
-rw-r--r--src/mess/mess.mak4
34 files changed, 809 insertions, 429 deletions
diff --git a/src/emu/cpu/i386/pentops.inc b/src/emu/cpu/i386/pentops.inc
index 66494a6968d..2195ba9fccb 100644
--- a/src/emu/cpu/i386/pentops.inc
+++ b/src/emu/cpu/i386/pentops.inc
@@ -2249,26 +2249,30 @@ void i386_device::mmx_packuswb_r64_rm64() // Opcode 0f 67
MMXPROLOG();
UINT8 modrm = FETCH();
if( modrm >= 0xc0 ) {
+ MMX_REG ds, sd;
int s,d;
s=modrm & 0x7;
d=(modrm >> 3) & 0x7;
- MMX(d).b[0]=SaturatedSignedWordToUnsignedByte(MMX(d).s[0]);
- MMX(d).b[1]=SaturatedSignedWordToUnsignedByte(MMX(d).s[1]);
- MMX(d).b[2]=SaturatedSignedWordToUnsignedByte(MMX(d).s[2]);
- MMX(d).b[3]=SaturatedSignedWordToUnsignedByte(MMX(d).s[3]);
- MMX(d).b[4]=SaturatedSignedWordToUnsignedByte(MMX(s).s[0]);
- MMX(d).b[5]=SaturatedSignedWordToUnsignedByte(MMX(s).s[1]);
- MMX(d).b[6]=SaturatedSignedWordToUnsignedByte(MMX(s).s[2]);
- MMX(d).b[7]=SaturatedSignedWordToUnsignedByte(MMX(s).s[3]);
- } else {
- MMX_REG s;
+ ds.q = MMX(d).q;
+ sd.q = MMX(s).q;
+ MMX(d).b[0]=SaturatedSignedWordToUnsignedByte(ds.s[0]);
+ MMX(d).b[1]=SaturatedSignedWordToUnsignedByte(ds.s[1]);
+ MMX(d).b[2]=SaturatedSignedWordToUnsignedByte(ds.s[2]);
+ MMX(d).b[3]=SaturatedSignedWordToUnsignedByte(ds.s[3]);
+ MMX(d).b[4]=SaturatedSignedWordToUnsignedByte(sd.s[0]);
+ MMX(d).b[5]=SaturatedSignedWordToUnsignedByte(sd.s[1]);
+ MMX(d).b[6]=SaturatedSignedWordToUnsignedByte(sd.s[2]);
+ MMX(d).b[7]=SaturatedSignedWordToUnsignedByte(sd.s[3]);
+ } else {
+ MMX_REG s,t;
int d=(modrm >> 3) & 0x7;
UINT32 ea = GetEA(modrm, 0);
READMMX(ea, s);
- MMX(d).b[0]=SaturatedSignedWordToUnsignedByte(MMX(d).s[0]);
- MMX(d).b[1]=SaturatedSignedWordToUnsignedByte(MMX(d).s[1]);
- MMX(d).b[2]=SaturatedSignedWordToUnsignedByte(MMX(d).s[2]);
- MMX(d).b[3]=SaturatedSignedWordToUnsignedByte(MMX(d).s[3]);
+ t.q = MMX(d).q;
+ MMX(d).b[0]=SaturatedSignedWordToUnsignedByte(t.s[0]);
+ MMX(d).b[1]=SaturatedSignedWordToUnsignedByte(t.s[1]);
+ MMX(d).b[2]=SaturatedSignedWordToUnsignedByte(t.s[2]);
+ MMX(d).b[3]=SaturatedSignedWordToUnsignedByte(t.s[3]);
MMX(d).b[4]=SaturatedSignedWordToUnsignedByte(s.s[0]);
MMX(d).b[5]=SaturatedSignedWordToUnsignedByte(s.s[1]);
MMX(d).b[6]=SaturatedSignedWordToUnsignedByte(s.s[2]);
@@ -2362,21 +2366,30 @@ void i386_device::mmx_packssdw_r64_rm64() // Opcode 0f 6b
UINT8 modrm = FETCH();
if( modrm >= 0xc0 ) {
int s,d;
+ INT32 t1, t2, t3, t4;
s=modrm & 0x7;
d=(modrm >> 3) & 0x7;
- MMX(d).s[0]=SaturatedSignedDwordToSignedWord(MMX(d).i[0]);
- MMX(d).s[1]=SaturatedSignedDwordToSignedWord(MMX(d).i[1]);
- MMX(d).s[2]=SaturatedSignedDwordToSignedWord(MMX(s).i[0]);
- MMX(d).s[3]=SaturatedSignedDwordToSignedWord(MMX(s).i[1]);
- } else {
+ t1 = MMX(d).i[0];
+ t2 = MMX(d).i[1];
+ t3 = MMX(s).i[0];
+ t4 = MMX(s).i[1];
+ MMX(d).s[0] = SaturatedSignedDwordToSignedWord(t1);
+ MMX(d).s[1] = SaturatedSignedDwordToSignedWord(t2);
+ MMX(d).s[2] = SaturatedSignedDwordToSignedWord(t3);
+ MMX(d).s[3] = SaturatedSignedDwordToSignedWord(t4);
+ }
+ else {
MMX_REG s;
+ INT32 t1, t2;
int d=(modrm >> 3) & 0x7;
UINT32 ea = GetEA(modrm, 0);
READMMX(ea, s);
- MMX(d).s[0]=SaturatedSignedDwordToSignedWord(MMX(d).i[0]);
- MMX(d).s[1]=SaturatedSignedDwordToSignedWord(MMX(d).i[1]);
- MMX(d).s[2]=SaturatedSignedDwordToSignedWord(s.i[0]);
- MMX(d).s[3]=SaturatedSignedDwordToSignedWord(s.i[1]);
+ t1 = MMX(d).i[0];
+ t2 = MMX(d).i[1];
+ MMX(d).s[0] = SaturatedSignedDwordToSignedWord(t1);
+ MMX(d).s[1] = SaturatedSignedDwordToSignedWord(t2);
+ MMX(d).s[2] = SaturatedSignedDwordToSignedWord(s.i[0]);
+ MMX(d).s[3] = SaturatedSignedDwordToSignedWord(s.i[1]);
}
CYCLES(1); // TODO: correct cycle count
}
@@ -2711,9 +2724,11 @@ void i386_device::sse_movlps_r128_m64() // Opcode 0f 12
{
UINT8 modrm = FETCH();
if( modrm >= 0xc0 ) {
- // unsupported by cpu
+ // MOVHLPS opcode
+ XMM((modrm >> 3) & 0x7).q[0] = XMM(modrm & 0x7).q[1];
CYCLES(1); // TODO: correct cycle count
} else {
+ // MOVLPS opcode
UINT32 ea = GetEA(modrm, 0);
READXMM_LO64(ea, XMM((modrm >> 3) & 0x7));
CYCLES(1); // TODO: correct cycle count
@@ -2737,9 +2752,11 @@ void i386_device::sse_movhps_r128_m64() // Opcode 0f 16
{
UINT8 modrm = FETCH();
if( modrm >= 0xc0 ) {
- // unsupported by cpu
+ // MOVLHPS opcode
+ XMM((modrm >> 3) & 0x7).q[1] = XMM(modrm & 0x7).q[0];
CYCLES(1); // TODO: correct cycle count
} else {
+ // MOVHPS opcode
UINT32 ea = GetEA(modrm, 0);
READXMM_HI64(ea, XMM((modrm >> 3) & 0x7));
CYCLES(1); // TODO: correct cycle count
@@ -3367,7 +3384,7 @@ void i386_device::sse_ucomiss_r128_r128m32() // Opcode 0f 2e
CYCLES(1); // TODO: correct cycle count
}
-void i386_device::sse_shufps() // Opcode 0f 67
+void i386_device::sse_shufps() // Opcode 0f c6
{
UINT8 modrm = FETCH();
UINT8 sel = FETCH();
@@ -3380,20 +3397,24 @@ void i386_device::sse_shufps() // Opcode 0f 67
s=modrm & 0x7;
d=(modrm >> 3) & 0x7;
if( modrm >= 0xc0 ) {
- UINT32 t;
- t=XMM(d).d[m1];
- XMM(d).d[1]=XMM(d).d[m2];
- XMM(d).d[0]=t;
- XMM(d).d[2]=XMM(s).d[m3];
- XMM(d).d[3]=XMM(s).d[m4];
- } else {
- UINT32 t;
+ UINT32 t1,t2,t3,t4;
+ t1=XMM(d).d[m1];
+ t2=XMM(d).d[m2];
+ t3=XMM(s).d[m3];
+ t4=XMM(s).d[m4];
+ XMM(d).d[0]=t1;
+ XMM(d).d[1]=t2;
+ XMM(d).d[2]=t3;
+ XMM(d).d[3]=t4;
+ } else {
+ UINT32 t1,t2;
XMM_REG src;
UINT32 ea = GetEA(modrm, 0);
READXMM(ea, src);
- t=XMM(d).d[m1];
- XMM(d).d[1]=XMM(d).d[m2];
- XMM(d).d[0]=t;
+ t1=XMM(d).d[m1];
+ t2=XMM(d).d[m2];
+ XMM(d).d[0]=t1;
+ XMM(d).d[1]=t2;
XMM(d).d[2]=src.d[m3];
XMM(d).d[3]=src.d[m4];
}
@@ -3404,19 +3425,25 @@ void i386_device::sse_unpcklps_r128_rm128() // Opcode 0f 14
{
UINT8 modrm = FETCH();
int s,d;
+ UINT32 t1, t2, t3, t4;
s=modrm & 0x7;
d=(modrm >> 3) & 0x7;
if( modrm >= 0xc0 ) {
- XMM(d).d[3]=XMM(s).d[1];
- XMM(d).d[2]=XMM(d).d[1];
- XMM(d).d[1]=XMM(s).d[0];
- //XMM(d).d[0]=XMM(d).d[0];
+ t1 = XMM(s).d[1];
+ t2 = XMM(d).d[1];
+ t3 = XMM(s).d[0];
+ t4 = XMM(d).d[0];
+ XMM(d).d[3]=t1;
+ XMM(d).d[2]=t2;
+ XMM(d).d[1]=t3;
+ XMM(d).d[0]=t4;
} else {
XMM_REG src;
UINT32 ea = GetEA(modrm, 0);
READXMM(ea, src);
+ t2 = XMM(d).d[1];
XMM(d).d[3]=src.d[1];
- XMM(d).d[2]=XMM(d).d[1];
+ XMM(d).d[2]=t2;
XMM(d).d[1]=src.d[0];
}
CYCLES(1); // TODO: correct cycle count
@@ -3426,20 +3453,27 @@ void i386_device::sse_unpckhps_r128_rm128() // Opcode 0f 15
{
UINT8 modrm = FETCH();
int s,d;
+ UINT32 t1, t2, t3, t4;
s=modrm & 0x7;
d=(modrm >> 3) & 0x7;
if( modrm >= 0xc0 ) {
- XMM(d).d[0]=XMM(d).d[2];
- XMM(d).d[1]=XMM(s).d[2];
- XMM(d).d[2]=XMM(d).d[3];
- XMM(d).d[3]=XMM(s).d[3];
+ t1 = XMM(d).d[2];
+ t2 = XMM(s).d[2];
+ t3 = XMM(d).d[3];
+ t4 = XMM(s).d[3];
+ XMM(d).d[0]=t1;
+ XMM(d).d[1]=t2;
+ XMM(d).d[2]=t3;
+ XMM(d).d[3]=t4;
} else {
XMM_REG src;
UINT32 ea = GetEA(modrm, 0);
READXMM(ea, src);
- XMM(d).d[0]=XMM(d).d[2];
+ t1 = XMM(d).d[2];
+ t3 = XMM(d).d[3];
+ XMM(d).d[0]=t1;
XMM(d).d[1]=src.d[2];
- XMM(d).d[2]=XMM(d).d[3];
+ XMM(d).d[2]=t3;
XMM(d).d[3]=src.d[3];
}
CYCLES(1); // TODO: correct cycle count
diff --git a/src/emu/cpu/mips/mips3drc.c b/src/emu/cpu/mips/mips3drc.c
index 94036cbb919..effe2154468 100644
--- a/src/emu/cpu/mips/mips3drc.c
+++ b/src/emu/cpu/mips/mips3drc.c
@@ -1013,7 +1013,7 @@ void mips3_device::generate_update_mode(drcuml_block *block)
an exception if out
-------------------------------------------------*/
-void mips3_device::generate_update_cycles(drcuml_block *block, compiler_state *compiler, parameter param, int allow_exception)
+void mips3_device::generate_update_cycles(drcuml_block *block, compiler_state *compiler, uml::parameter param, int allow_exception)
{
/* check software interrupts if pending */
if (compiler->checksoftints)
diff --git a/src/emu/cpu/powerpc/ppcdrc.c b/src/emu/cpu/powerpc/ppcdrc.c
index 61037b8de9a..561dec685bf 100644
--- a/src/emu/cpu/powerpc/ppcdrc.c
+++ b/src/emu/cpu/powerpc/ppcdrc.c
@@ -57,7 +57,7 @@ extern offs_t ppc_dasm_one(char *buffer, UINT32 pc, UINT32 op);
***************************************************************************/
#define R32(reg) m_regmap[reg]
-#define R32Z(reg) (((reg) == 0) ? parameter(0) : m_regmap[reg])
+#define R32Z(reg) (((reg) == 0) ? uml::parameter(0) : m_regmap[reg])
#define F64(reg) m_fdregmap[reg]
#define CR32(reg) mem(&m_core->cr[reg])
#define FPSCR32 mem(&m_core->fpscr)
@@ -1549,7 +1549,7 @@ void ppc_device::generate_update_mode(drcuml_block *block)
an exception if out
-------------------------------------------------*/
-void ppc_device::generate_update_cycles(drcuml_block *block, compiler_state *compiler, parameter param, int allow_exception)
+void ppc_device::generate_update_cycles(drcuml_block *block, compiler_state *compiler, uml::parameter param, int allow_exception)
{
/* check full interrupts if pending */
if (compiler->checkints)
diff --git a/src/emu/cpu/rsp/rspdrc.c b/src/emu/cpu/rsp/rspdrc.c
index 44a0a22542a..f684717f7d4 100644
--- a/src/emu/cpu/rsp/rspdrc.c
+++ b/src/emu/cpu/rsp/rspdrc.c
@@ -641,7 +641,7 @@ void rsp_device::static_generate_memory_accessor(int size, int iswrite, const ch
subtract cycles from the icount and generate
an exception if out
-------------------------------------------------*/
-void rsp_device::generate_update_cycles(drcuml_block *block, compiler_state *compiler, parameter param, int allow_exception)
+void rsp_device::generate_update_cycles(drcuml_block *block, compiler_state *compiler, uml::parameter param, int allow_exception)
{
/* account for cycles */
if (compiler->cycles > 0)
diff --git a/src/emu/device.c b/src/emu/device.c
index ea43ad04269..25687338338 100644
--- a/src/emu/device.c
+++ b/src/emu/device.c
@@ -186,6 +186,23 @@ ioport_port *device_t::ioport(const char *tag) const
//-------------------------------------------------
+// ioport - return a pointer to the I/O port
+// object for a given port name
+//-------------------------------------------------
+
+astring device_t::parameter(const char *tag) const
+{
+ // safety first
+ if (this == NULL)
+ return NULL;
+
+ // build a fully-qualified name and look it up
+ astring fullpath;
+ return machine().parameters().lookup(subtag(fullpath, tag));
+}
+
+
+//-------------------------------------------------
// static_set_clock - set/change the clock on
// a device
//-------------------------------------------------
diff --git a/src/emu/device.h b/src/emu/device.h
index 9060081d899..10ada7ded2f 100644
--- a/src/emu/device.h
+++ b/src/emu/device.h
@@ -130,6 +130,7 @@ public:
UINT8 default_bios() const { return m_default_bios; }
UINT8 system_bios() const { return m_system_bios; }
astring default_bios_tag() const { return m_default_bios_tag; }
+ astring parameter(const char *tag) const;
// interface helpers
device_interface *first_interface() const { return m_interface_list; }
diff --git a/src/emu/emu.h b/src/emu/emu.h
index 56fedce1913..93015100645 100644
--- a/src/emu/emu.h
+++ b/src/emu/emu.h
@@ -82,6 +82,7 @@ typedef device_t * (*machine_config_constructor)(machine_config &config, device_
// machine and driver configuration
#include "mconfig.h"
#include "gamedrv.h"
+#include "parameters.h"
// timers, CPU and scheduling
#include "devcpu.h"
diff --git a/src/emu/emu.mak b/src/emu/emu.mak
index 56fbe7e6cff..24062a093c0 100644
--- a/src/emu/emu.mak
+++ b/src/emu/emu.mak
@@ -99,6 +99,7 @@ EMUOBJS = \
$(EMUOBJ)/memarray.o \
$(EMUOBJ)/memory.o \
$(EMUOBJ)/network.o \
+ $(EMUOBJ)/parameters.o \
$(EMUOBJ)/output.o \
$(EMUOBJ)/render.o \
$(EMUOBJ)/rendfont.o \
diff --git a/src/emu/machine.c b/src/emu/machine.c
index d50667f365a..7ef17f8c462 100644
--- a/src/emu/machine.c
+++ b/src/emu/machine.c
@@ -142,6 +142,7 @@ running_machine::running_machine(const machine_config &_config, machine_manager
m_save(*this),
m_memory(*this),
m_ioport(*this),
+ m_parameters(*this),
m_scheduler(*this)
{
memset(&m_base_time, 0, sizeof(m_base_time));
diff --git a/src/emu/machine.h b/src/emu/machine.h
index fb813938e05..30ca9a633ed 100644
--- a/src/emu/machine.h
+++ b/src/emu/machine.h
@@ -165,6 +165,7 @@ public:
save_manager &save() { return m_save; }
memory_manager &memory() { return m_memory; }
ioport_manager &ioport() { return m_ioport; }
+ parameters_manager &parameters() { return m_parameters; }
cheat_manager &cheat() const { assert(m_cheat != NULL); return *m_cheat; }
render_manager &render() const { assert(m_render != NULL); return *m_render; }
input_manager &input() const { assert(m_input != NULL); return *m_input; }
@@ -357,6 +358,7 @@ private:
save_manager m_save; // save manager
memory_manager m_memory; // memory manager
ioport_manager m_ioport; // I/O port manager
+ parameters_manager m_parameters; // parameters manager
device_scheduler m_scheduler; // scheduler object
emu_timer *m_autoboot_timer; // autoboot timer
};
diff --git a/src/emu/parameters.c b/src/emu/parameters.c
new file mode 100644
index 00000000000..86bf9616bef
--- /dev/null
+++ b/src/emu/parameters.c
@@ -0,0 +1,27 @@
+// license:BSD-3-Clause
+// copyright-holders:Olivier Galibert, Aaron Giles
+/***************************************************************************
+
+ parameters.c
+
+ Per-game parameters handling.
+
+***************************************************************************/
+
+#include "emu.h"
+
+parameters_manager::parameters_manager(running_machine &machine)
+ : m_machine(machine)
+{
+}
+
+astring parameters_manager::lookup(astring tag) const
+{
+ return m_parameters.find(tag);
+}
+
+void parameters_manager::add(astring tag, astring value)
+{
+ m_parameters.add(tag, value);
+}
+
diff --git a/src/emu/parameters.h b/src/emu/parameters.h
new file mode 100644
index 00000000000..03c41386769
--- /dev/null
+++ b/src/emu/parameters.h
@@ -0,0 +1,48 @@
+// license:BSD-3-Clause
+// copyright-holders:Olivier Galibert,Aaron Giles
+/***************************************************************************
+
+ parameters.h
+
+ Per-game parameters handling.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __EMU_H__
+#error Dont include this file directly; include emu.h instead.
+#endif
+
+#ifndef __PARAMETERS_H__
+#define __PARAMETERS_H__
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> parameters_manager
+
+class parameters_manager
+{
+ DISABLE_COPYING(parameters_manager);
+
+public:
+ // construction/destruction
+ parameters_manager(running_machine &machine);
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+ astring lookup(astring tag) const;
+
+ // setters
+ void add(astring tag, astring value);
+
+private:
+ // internal state
+ running_machine & m_machine; // reference to owning machine
+ tagmap_t<astring> m_parameters;
+};
+
+#endif // __INPTPORT_H__ */
diff --git a/src/emu/romload.c b/src/emu/romload.c
index 279a3755b8f..f7c59bf2a5f 100644
--- a/src/emu/romload.c
+++ b/src/emu/romload.c
@@ -171,6 +171,8 @@ int set_disk_handle(running_machine &machine, const char *region, const char *fu
const rom_entry *rom_first_region(const device_t &device)
{
const rom_entry *romp = device.rom_region();
+ while (romp && ROMENTRY_ISPARAMETER(romp))
+ romp++;
return (romp != NULL && !ROMENTRY_ISEND(romp)) ? romp : NULL;
}
@@ -185,6 +187,8 @@ const rom_entry *rom_next_region(const rom_entry *romp)
romp++;
while (!ROMENTRY_ISREGIONEND(romp))
romp++;
+ while (ROMENTRY_ISPARAMETER(romp))
+ romp++;
return ROMENTRY_ISEND(romp) ? NULL : romp;
}
@@ -218,6 +222,34 @@ const rom_entry *rom_next_file(const rom_entry *romp)
/*-------------------------------------------------
+ rom_first_parameter - return pointer to the first
+ per-game parameter
+-------------------------------------------------*/
+
+const rom_entry *rom_first_parameter(const device_t &device)
+{
+ const rom_entry *romp = device.rom_region();
+ while (romp && !ROMENTRY_ISEND(romp) && !ROMENTRY_ISPARAMETER(romp))
+ romp++;
+ return (romp != NULL && !ROMENTRY_ISEND(romp)) ? romp : NULL;
+}
+
+
+/*-------------------------------------------------
+ rom_next_parameter - return pointer to the next
+ per-game parameter
+-------------------------------------------------*/
+
+const rom_entry *rom_next_parameter(const rom_entry *romp)
+{
+ romp++;
+ while (!ROMENTRY_ISREGIONEND(romp) && !ROMENTRY_ISPARAMETER(romp))
+ romp++;
+ return ROMENTRY_ISEND(romp) ? NULL : romp;
+}
+
+
+/*-------------------------------------------------
rom_region_name - return the appropriate name
for a rom region
-------------------------------------------------*/
@@ -229,6 +261,28 @@ astring &rom_region_name(astring &result, const device_t &device, const rom_entr
/*-------------------------------------------------
+ rom_parameter_name - return the appropriate name
+ for a per-game parameter
+-------------------------------------------------*/
+
+astring &rom_parameter_name(astring &result, const device_t &device, const rom_entry *romp)
+{
+ return device.subtag(result, romp->_name);
+}
+
+
+/*-------------------------------------------------
+ rom_parameter_name - return the value for a
+ per-game parameter
+-------------------------------------------------*/
+
+astring rom_parameter_value(const rom_entry *romp)
+{
+ return romp->_hashdata;
+}
+
+
+/*-------------------------------------------------
rom_file_size - return the expected size of a
file given the ROM description
-------------------------------------------------*/
@@ -1454,6 +1508,14 @@ static void process_region_list(romload_private *romdata)
rom_region_name(regiontag, *device, region);
region_post_process(romdata, regiontag, ROMREGION_ISINVERTED(region));
}
+
+ /* and finally register all per-game parameters */
+ for (device_t *device = deviter.first(); device != NULL; device = deviter.next())
+ for (const rom_entry *param = rom_first_parameter(*device); param != NULL; param = rom_next_parameter(param))
+ {
+ rom_parameter_name(regiontag, *device, param);
+ romdata->machine().parameters().add(regiontag, rom_parameter_value(param));
+ }
}
diff --git a/src/emu/romload.h b/src/emu/romload.h
index dbf8f1bce32..290a8ba447b 100644
--- a/src/emu/romload.h
+++ b/src/emu/romload.h
@@ -39,6 +39,7 @@ enum
ROMENTRYTYPE_IGNORE, /* this entry continues loading the previous ROM but throws the data away */
ROMENTRYTYPE_SYSTEM_BIOS, /* this entry specifies a bios */
ROMENTRYTYPE_DEFAULT_BIOS, /* this entry specifies a default bios */
+ ROMENTRYTYPE_PARAMETER, /* this entry specifies a per-game parameter */
ROMENTRYTYPE_COUNT
};
@@ -152,7 +153,8 @@ struct rom_entry
#define ROMENTRY_ISIGNORE(r) (ROMENTRY_GETTYPE(r) == ROMENTRYTYPE_IGNORE)
#define ROMENTRY_ISSYSTEM_BIOS(r) (ROMENTRY_GETTYPE(r) == ROMENTRYTYPE_SYSTEM_BIOS)
#define ROMENTRY_ISDEFAULT_BIOS(r) (ROMENTRY_GETTYPE(r) == ROMENTRYTYPE_DEFAULT_BIOS)
-#define ROMENTRY_ISREGIONEND(r) (ROMENTRY_ISREGION(r) || ROMENTRY_ISEND(r))
+#define ROMENTRY_ISPARAMETER(r) (ROMENTRY_GETTYPE(r) == ROMENTRYTYPE_PARAMETER)
+#define ROMENTRY_ISREGIONEND(r) (ROMENTRY_ISREGION(r) || ROMENTRY_ISPARAMETER(r) || ROMENTRY_ISEND(r))
/* ----- per-region macros ----- */
#define ROMREGION_GETTAG(r) ((r)->_name)
@@ -243,6 +245,9 @@ struct rom_entry
#define ROM_DEFAULT_BIOS(name) { name, NULL, 0, 0, ROMENTRYTYPE_DEFAULT_BIOS },
+/* ----- game parameter macro ----- */
+#define ROM_PARAMETER(tag, value) { tag, value, 0, 0, ROMENTRYTYPE_PARAMETER },
+
/* ----- disk loading macros ----- */
#define DISK_REGION(tag) ROM_REGION(1, tag, ROMREGION_DATATYPEDISK)
#define DISK_IMAGE(name,idx,hash) ROMX_LOAD(name, idx, 0, hash, DISK_READWRITE)
@@ -277,7 +282,7 @@ file_error common_process_file(emu_options &options, const char *location, bool
/* ----- ROM iteration ----- */
/* return pointer to the first ROM region within a source */
-const rom_entry *rom_first_region(const device_t &romp);
+const rom_entry *rom_first_region(const device_t &device);
/* return pointer to the next ROM region within a source */
const rom_entry *rom_next_region(const rom_entry *romp);
@@ -294,6 +299,17 @@ UINT32 rom_file_size(const rom_entry *romp);
/* return the appropriate name for a rom region */
astring &rom_region_name(astring &result, const device_t &device, const rom_entry *romp);
+/* return pointer to the first per-game parameter */
+const rom_entry *rom_first_parameter(const device_t &device);
+
+/* return pointer to the next per-game parameter */
+const rom_entry *rom_next_parameter(const rom_entry *romp);
+
+/* return the appropriate name for a per-game parameter */
+astring &rom_parameter_name(astring &result, const device_t &device, const rom_entry *romp);
+
+/* return the value for a per-game parameter */
+astring rom_parameter_value(const rom_entry *romp);
/* ----- disk handling ----- */
diff --git a/src/emu/video/h63484.c b/src/emu/video/h63484.c
index 6eefec617ee..34a0258974e 100644
--- a/src/emu/video/h63484.c
+++ b/src/emu/video/h63484.c
@@ -2001,6 +2001,8 @@ WRITE8_MEMBER( h63484_device::data_w )
void h63484_device::device_start()
{
m_display_cb.bind_relative_to(*owner());
+
+ register_save_state();
}
//-------------------------------------------------
@@ -2125,3 +2127,64 @@ UINT32 h63484_device::update_screen(screen_device &screen, bitmap_ind16 &bitmap,
}
return 0;
}
+
+void h63484_device::register_save_state()
+{
+ save_item(NAME(m_ar));
+ save_item(NAME(m_vreg));
+ save_item(NAME(m_sr));
+ save_item(NAME(m_fifo));
+ save_item(NAME(m_fifo_ptr));
+ save_item(NAME(m_fifo_r));
+ save_item(NAME(m_fifo_r_ptr));
+ save_item(NAME(m_cr));
+ save_item(NAME(m_pr));
+ save_item(NAME(m_param_ptr));
+ save_item(NAME(m_rwp));
+ save_item(NAME(m_rwp_dn));
+ save_item(NAME(m_org_dpa));
+ save_item(NAME(m_org_dn));
+ save_item(NAME(m_org_dpd));
+ save_item(NAME(m_cl0));
+ save_item(NAME(m_cl1));
+ save_item(NAME(m_ccmp));
+ save_item(NAME(m_mask));
+ save_item(NAME(m_cpx));
+ save_item(NAME(m_cpy));
+ save_item(NAME(m_mwr));
+ save_item(NAME(m_mwr_chr));
+ save_item(NAME(m_sar));
+ save_item(NAME(m_sda));
+ save_item(NAME(m_pram));
+ save_item(NAME(m_dn));
+ save_item(NAME(m_ccr));
+ save_item(NAME(m_omr));
+ save_item(NAME(m_edg));
+ save_item(NAME(m_dcr));
+ save_item(NAME(m_hc));
+ save_item(NAME(m_hds));
+ save_item(NAME(m_hdw));
+ save_item(NAME(m_hws));
+ save_item(NAME(m_hww));
+ save_item(NAME(m_sp));
+ save_item(NAME(m_hsw));
+ save_item(NAME(m_vc));
+ save_item(NAME(m_vws));
+ save_item(NAME(m_vww));
+ save_item(NAME(m_vds));
+ save_item(NAME(m_vsw));
+ save_item(NAME(m_ppy));
+ save_item(NAME(m_pzcy));
+ save_item(NAME(m_ppx));
+ save_item(NAME(m_pzcx));
+ save_item(NAME(m_psx));
+ save_item(NAME(m_pex));
+ save_item(NAME(m_pzx));
+ save_item(NAME(m_psy));
+ save_item(NAME(m_pzy));
+ save_item(NAME(m_pey));
+ save_item(NAME(m_xmin));
+ save_item(NAME(m_ymin));
+ save_item(NAME(m_xmax));
+ save_item(NAME(m_ymax));
+}
diff --git a/src/emu/video/h63484.h b/src/emu/video/h63484.h
index 0e0bccb3848..97429d1dd20 100644
--- a/src/emu/video/h63484.h
+++ b/src/emu/video/h63484.h
@@ -107,6 +107,8 @@ private:
void video_registers_w(int offset);
int translate_command(UINT16 data);
void draw_graphics_line(bitmap_ind16 &bitmap, const rectangle &cliprect, int vs, int y, int layer_n, bool active, bool ins_window);
+
+ void register_save_state();
h63484_display_delegate m_display_cb;
diff --git a/src/lib/util/astring.h b/src/lib/util/astring.h
index 639591e04f2..0851aa0c006 100644
--- a/src/lib/util/astring.h
+++ b/src/lib/util/astring.h
@@ -32,7 +32,7 @@ public:
~astring();
// construction with copy
- astring(const char *string) { init().cpy(string); }
+ astring(const char *string) { init(); if(string) cpy(string); }
astring(const char *string, int length) { init().cpy(string, length); }
astring(const char *str1, const char *str2) { init().cpy(str1).cat(str2); }
astring(const char *str1, const char *str2, const char *str3) { init().cpy(str1).cat(str2).cat(str3); }
diff --git a/src/mame/drivers/hikaru.c b/src/mame/drivers/hikaru.c
index ae393ae13c6..8ab674e2d29 100644
--- a/src/mame/drivers/hikaru.c
+++ b/src/mame/drivers/hikaru.c
@@ -382,7 +382,6 @@ Notes:
#include "emu.h"
#include "cpu/sh4/sh4.h"
#include "machine/naomicrypt.h"
-#include "machine/315-5881_helper.h"
#define CPU_CLOCK (200000000)
/* MD2 MD1 MD0 MD6 MD4 MD3 MD5 MD7 MD8 */
@@ -572,8 +571,8 @@ ROM_START( airtrix )
/* ic65 unpopulated */
/* ic66 unpopulated */
- // 315-5881 security IC key
- _315_5881_KEYFILE("airtrix-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 834-14149 2000 317-0294-COM Hikaru
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "091b02c7" )
ROM_END
@@ -610,8 +609,8 @@ ROM_START( pharrier )
ROM_LOAD32_WORD( "mpr-23560.ic65", 0xe000000, 0x1000000, CRC(24bb7072) SHA1(dad5135c89d292e4a1f96bd0ad28be6a17154be0) )
ROM_LOAD32_WORD( "mpr-23564.ic66", 0xe000002, 0x1000000, CRC(255724b6) SHA1(1b382fad165831de3f2e39352c031146759dfc69) )
- // 315-5881 security IC key
- _315_5881_KEYFILE("pharrier-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 834-14144 2001 317-0297-COM Hikaru
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0912c68a" )
ROM_END
ROM_START( podrace )
@@ -664,7 +663,8 @@ ROM_START( podrace )
ROM_LOAD32_WORD("mpr-23117.ic68s" , 0xf000002, 0x0800000, CRC(9d4d3529) SHA1(66008445629681ebf2f26b3f181d8524a8576d2f))
// current 315-5881 decryption simulation code can't produce valid output data with any of keys
- ROM_REGION( 4, "rom_key", ROMREGION_ERASE00 )
+ // 834-14002 2001 317-0277-COM Hikaru
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0903dad5" )
ROM_END
ROM_START( braveff )
@@ -708,8 +708,7 @@ ROM_START( braveff )
ROM_LOAD32_WORD( "mpr-22022.ic59s", 0xb000000, 0x800000, CRC(abd3d888) SHA1(9654c3a38feab46b4983a602831fb29cccdd0526) )
ROM_LOAD32_WORD( "mpr-22023.ic60s", 0xb000002, 0x800000, CRC(07f00869) SHA1(92282d09d72d3e65a91128e06bb0d4426bb90be5) )
- // 315-5881 not populated
- _315_5881_UNUSED
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0" ) // 315-5881 not populated
ROM_END
ROM_START( sgnascar )
diff --git a/src/mame/drivers/model2.c b/src/mame/drivers/model2.c
index 8d4de7dbe33..10eff60e155 100644
--- a/src/mame/drivers/model2.c
+++ b/src/mame/drivers/model2.c
@@ -2842,6 +2842,9 @@ ROM_START( zeroguna ) /* Zero Gunner (Export), Model 2A */
ROM_LOAD("mpr-20303.32", 0x000000, 0x200000, CRC(c040973f) SHA1(57a496c5dcc1a3931b6e41bf8d41e45d6dac0c31) )
ROM_LOAD("mpr-20304.33", 0x200000, 0x200000, CRC(6decfe83) SHA1(d73adafceff2f1776c93e53bd5677d67f1c2c08f) )
+ // 1997 317-5038-COM Model 2
+ ROM_PARAMETER( ":315_5881:key", "042c0d13" )
+
MODEL2_CPU_BOARD
MODEL2A_VID_BOARD
ROM_END
@@ -2874,6 +2877,9 @@ ROM_START( zerogunaj ) /* Zero Gunner (Japan), Model 2A - Sega game ID# 833-1134
ROM_LOAD("mpr-20303.32", 0x000000, 0x200000, CRC(c040973f) SHA1(57a496c5dcc1a3931b6e41bf8d41e45d6dac0c31) )
ROM_LOAD("mpr-20304.33", 0x200000, 0x200000, CRC(6decfe83) SHA1(d73adafceff2f1776c93e53bd5677d67f1c2c08f) )
+ // 1997 317-5038-COM Model 2
+ ROM_PARAMETER( ":315_5881:key", "042c0d13" )
+
MODEL2_CPU_BOARD
MODEL2A_VID_BOARD
ROM_END
@@ -2905,6 +2911,9 @@ ROM_START( zerogun ) /* Zero Gunner (Export), Model 2B */
ROM_REGION( 0x400000, "scsp", 0 ) // Samples
ROM_LOAD("mpr-20303.32", 0x000000, 0x200000, CRC(c040973f) SHA1(57a496c5dcc1a3931b6e41bf8d41e45d6dac0c31) )
ROM_LOAD("mpr-20304.33", 0x200000, 0x200000, CRC(6decfe83) SHA1(d73adafceff2f1776c93e53bd5677d67f1c2c08f) )
+
+ // 1997 317-5038-COM Model 2
+ ROM_PARAMETER( ":315_5881:key", "042c0d13" )
ROM_END
ROM_START( zerogunj ) /* Zero Gunner (Japan), Model 2B */
@@ -2934,6 +2943,9 @@ ROM_START( zerogunj ) /* Zero Gunner (Japan), Model 2B */
ROM_REGION( 0x400000, "scsp", 0 ) // Samples
ROM_LOAD("mpr-20303.32", 0x000000, 0x200000, CRC(c040973f) SHA1(57a496c5dcc1a3931b6e41bf8d41e45d6dac0c31) )
ROM_LOAD("mpr-20304.33", 0x200000, 0x200000, CRC(6decfe83) SHA1(d73adafceff2f1776c93e53bd5677d67f1c2c08f) )
+
+ // 1997 317-5038-COM Model 2
+ ROM_PARAMETER( ":315_5881:key", "042c0d13" )
ROM_END
ROM_START( gunblade ) /* Gunblade NY Revision A, Model 2B, Sega game ID# 833-12562 GUN BLADE, Sega ROM board ID# 834-12563 */
@@ -3669,6 +3681,9 @@ ROM_START( dynamcop ) /* Dynamite Cop (Export), Model 2A, Sega Game ID# 833-1134
ROM_LOAD("mpr-20814.36", 0x400000, 0x200000, CRC(e8ebc74c) SHA1(731ce721bb9e148f3a9f7fbe569522567a681c4e) )
ROM_LOAD("mpr-20815.37", 0x600000, 0x200000, CRC(1b5aaae4) SHA1(32b4bf6c096fdccdd5d8f1ddb6c27d3389a52234) )
+ // 1998 317-0236-COM Model 2
+ ROM_PARAMETER( ":315_5881:key", "0c2a4a93" )
+
MODEL2_CPU_BOARD
MODEL2A_VID_BOARD
ROM_END
@@ -3717,6 +3732,9 @@ ROM_START( dyndeka2 ) /* Dynamite Deka 2 (Japan), Model 2A */
ROM_LOAD("mpr-20814.36", 0x400000, 0x200000, CRC(e8ebc74c) SHA1(731ce721bb9e148f3a9f7fbe569522567a681c4e) )
ROM_LOAD("mpr-20815.37", 0x600000, 0x200000, CRC(1b5aaae4) SHA1(32b4bf6c096fdccdd5d8f1ddb6c27d3389a52234) )
+ // 1998 317-0236-COM Model 2
+ ROM_PARAMETER( ":315_5881:key", "0c2a4a93" )
+
MODEL2_CPU_BOARD
MODEL2A_VID_BOARD
ROM_END
@@ -3764,6 +3782,9 @@ ROM_START( dynamcopb ) /* Dynamite Cop (Export), Model 2B */
ROM_LOAD("mpr-20813.32", 0x200000, 0x200000, CRC(1908679c) SHA1(32913385f09da2e43af0c4a4612b955527bfe759) )
ROM_LOAD("mpr-20814.36", 0x400000, 0x200000, CRC(e8ebc74c) SHA1(731ce721bb9e148f3a9f7fbe569522567a681c4e) )
ROM_LOAD("mpr-20815.37", 0x600000, 0x200000, CRC(1b5aaae4) SHA1(32b4bf6c096fdccdd5d8f1ddb6c27d3389a52234) )
+
+ // 1998 317-0236-COM Model 2
+ ROM_PARAMETER( ":315_5881:key", "0c2a4a93" )
ROM_END
ROM_START( dyndeka2b ) /* Dynamite Deka 2 (Japan), Model 2B */
@@ -3809,6 +3830,9 @@ ROM_START( dyndeka2b ) /* Dynamite Deka 2 (Japan), Model 2B */
ROM_LOAD("mpr-20813.32", 0x200000, 0x200000, CRC(1908679c) SHA1(32913385f09da2e43af0c4a4612b955527bfe759) )
ROM_LOAD("mpr-20814.36", 0x400000, 0x200000, CRC(e8ebc74c) SHA1(731ce721bb9e148f3a9f7fbe569522567a681c4e) )
ROM_LOAD("mpr-20815.37", 0x600000, 0x200000, CRC(1b5aaae4) SHA1(32b4bf6c096fdccdd5d8f1ddb6c27d3389a52234) )
+
+ // 1998 317-0236-COM Model 2
+ ROM_PARAMETER( ":315_5881:key", "0c2a4a93" )
ROM_END
ROM_START( dynamcopc ) /* Dynamite Cop (USA), Model 2C */
@@ -3854,6 +3878,9 @@ ROM_START( dynamcopc ) /* Dynamite Cop (USA), Model 2C */
ROM_LOAD("mpr-20813.32", 0x200000, 0x200000, CRC(1908679c) SHA1(32913385f09da2e43af0c4a4612b955527bfe759) ) /* Located at position 33 on 2C-CRX rom board */
ROM_LOAD("mpr-20814.36", 0x400000, 0x200000, CRC(e8ebc74c) SHA1(731ce721bb9e148f3a9f7fbe569522567a681c4e) ) /* Located at position 34 on 2C-CRX rom board */
ROM_LOAD("mpr-20815.37", 0x600000, 0x200000, CRC(1b5aaae4) SHA1(32b4bf6c096fdccdd5d8f1ddb6c27d3389a52234) ) /* Located at position 35 on 2C-CRX rom board */
+
+ // 1998 317-0236-COM Model 2
+ ROM_PARAMETER( ":315_5881:key", "0c2a4a93" )
ROM_END
ROM_START( schamp ) /* Sonic Championship, Model 2B - Sega ROM board ID# 834-12786 */
@@ -4396,6 +4423,9 @@ ROM_START( pltkidsa ) /* Pilot Kids, Model 2A */
ROM_LOAD("mpr-21279.sd3", 0x0400000, 0x200000, CRC(3a8dcf68) SHA1(312496b45b699051c8b4dd0e5d94e73fe5f3ad8d) )
ROM_LOAD("mpr-21280.sd4", 0x0600000, 0x200000, CRC(aa548124) SHA1(a94adfe16b5c3236746451c181ccd3e1c27432f4) )
+ // 1998 317-5044-COM Model 2
+ ROM_PARAMETER( ":315_5881:key", "042e2dc1" )
+
MODEL2_CPU_BOARD
MODEL2A_VID_BOARD
ROM_END
@@ -4435,6 +4465,9 @@ ROM_START( pltkids ) /* Pilot Kids Revision A, Model 2B */
ROM_LOAD("mpr-21278.sd2", 0x0200000, 0x200000, CRC(27e18e08) SHA1(254c0ad4d6bd572ff0efc3ea80489e73716a31a7) )
ROM_LOAD("mpr-21279.sd3", 0x0400000, 0x200000, CRC(3a8dcf68) SHA1(312496b45b699051c8b4dd0e5d94e73fe5f3ad8d) )
ROM_LOAD("mpr-21280.sd4", 0x0600000, 0x200000, CRC(aa548124) SHA1(a94adfe16b5c3236746451c181ccd3e1c27432f4) )
+
+ // 1998 317-5044-COM Model 2
+ ROM_PARAMETER( ":315_5881:key", "042e2dc1" )
ROM_END
ROM_START( indy500 ) /* Defaults to Twin (Stand Alone) Cab version. 2 credits to start - Can be set to Deluxe setting in service mode, Sega Game ID# 833-12361, ROM board ID# 834-12362 */
@@ -5968,15 +6001,13 @@ ROM_START( desert ) /* Desert Tank, Model 2 */
ROM_END
DRIVER_INIT_MEMBER(model2_state,genprot)
-{
-
- INT64 key = get_315_5881_key(machine());
+{
+ astring key = parameter(":315_5881:key");
- if (key != -1)
+ if (key)
{
m_maincpu->space(AS_PROGRAM).install_ram(0x01d80000, 0x01d8ffff);
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x01d90000, 0x01d9ffff, read32_delegate(FUNC(model2_state::model2_5881prot_r), this), write32_delegate(FUNC(model2_state::model2_5881prot_w), this));
- m_cryptdevice->set_key(key);
}
else
{
diff --git a/src/mame/drivers/model3.c b/src/mame/drivers/model3.c
index 2b702793727..2c6211ed78c 100644
--- a/src/mame/drivers/model3.c
+++ b/src/mame/drivers/model3.c
@@ -3437,6 +3437,9 @@ ROM_START( vs298 ) /* Step 2.0, Sega ID# 833-13346, ROM board ID# 834-13347 */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0237-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "09234e96" )
ROM_END
ROM_START( vs29815 ) /* Step 1.5, ROM board ID# 834-13495 VS2 VER98 STEP 1.5 */
@@ -3587,6 +3590,9 @@ ROM_START( vs2v991 ) /* Step 2.0 */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0245-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "09222ac8" )
ROM_END
ROM_START( vs299b ) /* Step 2.0 */
@@ -3662,6 +3668,9 @@ ROM_START( vs299b ) /* Step 2.0 */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0245-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "09222ac8" )
ROM_END
ROM_START( vs299a ) /* Step 2.0 */
@@ -3737,6 +3746,9 @@ ROM_START( vs299a ) /* Step 2.0 */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0245-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "09222ac8" )
ROM_END
ROM_START( vs299 ) /* Step 2.0 */
@@ -3812,6 +3824,9 @@ ROM_START( vs299 ) /* Step 2.0 */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0245-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "09222ac8" )
ROM_END
ROM_START( von2 ) /* Step 2.0 */
@@ -3888,6 +3903,9 @@ ROM_START( von2 ) /* Step 2.0 */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0234-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "092a0e97" )
ROM_END
ROM_START( von254g ) /* Step 2.0, Sega game ID# is 833-13789 */
@@ -3964,6 +3982,9 @@ ROM_START( von254g ) /* Step 2.0, Sega game ID# is 833-13789 */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0234-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "092a0e97" )
ROM_END
ROM_START( skichamp ) /* Step 2.0 */
@@ -4108,6 +4129,9 @@ ROM_START( swtrilgy ) /* Step 2.1, Sega game ID# is 833-13586, ROM board ID# 8
ROM_REGION( 0x10000, "ffcpu", 0 ) /* force feedback controller prg */
ROM_LOAD( "epr21119.ic8", 0x00000, 0x10000, CRC(65082b14) SHA1(6c3c192dd6ef3780c6202dd63fc6086328928818) )
+
+ // ???? 317-0241-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "11272a01" )
ROM_END
ROM_START( swtrilgya ) /* Step 2.1, Sega game ID# is 833-13586, ROM board ID# 834-13587 STAR WARS TRILOGY, Security board ID# 837-13588-COM */
@@ -4177,6 +4201,9 @@ ROM_START( swtrilgya ) /* Step 2.1, Sega game ID# is 833-13586, ROM board ID# 8
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0241-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "11272a01" )
ROM_END
ROM_START( dirtdvls ) /* Step 2.1, Sega game ID# is 833-13427, ROM board ID# 834-13528 DRT */
@@ -4238,6 +4265,9 @@ ROM_START( dirtdvls ) /* Step 2.1, Sega game ID# is 833-13427, ROM board ID# 8
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0238-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "09290f17" )
ROM_END
ROM_START( dirtdvlsa ) /* Step 2.1 */
@@ -4299,6 +4329,9 @@ ROM_START( dirtdvlsa ) /* Step 2.1 */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0238-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "09290f17" )
ROM_END
ROM_START( daytona2 ) /* Step 2.1, ROM board ID# 834-13428 DAYTONA USA2, Security board ID# 837-13507-COM */
@@ -4379,6 +4412,9 @@ ROM_START( daytona2 ) /* Step 2.1, ROM board ID# 834-13428 DAYTONA USA2, Secur
ROM_REGION( 0x10000, "drivebd", 0 ) /* drive board ROM */
ROM_LOAD( "epr-20985.bin", 0x000000, 0x010000, CRC(b139481d) SHA1(05fca7db7c8b084c53bd157ba3e8296f1a961a99) )
+
+ // ???? 317-0239-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "09250e16" )
ROM_END
ROM_START( dayto2pe ) /* Step 2.1, Sega game ID# is 833-13610 DAYTONA USA2 SP, ROM board ID# 834-13609 DAYTONA USA2 SP, Security board ID# 837-13645-COM */
@@ -4459,6 +4495,9 @@ ROM_START( dayto2pe ) /* Step 2.1, Sega game ID# is 833-13610 DAYTONA USA2 SP,
ROM_REGION( 0x10000, "drivebd", 0 ) /* drive board ROM */
ROM_LOAD( "epr-20985.bin", 0x000000, 0x010000, CRC(b139481d) SHA1(05fca7db7c8b084c53bd157ba3e8296f1a961a99) )
+
+ // ???? 317-5045-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "0" ) // unknown
ROM_END
ROM_START( srally2 ) /* Step 2.0, Sega game ID# is 833-13373, ROM board ID# 834-13374 SRT TWIN */
@@ -4811,6 +4850,9 @@ ROM_START( fvipers2 ) /* Step 2.0 */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0235-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "09260e96" )
ROM_END
ROM_START( spikeout ) /* Step 2.1 */
@@ -4888,6 +4930,9 @@ ROM_START( spikeout ) /* Step 2.1 */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0240-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "092f2b04" )
ROM_END
ROM_START( spikeofe ) /* Step 2.1, Sega game ID# is 833-13746, ROM board ID# 834-13747 SPK F/E, Security board ID# 837-13726-COM */
@@ -4965,6 +5010,9 @@ ROM_START( spikeofe ) /* Step 2.1, Sega game ID# is 833-13746, ROM board ID# 8
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0247-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "09236fc8" )
ROM_END
ROM_START( eca ) /* Step 2.1, ROM board ID# 834-13946-01 ECA */
@@ -5033,6 +5081,9 @@ ROM_START( eca ) /* Step 2.1, ROM board ID# 834-13946-01 ECA */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0265-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "0923aa91" )
ROM_END
ROM_START( ecax ) /* Step 2.1 */
@@ -5101,6 +5152,9 @@ ROM_START( ecax ) /* Step 2.1 */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0265-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "0923aa91" )
ROM_END
ROM_START( ecap ) /* Step 2.1 - Proto or Location test - No security dongle */
@@ -5172,6 +5226,9 @@ ROM_START( ecap ) /* Step 2.1 - Proto or Location test - No security dongle */
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0265-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "0923aa91" )
ROM_END
ROM_START( magtruck ) /* Step 2.1, Sega game ID# is 833-13601-01 (Export), ROM board ID# 834-13600-01 RCS EXP (Export), Security board ID# 837-13599-COM */
@@ -5228,6 +5285,9 @@ ROM_START( magtruck ) /* Step 2.1, Sega game ID# is 833-13601-01 (Export), ROM
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0243-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "09266e45" )
ROM_END
ROM_START( oceanhun ) /* Step 2.0, Sega game ID# is 833-13571, ROM board ID# 834-13572 THE OCEAN HUNTER, 317-0242-COM security chip (837-13576-COM security board) */
@@ -5296,6 +5356,9 @@ ROM_START( oceanhun ) /* Step 2.0, Sega game ID# is 833-13571, ROM board ID# 8
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0242-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "092b6a01" )
ROM_END
ROM_START( lamachin ) /* Step 2.0, Sega game ID# is 833-13664, ROM board ID# 834-13665 L.A.MACHINEGUNS, 317-0244-COM security chip (837-13666-COM security board) */
@@ -5365,6 +5428,9 @@ ROM_START( lamachin ) /* Step 2.0, Sega game ID# is 833-13664, ROM board ID# 8
ROM_REGION( 0x80000, "scsp2", 0 ) /* second SCSP's RAM */
ROM_FILL( 0x000000, 0x80000, 0 )
+
+ // ???? 317-0244-COM Model 3
+ ROM_PARAMETER( ":315_5881:key", "092a2bc5" )
ROM_END
/* Model 3 sound board emulation */
@@ -5666,13 +5732,12 @@ static void interleave_vroms(running_machine &machine)
DRIVER_INIT_MEMBER(model3_state, genprot)
{
- INT64 key = get_315_5881_key(machine());
+ astring key = parameter(":315_5881:key");
m_maincpu->space(AS_PROGRAM).install_ram(0xf0180000, 0xf019ffff, 0, 0x0e000000);
- if (key != -1)
+ if (key)
{
- m_cryptdevice->set_key(key);
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf01a0000, 0xf01a003f, 0, 0x0e000000, read64_delegate(FUNC(model3_state::model3_5881prot_r), this), write64_delegate(FUNC(model3_state::model3_5881prot_w), this) );
}
else
diff --git a/src/mame/drivers/naomi.c b/src/mame/drivers/naomi.c
index d14354c6438..537941d4797 100644
--- a/src/mame/drivers/naomi.c
+++ b/src/mame/drivers/naomi.c
@@ -1510,7 +1510,6 @@ Sushi Bar
#include "includes/dc.h"
#include "includes/naomi.h"
#include "machine/naomicrypt.h"
-#include "machine/315-5881_helper.h"
#define CPU_CLOCK (200000000)
@@ -2663,7 +2662,7 @@ MACHINE_CONFIG_END
*/
static MACHINE_CONFIG_DERIVED( naomim2, naomi_base )
- MCFG_NAOMI_M2_BOARD_ADD("rom_board", ":315_5881key", "naomibd_eeprom", ":boardid", WRITE8(dc_state, g1_irq))
+ MCFG_NAOMI_M2_BOARD_ADD("rom_board", "naomibd_eeprom", ":boardid", WRITE8(dc_state, g1_irq))
MACHINE_CONFIG_END
/*
@@ -3106,7 +3105,8 @@ ROM_START( cspike )
ROM_LOAD("mpr-23208.ic11", 0x5800000, 0x0800000, CRC(b9494f4b) SHA1(2f35b25edf5210a82d4b67e639eeae11440d065a) )
ROM_LOAD("mpr-23209.ic12s",0x6000000, 0x0800000, CRC(560188c0) SHA1(77f14c9a031c6e5414ffa854d20c40115361d715) )
- _315_5881_KEYFILE("cspike-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0012 2000 317-5060-COM Naomi
+ ROM_PARAMETER( "rom_board:segam2crypt:key", "000e2010" )
ROM_END
/*
@@ -3149,7 +3149,8 @@ ROM_START( capsnk )
ROM_LOAD( "mpr-23509.ic6", 0x5800000, 0x1000000, CRC(281d633d) SHA1(d773be8e95f7bf9212ee1061f3076220d4fce9e0) )
ROM_LOAD( "mpr-23510.ic7", 0x6800000, 0x1000000, CRC(b856fef5) SHA1(0634f86740c438b40286256a0269570d24cb845a) )
- _315_5881_KEYFILE("capsnk-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0011 2000 317-5059-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "00000000" )
ROM_END
// ver 000804
@@ -3167,7 +3168,8 @@ ROM_START( capsnka )
ROM_LOAD( "mpr-23509.ic6", 0x5800000, 0x1000000, CRC(281d633d) SHA1(d773be8e95f7bf9212ee1061f3076220d4fce9e0) )
ROM_LOAD( "mpr-23510.ic7", 0x6800000, 0x1000000, CRC(b856fef5) SHA1(0634f86740c438b40286256a0269570d24cb845a) )
- _315_5881_KEYFILE("capsnk-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0011 2000 317-5059-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "00000000" )
ROM_END
// ver 000802
@@ -3185,7 +3187,8 @@ ROM_START( capsnkb )
ROM_LOAD( "mpr-23509.ic6", 0x5800000, 0x1000000, CRC(281d633d) SHA1(d773be8e95f7bf9212ee1061f3076220d4fce9e0) )
ROM_LOAD( "mpr-23510.ic7", 0x6800000, 0x1000000, CRC(b856fef5) SHA1(0634f86740c438b40286256a0269570d24cb845a) )
- _315_5881_KEYFILE("capsnk-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0011 2000 317-5059-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "00000000" )
ROM_END
/*
@@ -3225,7 +3228,8 @@ ROM_START( csmash )
ROM_LOAD("mpr-23426.ic7", 0x3800000, 0x0800000, CRC(7f91b13f) SHA1(2d534f77291ebfedc011bf0e803a1b9243fb477f) )
ROM_LOAD("mpr-23427.ic8", 0x4000000, 0x0800000, CRC(5851d525) SHA1(1cb1073542d75a3bcc0d363ed31d49bcaf1fd494) )
- _315_5881_KEYFILE("csmash-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0044 2000 317-0289-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08103347" )
ROM_END
ROM_START( csmasho )
@@ -3243,7 +3247,8 @@ ROM_START( csmasho )
ROM_LOAD("mpr-23426.ic7", 0x3800000, 0x0800000, CRC(7f91b13f) SHA1(2d534f77291ebfedc011bf0e803a1b9243fb477f) )
ROM_LOAD("mpr-23427.ic8", 0x4000000, 0x0800000, CRC(5851d525) SHA1(1cb1073542d75a3bcc0d363ed31d49bcaf1fd494) )
- _315_5881_KEYFILE("csmasho-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0044 2000 317-0289-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08103347" )
ROM_END
/*
@@ -3272,7 +3277,8 @@ ROM_START( deathcox )
ROM_LOAD("mpr-23522.ic9", 0x4800000, 0x0800000, CRC(7ae6716e) SHA1(658b794ae6e3898885524582a207faa1076a65ca) )
ROM_LOAD("mpr-23523.ic10",0x5000000, 0x0800000, CRC(c91efb67) SHA1(3d79870551310da7a641858ffec3840714e9cc22) )
- _315_5881_KEYFILE("deathcox-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0016 2000 317-5066-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000b64d0" )
ROM_END
/*
@@ -3337,7 +3343,8 @@ ROM_START( doa2 )
ROM_LOAD("mpr-22119.ic20s",0xa000000, 0x0800000, CRC(d608fa86) SHA1(54c8107cccec8cbb536f13cda5b220b7972190b7) )
ROM_LOAD("mpr-22120.ic21s",0xa800000, 0x0800000, CRC(a30facb4) SHA1(70415ca34095c795297486bce1f956f6a8d4817f) )
- _315_5881_KEYFILE("doa2-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0003 1999 317-5048-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0008ad01" )
// on-cart X76F100 eeprom contents
ROM_REGION( 0x84, "naomibd_eeprom", 0 )
@@ -3408,7 +3415,8 @@ ROM_START( doa2m )
ROM_LOAD("mpr-22119.ic20s",0xa000000, 0x0800000, CRC(d608fa86) SHA1(54c8107cccec8cbb536f13cda5b220b7972190b7) )
ROM_LOAD("mpr-22120.ic21s",0xa800000, 0x0800000, CRC(a30facb4) SHA1(70415ca34095c795297486bce1f956f6a8d4817f) )
- _315_5881_KEYFILE("doa2m-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0003 1999 317-5048-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0008ad01" )
// on-cart X76F100 eeprom contents
ROM_REGION( 0x84, "naomibd_eeprom", 0 )
@@ -3464,7 +3472,8 @@ ROM_START( derbyoc )
ROM_LOAD("mpr-22097.ic13s", 0x6800000, 0x0800000, CRC(f1dedac5) SHA1(9d4499cbafe80dd0b36be617de7994a96e1e9a01) )
ROM_LOAD("mpr-22098.ic14s", 0x7000000, 0x0800000, CRC(f9824d2e) SHA1(f20f8cc2b1bef9077ede1cb874da8f2a335d39de) )
- _315_5881_KEYFILE("derbyoc-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0016 1999 317-0262-JPN Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080fee35" )
ROM_END
ROM_START( derbyocw )
@@ -3481,7 +3490,7 @@ ROM_START( derbyocw )
ROM_LOAD( "mpr-22337.ic6", 0x5800000, 0x1000000, CRC(87ca3a2f) SHA1(2ffc01597107eb60dfa7aa49d51f203b51a44334) )
ROM_LOAD( "mpr-22338.ic7", 0x6800000, 0x1000000, CRC(4bda7303) SHA1(db27d91ef811d741cfdb5c0196e61be722c2f5bd) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
ROM_START( drbyocwc )
@@ -3498,7 +3507,7 @@ ROM_START( drbyocwc )
ROM_LOAD( "mpr-22333.ic6", 0x5800000, 0x1000000, CRC(96f324aa) SHA1(bc41e2097c1841771d786ba9ad1a31df1494a856) )
ROM_LOAD( "mpr-22334.ic7", 0x6800000, 0x1000000, CRC(5389b05a) SHA1(e206e4d82d7b1a59c33043ec0812eb69be08d9b3) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
/*
@@ -3526,7 +3535,7 @@ ROM_START( derbyoc2 )
ROM_LOAD( "mpr-22304.ic10", 0x9800000, 0x1000000, CRC(46c1fb1f) SHA1(6daca76a75df3501f77e473eb065d48804fcc64a) )
ROM_LOAD( "mpr-22305.ic11", 0xa800000, 0x1000000, CRC(027d0e7b) SHA1(e3c874e60cabb6f9ce686696d9055a0c0d5289ae) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
/*
@@ -3605,7 +3614,8 @@ ROM_START( dybbnao )
ROM_LOAD("mpr-21573.ic20s", 0xa000000, 0x0800000, CRC(5d822e63) SHA1(8412980b288531c294d5cf9a6394aa0b9503d7df) )
ROM_LOAD("mpr-21574.ic21s", 0xa800000, 0x0800000, CRC(d794a42c) SHA1(a79c7818c6ec993e718494b1d5407eb270a29abe) )
- _315_5881_KEYFILE("dynabbnao-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0001 1998 317-0246-JPN Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080e6ae1" )
ROM_END
/*
@@ -3668,7 +3678,8 @@ ROM_START( dybb99 )
ROM_LOAD("mpr-22139.ic18s", 0x9000000, 0x0800000, CRC(92faa2ca) SHA1(4953f0219c3ae62de0a89473cb7b9dd30b33fcfb) )
ROM_LOAD("mpr-22140.ic19s", 0x9800000, 0x0800000, CRC(4cb54893) SHA1(a99b39cc3c82c3cf90f794bb8c8ba60638a6f921) )
- _315_5881_KEYFILE("dyb99-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0019 1999 317-0269-JPN Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0804ae71" )
ROM_END
ROM_START( smlg99 )
@@ -3700,7 +3711,8 @@ ROM_START( smlg99 )
ROM_LOAD( "mpr-22057.ic20s", 0xa000000, 0x800000, CRC(a056c109) SHA1(637e80c2d605851265430b0fa771a4ad5233be8a) )
ROM_LOAD( "mpr-22058.ic21s", 0xa800000, 0x800000, CRC(f16edaa0) SHA1(e093f5594df43c592a9acd45002ecc65035c2435) )
- _315_5881_KEYFILE("sml99-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0012 1999 317-0259-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08048a01" )
ROM_END
/*
@@ -3741,7 +3753,8 @@ ROM_START( f355 )
ROM_LOAD("mpr-21900.ic20s", 0xa000000, 0x0800000, CRC(81901130) SHA1(1573b5c4360e29ba1a4b4901af49d5399fa1e635) )
ROM_LOAD("mpr-21901.ic21s", 0xa800000, 0x0800000, CRC(266a3eea) SHA1(795ecc5589a0152b9cf1e03e454ed1ea01501942) )
- _315_5881_KEYFILE("f355-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 834-13842 1999 317-0254-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080e8f84" )
ROM_REGION( 0x10000, "drivebd", 0 ) /* drive board ROM */
ROM_LOAD( "epr-21867.bin", 0x000000, 0x010000, CRC(4f93a2a0) SHA1(875907e7fcfc44850e2c60c12268ac61c742f217) )
@@ -3775,7 +3788,8 @@ ROM_START( f355twin )
ROM_LOAD( "mpr-22846.ic20s", 0xa000000, 0x800000, CRC(d4148f39) SHA1(b6598ce52bcaa42805c581de326c953d27c1b2b4) )
ROM_LOAD( "mpr-22847.ic21s", 0xa800000, 0x800000, CRC(955ad42e) SHA1(e396ca02b5786557434632c4fac56af3a4a9f8ce) )
- _315_5881_KEYFILE("f355twin-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 834-13950 1999 317-0267-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0806efd4" )
ROM_END
// There is also a development cart (171-7885A). Content is the same.
@@ -3807,7 +3821,8 @@ ROM_START( f355twn2 )
ROM_LOAD( "mpr-23397.ic20s", 0xa000000, 0x800000, CRC(28d2caf6) SHA1(67a3bc19abccf7f211c3aae67e751815857bd564) )
ROM_LOAD( "mpr-23398.ic21s", 0xa800000, 0x800000, CRC(ea4d4d2a) SHA1(3dc9c7164516ae7f3b988c088ab819d8fd40d75e) )
- _315_5881_KEYFILE("f355twn2-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0042 2001 317-0287-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "081666c6" )
ROM_END
ROM_START( alpiltdx )
@@ -3828,7 +3843,8 @@ 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) )
- _315_5881_KEYFILE("alpltdx-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 834-????? 1999 317-0251-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08070e41" )
// on-cart X76F100 eeprom contents
ROM_REGION( 0x84, "naomibd_eeprom", 0 )
@@ -3853,7 +3869,8 @@ ROM_START( alpilota )
ROM_LOAD( "mpr-21737.ic10", 0x5000000, 0x800000, CRC(260aaa98) SHA1(d1082587afe9d79f286df8b107a553ee51c27643) )
ROM_LOAD( "mpr-21738.ic11", 0x5800000, 0x800000, CRC(95a592e8) SHA1(862dce467e8805381bab001df68262f1baf3c498) )
- _315_5881_KEYFILE("alpilota-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0005 1999 317-0251-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08070e41" )
ROM_END
ROM_START( hotd2 )
@@ -3887,7 +3904,7 @@ ROM_START( hotd2 )
ROM_LOAD( "mpr-21404.ic19s", 0x9800000, 0x800000, CRC(6cf6e705) SHA1(68d7e9becefe27b556e0c5d7ba00efd2d1fb71ca) )
ROM_LOAD( "mpr-21405.ic20s", 0xa000000, 0x800000, CRC(495e6265) SHA1(57936367fec0000691641525682fb8aefc4e4f56) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
ROM_START( hotd2o )
@@ -3921,7 +3938,7 @@ ROM_START( hotd2o )
ROM_LOAD( "mpr-21404.ic19s", 0x9800000, 0x800000, CRC(6cf6e705) SHA1(68d7e9becefe27b556e0c5d7ba00efd2d1fb71ca) )
ROM_LOAD( "mpr-21405.ic20s", 0xa000000, 0x800000, CRC(495e6265) SHA1(57936367fec0000691641525682fb8aefc4e4f56) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
ROM_START( hotd2p )
@@ -3955,7 +3972,7 @@ ROM_START( hotd2p )
ROM_LOAD( "mpr-21404.ic19s", 0x9800000, 0x800000, CRC(6cf6e705) SHA1(68d7e9becefe27b556e0c5d7ba00efd2d1fb71ca) )
ROM_LOAD( "mpr-21405.ic20s", 0xa000000, 0x800000, CRC(495e6265) SHA1(57936367fec0000691641525682fb8aefc4e4f56) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
/*
@@ -3990,7 +4007,8 @@ ROM_START( ggram2 )
ROM_LOAD("mpr-21830.ic10", 0x5000000, 0x0800000, CRC(e01ceb86) SHA1(dd5703d7712cfc0053bddfff63e78dda372b6ff2) )
ROM_LOAD("mpr-21831.ic11", 0x5800000, 0x0800000, CRC(751848d0) SHA1(9c2267fd3c6f9ea5f2679bb2ca20d511a49b2845) )
- _315_5881_KEYFILE("ggram2-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0007 1999 317-0253-JPN Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08074a61" )
ROM_END
/*
@@ -4078,7 +4096,8 @@ ROM_START( tduno )
ROM_REGION( 0x84, "naomibd_eeprom", 0 )
ROM_LOAD( "x76f100.ic37", 0x000000, 0x000084, CRC(c79251d5) SHA1(3e70bbbb6d28bade7eec7e27d716463045656f98) )
- _315_5881_KEYFILE("tduno-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0008 1999 317-0255-JPN Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08028ea5" )
ROM_END
ROM_START( tduno2 )
@@ -4132,7 +4151,7 @@ ROM_START( mushi2k5 )
ROM_LOAD( "mpr-24281.ic6", 0x5800000, 0x1000000, CRC(39133c32) SHA1(09ea8c1a98ba0fac36e18ae14ed5302feaeb89ca) )
ROM_LOAD( "mpr-24282.ic7", 0x6800000, 0x1000000, CRC(9aa4ad5a) SHA1(2d81f99a579477c5db725f71c51f18afc15abce7) )
- _315_5881_UNUSED_OR_UNKNOWN // or M1?
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown // or M1?
ROM_END
ROM_START( crackndj )
@@ -4152,7 +4171,8 @@ ROM_START( crackndj )
ROM_LOAD( "mpr-23533.ic9", 0x8800000, 0x1000000, CRC(fc909c00) SHA1(9cf22a97ea272c4586f3942aefdb803bd0e6ede7) )
ROM_LOAD( "mpr-23534.ic10", 0x9800000, 0x1000000, CRC(62ed85b6) SHA1(b88336bc6115c92a839981cb0c0d0a67b1f7eda5) )
- _315_5881_KEYFILE("crackndj-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0043 2000 317-0288-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "081c2347" )
ROM_END
ROM_START( crakndj2 )
@@ -4185,7 +4205,8 @@ ROM_START( crakndj2 )
ROM_LOAD( "rom19.ic19s", 0x9800000, 0x800000, CRC(31f816ba) SHA1(354f8271eef20eb131f83fb9641002cfcd31c8cd) )
ROM_LOAD( "rom20.ic20s", 0xa000000, 0x800000, CRC(aabcd580) SHA1(9455e218ab381c7ad5adb2884da39ca7948169d5) )
- _315_5881_KEYFILE("crackndj2-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0068 2001 317-0311-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08428247" )
ROM_END
ROM_START( samba2k )
@@ -4206,7 +4227,8 @@ ROM_START( samba2k )
ROM_LOAD( "mpr-23598.ic10", 0x09800000, 0x1000000, CRC(e06ee3dd) SHA1(21985e45e1ab5e3a79dd52492a582324a1a36d56) )
ROM_LOAD( "mpr-23599.ic11", 0x0a800000, 0x1000000, CRC(1fd2e792) SHA1(6f299e527be529f85d0e8b4ce0e7a06ac0d25fe9) )
- _315_5881_KEYFILE("samba2k-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0047 2000 317-0295-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "081702cf" )
ROM_END
ROM_START( alienfnt )
@@ -4221,7 +4243,8 @@ ROM_START( alienfnt )
ROM_LOAD( "mpr-23584.ic4", 0x3800000, 0x1000000, CRC(8d444756) SHA1(89c480f9ed1239c8ae565c85fa0fd50324264b20) )
ROM_LOAD( "mpr-23585.ic5", 0x4800000, 0x1000000, CRC(883a6482) SHA1(e3145710df793b7fd67f02707904416210a71978) )
- _315_5881_KEYFILE("alienfnt-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0048 2001 317-0293-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08174343" )
ROM_END
ROM_START( alienfnta )
@@ -4236,7 +4259,8 @@ ROM_START( alienfnta )
ROM_LOAD( "mpr-23584.ic4", 0x3800000, 0x1000000, CRC(8d444756) SHA1(89c480f9ed1239c8ae565c85fa0fd50324264b20) )
ROM_LOAD( "mpr-23585.ic5", 0x4800000, 0x1000000, CRC(883a6482) SHA1(e3145710df793b7fd67f02707904416210a71978) )
- _315_5881_KEYFILE("alienfnt-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0048 2001 317-0293-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08174343" )
ROM_END
/*
@@ -4267,7 +4291,8 @@ ROM_START( ggx )
ROM_LOAD("mpr-23354.ic13s",0x6800000, 0x0800000, CRC(cea127f7) SHA1(11f12472ebfc93eb72b764c780e30afd4812dbe9) )
ROM_LOAD("mpr-23355.ic14s",0x7000000, 0x0800000, CRC(e809685f) SHA1(dc052b4eb4fdcfdc22c4807316ce34ee7a0d58a6) )
- _315_5881_KEYFILE("ggx-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0013 2000 317-5063-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "00076110" )
ROM_END
/*
@@ -4312,7 +4337,8 @@ ROM_START( hmgeo )
ROM_LOAD("mpr-23714.ic10",0x5000000, 0x0800000, CRC(da462c44) SHA1(ca450b6c07f939f96eba7b44c45b4e38abd598aa) )
ROM_LOAD("mpr-23715.ic11",0x5800000, 0x0800000, CRC(c750abbd) SHA1(2a5bedc2b21cd3f991c7145ccfd8c7a9e7f647ae) )
- _315_5881_KEYFILE("hmgeo-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // HMG016007 2001 317-5071-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "00038510" )
ROM_END
/*
@@ -4350,7 +4376,8 @@ ROM_START( gwing2 )
ROM_LOAD("mpr-22274.ic4", 0x3800000, 0x1000000, CRC(f8daaaf3) SHA1(8854d3f8e3d55715ede33ee918b641e251f752b4) )
ROM_LOAD("mpr-22275.ic5", 0x4800000, 0x1000000, CRC(61aa1521) SHA1(7d9f5790e72a9151d128ac7887e236526fdf72a0) )
- _315_5881_KEYFILE("gwing2-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0014 2000 317-5064-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000b25d0" )
ROM_END
/*
@@ -4399,7 +4426,8 @@ ROM_START( suchie3 )
ROM_LOAD("mpr-21992.ic13s",0x6800000, 0x0800000, CRC(599a2fb8) SHA1(2a0007064ad2ee1e1a0fda1d5676df4ff19a9f2f) )
ROM_LOAD("mpr-21993.ic14s",0x7000000, 0x0400000, CRC(fb28cf0a) SHA1(d51b1d4514a93074d1f77bd1bc5995739604cf56) )
- _315_5881_KEYFILE("suchie3-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0002 1999 317-5047-JPN Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000368e1" )
ROM_END
/*
@@ -4428,7 +4456,8 @@ ROM_START( shangril )
ROM_LOAD("mpr-22071.ic11", 0x5800000, 0x0800000, CRC(1ab1f1ab) SHA1(bb8fa8d5a681115a82e9598ebe599b106f7aae9d) )
ROM_LOAD("mpr-22072.ic12s",0x6000000, 0x0800000, CRC(cb8d2634) SHA1(03ac8fb3a1acb1f8e32d9325c4da42417752f934) )
- _315_5881_UNUSED_OR_UNKNOWN
+ // 841-0004 1999 317-5050-JPN Naomi seems not used by game
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0")
ROM_END
/*
@@ -4492,7 +4521,8 @@ ROM_START( toyfight )
ROM_LOAD("mpr-22033.ic9", 0x4800000, 0x0800000, CRC(5fe5586e) SHA1(3ff41ae1f81469597684faadd88e62b5e0634352) )
ROM_LOAD("mpr-22034.ic10",0x5000000, 0x0800000, CRC(3aa5ce5e) SHA1(f00a906235e4522d6fc2ac771324114346875314) )
- _315_5881_KEYFILE("toyfight-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0011 1999 317-0257-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0802ca85" )
ROM_END
/* Crazy Taxi */
@@ -4516,7 +4546,8 @@ ROM_START( crzytaxi )
ROM_LOAD( "mpr-21682.ic14s", 0x7000000, 0x800000, CRC(54c0290e) SHA1(6e07ab6e95c29a2aabed0ba1a7af0d7d605e0309) )
ROM_LOAD( "mpr-21683.ic15s", 0x7800000, 0x800000, CRC(ac8a27e0) SHA1(8e71d853a102dd6c164d5326e6d157ccfb8c7b36) )
- _315_5881_KEYFILE("crzytaxi-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0002 1999 317-0248-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080d2f45" )
ROM_END
/* Jambo! Safari */
@@ -4535,7 +4566,8 @@ ROM_START( jambo )
ROM_LOAD( "mpr-22824.ic7", 0x3800000, 0x800000, CRC(cc55304a) SHA1(e548d8de83469e5816c55dbbb00afbb894282fd6) )
ROM_LOAD( "mpr-22825.ic8", 0x4000000, 0x800000, CRC(85bada10) SHA1(b6e15d8f1d6bca12ffa4816ed0393c04ca500fba) )
- _315_5881_KEYFILE("jambo-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0013 1999 317-0264-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080fab95" )
ROM_END
/* 18 Wheeler (deluxe) (Rev A) */
@@ -4566,7 +4598,8 @@ ROM_START( 18wheelr )
ROM_LOAD( "mpr-22182.ic19s", 0x9800000, 0x800000, CRC(c5606c42) SHA1(5871104ff1c7acde0493e13b9a4d0abdf8a40728) )
ROM_LOAD( "mpr-22183.ic20s", 0xa000000, 0x800000, CRC(776af308) SHA1(7d29cb4dce75d34c622549fea7e102868d0da60a) )
- _315_5881_KEYFILE("18wheelr-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0023 2000 317-0273-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0807cf54" )
// 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)
@@ -4607,7 +4640,8 @@ ROM_START( 18wheels )
ROM_LOAD( "mpr-22182.ic19s", 0x9800000, 0x800000, CRC(c5606c42) SHA1(5871104ff1c7acde0493e13b9a4d0abdf8a40728) )
ROM_LOAD( "mpr-22183.ic20s", 0xa000000, 0x800000, CRC(776af308) SHA1(7d29cb4dce75d34c622549fea7e102868d0da60a) )
- _315_5881_KEYFILE("18wheelr-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0023 2000 317-0273-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0807cf54" )
// 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)
@@ -4648,7 +4682,8 @@ ROM_START( 18wheelu )
ROM_LOAD( "mpr-22182.ic19s", 0x9800000, 0x800000, CRC(c5606c42) SHA1(5871104ff1c7acde0493e13b9a4d0abdf8a40728) )
ROM_LOAD( "mpr-22183.ic20s", 0xa000000, 0x800000, CRC(776af308) SHA1(7d29cb4dce75d34c622549fea7e102868d0da60a) )
- _315_5881_KEYFILE("18wheelr-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0023 2000 317-0273-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0807cf54" )
// 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)
@@ -4680,7 +4715,8 @@ ROM_START( marstv )
ROM_LOAD( "mpr-22991.ic14s", 0x7000000, 0x800000, CRC(0c20f313) SHA1(ac335d3015ef348c91319ae0e98b79a60e92f452) )
ROM_LOAD( "mpr-22992.ic15s", 0x7800000, 0x800000, CRC(5eb6c4c6) SHA1(5dc1bced7ebd7d7e01f74d03706ec4a96585628d) )
- _315_5881_KEYFILE("marstv-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0025 1999 317-0274-JPN Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080b8ef5" )
ROM_END
/* Sega Strike Fighter */
@@ -4711,7 +4747,8 @@ ROM_START( sstrkfgt )
ROM_LOAD( "mpr-23320.ic19s", 0x9800000, 0x800000, CRC(5ec75a45) SHA1(696e5d14678c794dec67246507bd580f7e5b5043) )
ROM_LOAD( "mpr-23321.ic20s", 0xa000000, 0x800000, CRC(018627d4) SHA1(2519f39ad046d14f602648fed39bc3719185b55e) )
- _315_5881_KEYFILE("sstrkfgt-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0035 2000 317-0281-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08132303" )
ROM_END
// EPR ROM have different number, possible updated/bugfixed re-release or STD/DLX version, difference with original set is unknown, have "Rev.A" label too
@@ -4742,7 +4779,8 @@ ROM_START( sstrkfgta )
ROM_LOAD( "mpr-23320.ic19s", 0x9800000, 0x800000, CRC(5ec75a45) SHA1(696e5d14678c794dec67246507bd580f7e5b5043) )
ROM_LOAD( "mpr-23321.ic20s", 0xa000000, 0x800000, CRC(018627d4) SHA1(2519f39ad046d14f602648fed39bc3719185b55e) )
- _315_5881_KEYFILE("sstrkfgt-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0035 2000 317-0281-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08132303" )
ROM_END
@@ -4761,7 +4799,8 @@ ROM_START( sgtetris )
ROM_LOAD( "mpr-22914.ic5", 0x2800000, 0x800000, CRC(77844b60) SHA1(65d71febb8a160d00778ac7b53e082253cad9834) )
ROM_LOAD( "mpr-22915.ic6", 0x3000000, 0x800000, CRC(e48148ac) SHA1(c1273353eeaf9bb6b185f133281d7d04271bc895) )
- _315_5881_KEYFILE("sgtetri-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0018 1999 317-0268-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0808ae51" )
ROM_END
/*
@@ -4817,7 +4856,8 @@ ROM_START( slasho )
ROM_LOAD("mpr-23339.ic16s",0x8000000, 0x0800000, CRC(fd8c2736) SHA1(34ae1a4e35b4aac6666719fb4fc0959bd64ff3d6) )
ROM_LOAD("mpr-23340.ic17s",0x8800000, 0x0800000, CRC(001604f8) SHA1(615ec027d383d44d4aadb1175be6320e4139d7d1) )
- _315_5881_KEYFILE("slasho-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0041 2000 317-0286-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "081a66ca" )
ROM_END
@@ -4874,7 +4914,8 @@ ROM_START( pjustic )
ROM_LOAD( "mpr-23546.ic10", 0x9800000, 0x1000000, CRC(85db2248) SHA1(37845c269a2e65ee6181a8e7500c2e7dd9b2e343) )
ROM_LOAD( "mpr-23547.ic11", 0xa800000, 0x1000000, CRC(18b369c7) SHA1(b61cb3fda8cc685865684f7afc7dad0b29d93ca5) )
- _315_5881_KEYFILE("pjustic-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0015 2000 317-5065-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000725d0" )
ROM_END
/*
@@ -4915,7 +4956,8 @@ ROM_START( pstone )
ROM_LOAD("mpr-21595.ic7", 0x3800000, 0x0800000, CRC(7ab218f7) SHA1(c5c022e63f926cce09d49331647cde20e8e42ab3) )
ROM_LOAD("mpr-21596.ic8", 0x4000000, 0x0800000, CRC(f27dbdc5) SHA1(d54717d62897546968de2f049239f68bee49bdd8) )
- _315_5881_KEYFILE("pston-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0001 1999 317-5046-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000e69c1" )
ROM_END
/*
@@ -4957,7 +4999,8 @@ ROM_START( pstone2 )
ROM_LOAD("mpr-23125.ic8", 0x4000000, 0x0800000, CRC(b9938bbc) SHA1(d55d7adecb5a5a4a276a5a17c12808085d980fd9) )
ROM_LOAD("mpr-23126.ic9", 0x4800000, 0x0800000, CRC(fbb0325b) SHA1(21b965519d7508d84344641d43e8af2c3ca29ba4) )
- _315_5881_KEYFILE("pstone2-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0008 2000 317-5054-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000b8dc0" )
ROM_END
@@ -5021,7 +5064,8 @@ ROM_START( otrigger )
ROM_LOAD("mpr-22159.ic18s",0x9000000, 0x0800000, CRC(f8b5e99d) SHA1(bb174a6a80967d0ff05c3a7512e4f0f9c921d130) )
ROM_LOAD("mpr-22160.ic19s",0x9800000, 0x0800000, CRC(579eef4e) SHA1(bfcabd57f623647053afcedcabfbc74e5736819f) )
- _315_5881_KEYFILE("outrigger-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0017 1999 317-0266-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080fea94" )
ROM_END
/*
@@ -5112,7 +5156,8 @@ ROM_START( samba )
ROM_LOAD("mpr-22964.ic15s",0x7800000, 0x0800000, CRC(f581d5a3) SHA1(8cf769f5b0a48951246bb60e9cf58232bcee7bc8) )
ROM_LOAD("mpr-22965.ic16s",0x8000000, 0x0800000, CRC(8f7bfa8a) SHA1(19f137b1552978d232785c4408805b71835585c6) )
- _315_5881_KEYFILE("samba-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0020 1999 317-0270-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080a8b5d" )
ROM_END
// prototype - only works with US BIOS
@@ -5139,7 +5184,8 @@ ROM_START( sambap )
ROM_LOAD("mpr-22964.ic15s",0x7800000, 0x0800000, CRC(f581d5a3) SHA1(8cf769f5b0a48951246bb60e9cf58232bcee7bc8) )
ROM_LOAD("mpr-22965.ic16s",0x8000000, 0x0800000, CRC(8f7bfa8a) SHA1(19f137b1552978d232785c4408805b71835585c6) )
- _315_5881_KEYFILE("samba-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0020 1999 317-0270-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080a8b5d" )
ROM_END
/*
@@ -5170,7 +5216,7 @@ ROM_START( smarinef )
ROM_LOAD("mpr-22218.ic11", 0x5800000, 0x0800000, CRC(f9ca31b8) SHA1(ea3d0f38ca1a46c896c06f038a6362ad3c9f90b2) )
ROM_LOAD("mpr-22219.ic12s", 0x6000000, 0x0800000, CRC(b3b45811) SHA1(045e7236b814f848d4c9767618ddcd4344d880ec) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
// Shootout Pool
@@ -5237,7 +5283,7 @@ ROM_START( oinori )
ROM_LOAD( "mpr-24057.ic4", 0x3800000, 0x1000000, CRC(6dec3518) SHA1(3e65065df22680e2bbf2d3db22da413f347a1abe) )
ROM_LOAD( "mpr-24058.ic5", 0x4800000, 0x1000000, CRC(0eba9049) SHA1(a71ca72aeaf17180cde59d7c7b42c97a1b4259ab) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
/*
@@ -5281,7 +5327,8 @@ ROM_START( spawn )
ROM_LOAD("mpr-22975.ic9", 0x4800000, 0x0800000, CRC(0d3c70d1) SHA1(22920bc5fd1dda760b5cb17482e9181be899bc08) )
ROM_LOAD("mpr-22976.ic10", 0x5000000, 0x0800000, CRC(092d8063) SHA1(14fafd3f4c4f2b37172453d1c815fb9b8f4814f4) )
- _315_5881_KEYFILE("spawn-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0005 1999 317-5051-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "00078d01" )
ROM_END
/*
@@ -5322,7 +5369,7 @@ ROM_START( totd )
ROM_LOAD("mpr-23020.ic20s", 0xa000000, 0x0800000, CRC(b5943007) SHA1(d0e95084aec5e05027c21a6b4a3331408853781b) )
//ic21 not populated
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
/*
@@ -5386,7 +5433,7 @@ ROM_START( virnba )
ROM_LOAD("mpr-22947.ic20s", 0xa000000, 0x0800000, CRC(5e5eb595) SHA1(401d4a11d436988d716bb014b36233f171dc576d) )
ROM_LOAD("mpr-22948.ic21s", 0xa800000, 0x0800000, CRC(1b0de917) SHA1(fd1742ea9bb2f1ce871ee3266171f26634e1c8e7) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
ROM_START( virnbao )
@@ -5417,7 +5464,8 @@ ROM_START( virnbao )
ROM_LOAD("mpr-22947.ic20s", 0xa000000, 0x0800000, CRC(5e5eb595) SHA1(401d4a11d436988d716bb014b36233f171dc576d) )
ROM_LOAD("mpr-22948.ic21s", 0xa800000, 0x0800000, CRC(1b0de917) SHA1(fd1742ea9bb2f1ce871ee3266171f26634e1c8e7) )
- _315_5881_KEYFILE("virnbao-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0021 2000 317-0271-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08068b58" )
ROM_END
ROM_START( virnbap )
@@ -5448,7 +5496,8 @@ ROM_START( virnbap )
ROM_LOAD("mpr-22947.ic20s", 0xa000000, 0x0800000, CRC(5e5eb595) SHA1(401d4a11d436988d716bb014b36233f171dc576d) )
ROM_LOAD("mpr-22948.ic21s", 0xa800000, 0x0800000, CRC(1b0de917) SHA1(fd1742ea9bb2f1ce871ee3266171f26634e1c8e7) )
- _315_5881_KEYFILE("virnbao-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0021 2000 317-0271-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08068b58" )
ROM_END
/*
@@ -5500,7 +5549,8 @@ ROM_START( vs2_2k )
ROM_LOAD("mpr-21922.ic14s",0x7000000, 0x0800000, CRC(a1901e1e) SHA1(2281f91ac696cc14886bcdf4b0685ce2f5bb8117) )
ROM_LOAD("mpr-21923.ic15s",0x7800000, 0x0400000, CRC(d127d9a5) SHA1(78c95357344ea15469b84fa8b1332e76521892cd) )
- _315_5881_KEYFILE("vs2_2k-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0010 1999 317-0258-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08088b08" )
ROM_END
/*
@@ -5544,7 +5594,8 @@ ROM_START( vtennis )
ROM_LOAD("mpr-22925.ic10",0x5000000, 0x0800000, CRC(81057e42) SHA1(d41137ae28c64dbdb50150db8cf25851bc0709c4) )
ROM_LOAD("mpr-22926.ic11",0x5800000, 0x0800000, CRC(57eec89d) SHA1(dd8f9a9155e51ee5260f559449fb0ea245077952) )
- _315_5881_KEYFILE("vtennis-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0015 1999 317-0263-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0803eb15" )
ROM_END
/*
@@ -5569,7 +5620,8 @@ ROM_START( wwfroyal )
ROM_LOAD( "mpr-22268.ic7", 0x6800000, 0x1000000, CRC(536f5eea) SHA1(f1de8624f82595adf75693b604fb026bf3f778ee) )
ROM_LOAD( "mpr-22269.ic8", 0x7800000, 0x1000000, CRC(6c0cf740) SHA1(da10b33a6e54afbe1d7e52801216e7119b0b33b1) )
- _315_5881_KEYFILE("wwfroyal-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0040 2000 317-0285-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "081627c3" )
ROM_END
ROM_START( mushik2e )
@@ -5885,7 +5937,8 @@ ROM_START( zombrvn )
ROM_LOAD("mpr-21725.ic18s",0x9000000, 0x0800000, CRC(2202077b) SHA1(0893a85379f994277083c0bc5b178dd34508f816) )
ROM_LOAD("mpr-21726.ic19s",0x9800000, 0x0800000, CRC(429bf290) SHA1(6733e1bcf100e73ab43273f6feedc187fcaa55d4) )
- _315_5881_KEYFILE("zombrvn-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0003 1999 317-0249-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08012b41" )
ROM_END
ROM_START( gunsur2 )
@@ -5909,7 +5962,8 @@ ROM_START( gunsur2 )
ROM_LOAD( "bhf1ma14.6m", 0xe000000, 0x1000000, CRC(d06c9bd7) SHA1(54668a2fd31059976890da92709c18f308634887) )
ROM_LOAD( "bhf1ma15.6l", 0xf000000, 0x1000000, CRC(db3c396b) SHA1(da0e125d627ce890906ca100081ab0685e11c0ef) )
- _315_5881_KEYFILE("bhf1-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25709801 2001 317-5075-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000680d0" )
ROM_END
ROM_START( gunsur2e )
@@ -5933,7 +5987,8 @@ ROM_START( gunsur2e )
ROM_LOAD( "bhf1ma14.6m", 0xe000000, 0x1000000, CRC(d06c9bd7) SHA1(54668a2fd31059976890da92709c18f308634887) )
ROM_LOAD( "bhf1ma15.6l", 0xf000000, 0x1000000, CRC(db3c396b) SHA1(da0e125d627ce890906ca100081ab0685e11c0ef) )
- _315_5881_KEYFILE("bhf1-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25709801 2001 317-5075-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000680d0" )
ROM_END
ROM_START( wldkicks )
@@ -5954,7 +6009,8 @@ ROM_START( wldkicks )
ROM_LOAD( "wk1ma9.4d", 0x9000000, 0x1000000, CRC(29635a54) SHA1(a3109d0f8f271e2183316846df2a6a819f6a9b20) )
ROM_LOAD( "wk1ma10.4c", 0xa000000, 0x1000000, CRC(e96f312c) SHA1(0a92640277111aef5c6e9dab4218a8ae2196ce61) )
- _315_5881_KEYFILE("wldkicks-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25209801 2000 317-5040-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "052e2901" )
ROM_END
ROM_START( wldkicksa )
@@ -5975,7 +6031,8 @@ ROM_START( wldkicksa )
ROM_LOAD( "wk1ma9.4d", 0x9000000, 0x1000000, CRC(29635a54) SHA1(a3109d0f8f271e2183316846df2a6a819f6a9b20) )
ROM_LOAD( "wk1ma10.4c", 0xa000000, 0x1000000, CRC(e96f312c) SHA1(0a92640277111aef5c6e9dab4218a8ae2196ce61) )
- _315_5881_KEYFILE("wldkicks-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25209801 2000 317-5040-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "052e2901" )
ROM_END
ROM_START( wldkicksb )
@@ -5996,7 +6053,8 @@ ROM_START( wldkicksb )
ROM_LOAD( "wk1ma9.4d", 0x9000000, 0x1000000, CRC(29635a54) SHA1(a3109d0f8f271e2183316846df2a6a819f6a9b20) )
ROM_LOAD( "wk1ma10.4c", 0xa000000, 0x1000000, CRC(e96f312c) SHA1(0a92640277111aef5c6e9dab4218a8ae2196ce61) )
- _315_5881_KEYFILE("wldkicks-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25209801 2000 317-5040-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "052e2901" )
ROM_END
ROM_START( toukon4 )
@@ -6022,7 +6080,8 @@ ROM_START( toukon4 )
ROM_LOAD( "trf1ma14.6m", 0xe000000, 0x1000000, CRC(87cb31a0) SHA1(27aef9ac571a0b5e3a76e4ee22f5bc5d0ae962f2) )
ROM_LOAD( "trf1ma15.6l", 0xf000000, 0x1000000, CRC(42d318c5) SHA1(f9fe82ffbfc51fcb52333f94c55a7092e7124fb4) )
- _315_5881_KEYFILE("tr4a-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25349801 2000 317-5040-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "052e2901" )
ROM_END
ROM_START( ninjaslt )
@@ -6043,7 +6102,8 @@ ROM_START( ninjaslt )
ROM_LOAD( "nja1ma9.4c", 0x9000000, 0x1000000, CRC(8abed815) SHA1(5e1b208d23a17ba743d0507d963be42e7828755f) )
ROM_LOAD( "nja1ma10.4b", 0xa000000, 0x1000000, CRC(f14d2073) SHA1(b4a8cd585794be149b616119df3f75c0fb30e2f0) )
- _315_5881_KEYFILE("nja3-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25469801 2000 317-5068-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000ca510" )
ROM_REGION( 0x20000, "jyu_io", 0 ) // H8/3334-based I/O board ROM, eventually should be separated out
ROM_LOAD( "jyu1_prg0a.ic3", 0x000000, 0x020000, CRC(aec4dbc1) SHA1(bddd4f345baf7f594998a39c09da18b3834f0ac2) )
@@ -6067,7 +6127,8 @@ ROM_START( ninjaslt1 )
ROM_LOAD( "nja1ma9.4c", 0x9000000, 0x1000000, CRC(8abed815) SHA1(5e1b208d23a17ba743d0507d963be42e7828755f) )
ROM_LOAD( "nja1ma10.4b", 0xa000000, 0x1000000, CRC(f14d2073) SHA1(b4a8cd585794be149b616119df3f75c0fb30e2f0) )
- _315_5881_KEYFILE("nja3-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25469801 2000 317-5068-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000ca510" )
ROM_REGION( 0x20000, "jyu_io", 0 ) // H8/3334-based I/O board ROM, eventually should be separated out
ROM_LOAD( "jyu1_prg0a.ic3", 0x000000, 0x020000, CRC(aec4dbc1) SHA1(bddd4f345baf7f594998a39c09da18b3834f0ac2) )
@@ -6091,7 +6152,8 @@ ROM_START( ninjaslt2 )
ROM_LOAD( "nja1ma9.4c", 0x9000000, 0x1000000, CRC(8abed815) SHA1(5e1b208d23a17ba743d0507d963be42e7828755f) )
ROM_LOAD( "nja1ma10.4b", 0xa000000, 0x1000000, CRC(f14d2073) SHA1(b4a8cd585794be149b616119df3f75c0fb30e2f0) )
- _315_5881_KEYFILE("nja3-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25469801 2000 317-5068-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000ca510" )
ROM_REGION( 0x20000, "jyu_io", 0 ) // H8/3334-based I/O board ROM, eventually should be separated out
ROM_LOAD( "jyu1_prg0a.ic3", 0x000000, 0x020000, CRC(aec4dbc1) SHA1(bddd4f345baf7f594998a39c09da18b3834f0ac2) )
@@ -6115,7 +6177,8 @@ ROM_START( ninjaslt4 )
ROM_LOAD( "nja1ma9.4c", 0x9000000, 0x1000000, CRC(8abed815) SHA1(5e1b208d23a17ba743d0507d963be42e7828755f) )
ROM_LOAD( "nja1ma10.4b", 0xa000000, 0x1000000, CRC(f14d2073) SHA1(b4a8cd585794be149b616119df3f75c0fb30e2f0) )
- _315_5881_KEYFILE("nja3-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25469801 2000 317-5068-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000ca510" )
ROM_REGION( 0x20000, "jyu_io", 0 ) // H8/3334-based I/O board ROM, eventually should be separated out
ROM_LOAD( "jyu1_prg0a.ic3", 0x000000, 0x020000, CRC(aec4dbc1) SHA1(bddd4f345baf7f594998a39c09da18b3834f0ac2) )
@@ -6136,7 +6199,8 @@ ROM_START( mazan )
ROM_LOAD( "maz1ma7.4e", 0x7000000, 0x1000000, CRC(6103ad9c) SHA1(e4abbb5867cae6a9bf9067ab3a091ef7b18fa0cd) )
ROM_LOAD( "maz1ma8.4d", 0x8000000, 0x1000000, CRC(d46c9f40) SHA1(45eec7fa3d4261f12438e841254fa75d572331b3) )
- _315_5881_KEYFILE("maz1-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25869812 2002 317-0266-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080fea94" )
ROM_END
ROM_START( mazana )
@@ -6154,7 +6218,8 @@ ROM_START( mazana )
ROM_LOAD( "maz1ma7.4e", 0x7000000, 0x1000000, CRC(6103ad9c) SHA1(e4abbb5867cae6a9bf9067ab3a091ef7b18fa0cd) )
ROM_LOAD( "maz1ma8.4d", 0x8000000, 0x1000000, CRC(d46c9f40) SHA1(45eec7fa3d4261f12438e841254fa75d572331b3) )
- _315_5881_KEYFILE("maz1-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 25869812 2002 317-0266-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080fea94" )
ROM_END
ROM_START( vtenis2c )
@@ -6229,7 +6294,7 @@ ROM_START( wrungp )
ROM_LOAD( "mpr-23723.ic5", 0x4800000, 0x1000000, CRC(651610eb) SHA1(4dfe4f876a5440bd1034f41a4d76e1d6bd3e0e32) )
ROM_LOAD( "mpr-23724.ic6", 0x5800000, 0x1000000, CRC(c633c45a) SHA1(23b45140f965428d33e2424b0574715c0b952d05) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
ROM_START( gundmct )
@@ -6249,7 +6314,8 @@ ROM_START( gundmct )
ROM_LOAD( "mpr-23636.ic9", 0x8800000, 0x1000000, CRC(57199e9f) SHA1(73a6f20ee7b3133ed4c6286e477e2ff9757106bd) )
ROM_LOAD( "mpr-23637.ic10", 0x9800000, 0x1000000, CRC(737b5dff) SHA1(0a405b711ffb096a3e6d52ececed73a5f93ebf02) )
- _315_5881_KEYFILE("gundmct-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0017 2001 317-5070-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000e8010" )
ROM_END
ROM_START( puyoda )
@@ -6279,7 +6345,8 @@ ROM_START( puyoda )
ROM_LOAD( "mpr-22204.ic19s", 0x9800000, 0x800000, CRC(2c5e5140) SHA1(7887fc19459dc85ca78256e0c50c762eea001e51) )
ROM_LOAD( "mpr-22205.ic20s", 0xa000000, 0x800000, CRC(7d523ae5) SHA1(7495082b7e83b6ee8f47660baba4c604d8ba2ff1) )
- _315_5881_KEYFILE("puyoda-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0006 1999 317-5052-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "000acd40" )
ROM_END
ROM_START( zerogu2 )
@@ -6294,7 +6361,8 @@ ROM_START( zerogu2 )
ROM_LOAD( "mpr-23687.ic4", 0x3800000, 0x1000000, CRC(e125439a) SHA1(07e7339f3f53aeb0ebddf7a8ac3eb6d8f3fe9de6) )
ROM_LOAD( "mpr-23688.ic5", 0x4800000, 0x1000000, CRC(38412edf) SHA1(9cae06cf46e134531f47e64deedace449664f69a) )
- _315_5881_KEYFILE("zerogu2-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 841-0020 2001 317-5073-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0007c010" )
ROM_END
ROM_START( inunoos )
@@ -6321,7 +6389,8 @@ ROM_START( inunoos )
ROM_LOAD( "ic15s.bin", 0x7800000, 0x800000, CRC(b85e13ef) SHA1(974f6b8f24efe79d72ea9d7a2cfccf479704243d) )
ROM_LOAD( "ic16s.bin", 0x8000000, 0x800000, CRC(b8493dbe) SHA1(b641417e1bda49341e7ff86340072d74e3330665) )
- _315_5881_KEYFILE("inuoos-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0073 2001 317-0316-JPN Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "094bc3e3" )
ROM_END
ROM_START( ringout )
@@ -6341,7 +6410,8 @@ ROM_START( ringout )
ROM_LOAD( "mpr-21769.ic9", 0x4800000, 0x800000, CRC(6d22d29d) SHA1(382dcd62065437b34fe101144b1c047eb261f047) )
ROM_LOAD( "mpr-21770.ic10", 0x5000000, 0x800000, CRC(c5308e61) SHA1(e51f8026351d5ffbda2a5bed39aeef543366febf) )
- _315_5881_KEYFILE("ringout-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0004 1999 317-0250-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "080b1e40" )
ROM_END
ROM_START( vonot )
@@ -6364,7 +6434,8 @@ ROM_START( vonot )
ROM_LOAD( "mpr-23193.ic12s", 0x6000000, 0x800000, CRC(c86a5b9b) SHA1(4b8dda85003289e1464e12c3abf449bb8df20e3a) )
ROM_LOAD( "mpr-23194.ic13s", 0x6800000, 0x800000, CRC(5adea0bd) SHA1(f8614ba83d5f61556c3db1a1796a02ed2c51ce2a) )
- _315_5881_KEYFILE("vonot-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0028 2000 317-0279-COM Naomi
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "08010715" )
ROM_END
ROM_START( derbyo2k )
@@ -6390,7 +6461,7 @@ ROM_START( derbyo2k )
ROM_LOAD( "mpr-22237.ic15s", 0x7800000, 0x800000, CRC(718dd6bf) SHA1(6b71bb6970b582865f53d26e9579587fce86439e) )
ROM_LOAD( "mpr-22238.ic16s", 0x8000000, 0x800000, CRC(fb3e55da) SHA1(d547ee5b47e6e6fec9e447460300c828fbff8f2e) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
ROM_START( starhrse )
@@ -6404,7 +6475,7 @@ ROM_START( starhrse )
ROM_LOAD( "mpr-23233.ic3", 0x2800000, 0x1000000, CRC(d6451cab) SHA1(6508e27d0370b19df01150da7baf4875479c166a) )
ROM_LOAD( "mpr-23234.ic4", 0x3800000, 0x1000000, CRC(44044c14) SHA1(4934cb8d5f9b4085ffb5ddc711343f488aae4c4d) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
// this dump can't be used as main_eeprom, because that's exactly 0x80 bytes
ROM_REGION(0x84, "some_eeprom", 0)
@@ -6437,7 +6508,7 @@ ROM_START( starhrct )
ROM_LOAD( "ic17s.bin", 0x8800000, 0x800000, CRC(b4c40606) SHA1(4f187dfe44bd89c90b6fa4b90f16222bc0a74d22) )
// .18s chip is not present but is tested for an FF fill (pull-up resistors on the PCB's data bus presumably accomplish this)
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
// this dump can't be used as main_eeprom, because that's exactly 0x80 bytes
ROM_REGION(0x84, "some_eeprom", 0)
@@ -6458,7 +6529,7 @@ ROM_START( starhrcl )
ROM_LOAD( "mpr-23280.ic6", 0x5800000, 0x1000000, CRC(b1c8daa2) SHA1(a05fb374156ea013e35502abccc92f5117c39daa) )
ROM_LOAD( "mpr-23281.ic7", 0x6800000, 0x0800000, CRC(c0378369) SHA1(c728a181eddb01b9f8574669d4550baed559a5a4) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
// this dump can't be used as main_eeprom, because that's exactly 0x80 bytes
ROM_REGION(0x84, "some_eeprom", 0)
@@ -6480,7 +6551,7 @@ ROM_START( starhrsp )
ROM_LOAD( "mpr-24128.ic6", 0x5800000, 0x1000000, CRC(bfdbb853) SHA1(bfbeb6ab634201af68d1427dea4f50163673fc2c) )
ROM_LOAD( "mpr-24129.ic7", 0x6800000, 0x1000000, CRC(c3f0f06a) SHA1(152324f2dbbde5560ae3adb1f9394a273fedbe9c) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
/* prototype cartridges for games released on GD-ROM */
@@ -7727,7 +7798,8 @@ ROM_START( vstrik3c )
ROM_LOAD( "mpr-23661.ic10", 0x9800000, 0x1000000, CRC(7d44dc74) SHA1(cfd6253eab3c1a039629b4873946c9dbc7ed6872) )
ROM_LOAD( "mpr-23662.ic11", 0xa800000, 0x0800000, CRC(d6ef7d68) SHA1(4ee396af6c5caf4c5af6e9ad0e03a7ac2c5039f4) )
- _315_5881_KEYFILE("vstrik2c-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0061 2001 317-0310-COM Naomi 2
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0cee834a" )
ROM_END
ROM_START( vstrik3cb )
@@ -7748,7 +7820,8 @@ ROM_START( vstrik3cb )
ROM_LOAD( "mpr-23661.ic10", 0x9800000, 0x1000000, CRC(7d44dc74) SHA1(cfd6253eab3c1a039629b4873946c9dbc7ed6872) )
ROM_LOAD( "mpr-23662.ic11", 0xa800000, 0x0800000, CRC(d6ef7d68) SHA1(4ee396af6c5caf4c5af6e9ad0e03a7ac2c5039f4) )
- _315_5881_KEYFILE("vstrik3c-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0061 2001 317-0310-COM Naomi 2
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0cee834a" )
ROM_END
ROM_START( wldrider )
@@ -7768,7 +7841,8 @@ ROM_START( wldrider )
ROM_LOAD( "mpr-23619.ic9", 0x8800000, 0x1000000, CRC(a5f4f6af) SHA1(bb89d3f0f5bbaf7c40fa43680c7e51ef93f7ed26) )
ROM_LOAD( "mpr-23620.ic10", 0x9800000, 0x1000000, CRC(67aa15a9) SHA1(42c24cbf7069c27430a71509a872cd1c4224aaeb) )
- _315_5881_KEYFILE("wldridr-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0046 2001 317-0301-COM Naomi 2
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0ce7a703" )
ROM_END
ROM_START( vf4cart )
@@ -7789,7 +7863,8 @@ ROM_START( vf4cart )
ROM_LOAD( "mpr-23783.ic10", 0x9800000, 0x1000000, CRC(c8d4f6f9) SHA1(9e9df605c050b3780d7df34bd5041d30bc084d2d) )
ROM_LOAD( "mpr-23784.ic11", 0xa800000, 0x1000000, CRC(f74f2fee) SHA1(84b07baa6d116727e66ef27e24ba6484c3393891) )
- _315_5881_KEYFILE("vf4cart-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0080 2002 317-0324-COM Naomi 2
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0eef2f96" )
ROM_END
// There is also a development cart (171-7885A) with 20x 64Mb FlashROMs instead of 10x 128Mb MaskROMs. Content is the same.
@@ -7810,7 +7885,7 @@ ROM_START( kingrt66 )
ROM_LOAD("mpr-23816.ic9", 0x08800000, 0x01000000, CRC(bbaf0765) SHA1(3b79a4eff504b2156bea8b86c6cdd8e41e7bf268) )
ROM_LOAD("mpr-23817.ic10", 0x09800000, 0x01000000, CRC(e179cfb6) SHA1(1120036238439f8ac1041150396e4b60e4a243bc) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
ROM_START( soulsurf )
@@ -7842,7 +7917,7 @@ ROM_START( soulsurf )
ROM_LOAD( "ic20s.bin", 0xa000000, 0x800000, CRC(c90b960d) SHA1(66e9f09d1f7f6a991371574a2e095c0e22fb7031) )
ROM_LOAD( "ic21s.bin", 0xa800000, 0x800000, CRC(1477c064) SHA1(87fb8d8a91d6bed70b246a8df88fa77fbf3db443) )
- _315_5881_UNUSED_OR_UNKNOWN
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0") // Unused or unknown
ROM_END
ROM_START( vf4evoct )
@@ -7874,7 +7949,7 @@ ROM_START( vf4evoct )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
- _315_5881_KEYFILE("vf4evoct-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ _NAOMI_M1_KEYFILE( "vf4evoct-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111) )
ROM_END
ROM_START( hopper )
@@ -7910,7 +7985,8 @@ ROM_START( clubkrte )
ROM_LOAD( "mpr-23702.ic10", 0x9800000, 0x1000000, CRC(e302b582) SHA1(787192ed9f9a08541eecc3128855485cad802a42) )
ROM_LOAD( "mpr-23703.ic11", 0xa800000, 0x1000000, CRC(702b8b4a) SHA1(3a8dfde458f341e7db20664382b9fce2b6e5d462) )
- _315_5881_KEYFILE("clubkrte-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0062 2001 317-0313-COM Naomi 2
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0ce7d742" )
ROM_END
ROM_START( clubkrtd )
@@ -7931,7 +8007,8 @@ ROM_START( clubkrtd )
ROM_LOAD( "mpr-23702.ic10", 0x9800000, 0x1000000, CRC(e302b582) SHA1(787192ed9f9a08541eecc3128855485cad802a42) )
ROM_LOAD( "mpr-23703.ic11", 0xa800000, 0x1000000, CRC(702b8b4a) SHA1(3a8dfde458f341e7db20664382b9fce2b6e5d462) )
- _315_5881_KEYFILE("clubkrte-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0062 2001 317-0313-COM Naomi 2
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0ce7d742" )
ROM_END
ROM_START( clubkrtc )
@@ -7952,7 +8029,8 @@ ROM_START( clubkrtc )
ROM_LOAD( "mpr-23702.ic10", 0x9800000, 0x1000000, CRC(e302b582) SHA1(787192ed9f9a08541eecc3128855485cad802a42) )
ROM_LOAD( "mpr-23703.ic11", 0xa800000, 0x1000000, CRC(702b8b4a) SHA1(3a8dfde458f341e7db20664382b9fce2b6e5d462) )
- _315_5881_KEYFILE("clubkrte-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0062 2001 317-0313-COM Naomi 2
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0ce7d742" )
ROM_END
ROM_START( clubkprz )
@@ -7984,7 +8062,8 @@ ROM_START( clubkprz )
ROM_REGION(0x84, "some_eeprom", 0)
ROM_LOAD( "at25010.ic3s", 0x000000, 0x000084, CRC(0142d8be) SHA1(5922b6c47b12b19e1fa7bbe9aae391905038a7ff) )
- _315_5881_KEYFILE("clubkprz-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0062 2001 317-0313-COM Naomi 2
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0ce7d742" )
ROM_END
ROM_START( clubkpzb )
@@ -8012,7 +8091,8 @@ ROM_START( clubkpzb )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
- _315_5881_KEYFILE("clubkprz-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0062 2001 317-0313-COM Naomi 2
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0ce7d742" )
// this dump can't be used as main_eeprom, because that's exactly 0x80 bytes
ROM_REGION(0x84, "some_eeprom", 0)
@@ -8046,7 +8126,8 @@ ROM_START( clubk2k3 )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
- _315_5881_KEYFILE("clubk2k3-key.bin", CRC(11111111) SHA1(1111111111111111111111111111111111111111))
+ // 840-0062 2001 317-0313-COM Naomi 2
+ ROM_PARAMETER( ":rom_board:segam2crypt:key", "0ce7d742" )
ROM_END
// uses the same mask roms data as clubk2k3, but not in 32bit dissected form, EPR doesn't have checksumms for them, so rom test shows all roms as BAD
diff --git a/src/mame/drivers/segajw.c b/src/mame/drivers/segajw.c
index b6b4715d6bf..a382ea585ca 100644
--- a/src/mame/drivers/segajw.c
+++ b/src/mame/drivers/segajw.c
@@ -368,6 +368,12 @@ INPUT_PORTS_END
void segajw_state::machine_start()
{
+ save_item(NAME(m_coin_start_cycles));
+ save_item(NAME(m_hopper_start_cycles));
+ save_item(NAME(m_coin_counter));
+ save_item(NAME(m_coin_lockout));
+ save_item(NAME(m_hopper_ctrl));
+ save_item(NAME(m_lamps));
}
@@ -438,4 +444,4 @@ ROM_START( segajw )
ROM_END
-GAMEL( 1991, segajw, 0, segajw, segajw, driver_device, 0, ROT0, "Sega", "Golden Poker Series \"Joker's Wild\" (Rev. B)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS, layout_segajw ) // TODO: correct title
+GAMEL( 1991, segajw, 0, segajw, segajw, driver_device, 0, ROT0, "Sega", "Golden Poker Series \"Joker's Wild\" (Rev. B)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE, layout_segajw ) // TODO: correct title
diff --git a/src/mame/drivers/stv.c b/src/mame/drivers/stv.c
index fc3291e41c8..0cb390080a5 100644
--- a/src/mame/drivers/stv.c
+++ b/src/mame/drivers/stv.c
@@ -1824,6 +1824,9 @@ ROM_START( astrass )
ROM_LOAD16_WORD_SWAP( "mpr20826.1", 0x1800000, 0x0400000, CRC(bdc4b941) SHA1(c5e8b1b186324c2ccab617915f7bdbfe6897ca9f) ) // good (was .17)
ROM_LOAD16_WORD_SWAP( "mpr20832.8", 0x1c00000, 0x0400000, CRC(af1b0985) SHA1(d7a0e4e0a8b0556915f924bdde8c3d14e5b3423e) ) // good (was .18s)
ROM_LOAD16_WORD_SWAP( "mpr20833.9", 0x2000000, 0x0400000, CRC(cb6af231) SHA1(4a2e5d7c2fd6179c19cdefa84a03f9a34fbb9e70) ) // good (was .19s)
+
+ // 25349801 1998 317-5040-COM ST-V (yes, the 317-5040-COM chip was reused for 3 different games and on both Naomi and ST-V!)
+ ROM_PARAMETER( ":315_5881:key", "052e2901" )
ROM_END
ROM_START( bakubaku )
@@ -1968,6 +1971,9 @@ ROM_START( elandore )
ROM_LOAD16_WORD_SWAP( "mpr21305.6", 0x1400000, 0x0400000, CRC(46cfc2a2) SHA1(8ca26bf8fa5ced040e815c125c13dd06d599e189) ) // good (was .16)
ROM_LOAD16_WORD_SWAP( "mpr21306.1", 0x1800000, 0x0400000, CRC(87a5929c) SHA1(b259341d7b0e1fa98959bf52d23db5c308a8efdd) ) // good (was .17)
ROM_LOAD16_WORD_SWAP( "mpr21308.8", 0x1c00000, 0x0400000, CRC(336ec1a4) SHA1(20d1fce050cf6132d284b91853a4dd5626372ef0) ) // good (was .18s)
+
+ // 1998 317-5043-COM ST-V
+ ROM_PARAMETER( ":315_5881:key", "05226d41" )
ROM_END
ROM_START( ffreveng )
@@ -1981,6 +1987,9 @@ ROM_START( ffreveng )
ROM_LOAD16_WORD_SWAP( "mpr21876.5", 0x1000000, 0x0400000, CRC(bb92a7fc) SHA1(d9e0fab1104a46adeb0a0cfc0d070d4c63a28d55) ) // good (was .15)
ROM_LOAD16_WORD_SWAP( "mpr21877.6", 0x1400000, 0x0400000, CRC(c22a4a75) SHA1(3276bc0628e71b432f21ba9a4f5ff7ccc8769cd9) ) // good (was .16)
ROM_LOAD16_WORD_SWAP( "opr21878.1", 0x1800000, 0x0200000, CRC(2ea4a64d) SHA1(928a973dce5eba0a1628d61ba56a530de990a946) ) // good (was .17)
+
+ // 1998 317-5049-COM ST-V
+ ROM_PARAMETER( ":315_5881:key", "0524ac01" )
ROM_END
/* set system to 1 player to test rom */
@@ -2237,6 +2246,9 @@ ROM_START( rsgun )
ROM_LOAD16_WORD_SWAP( "mpr20960.3", 0x0800000, 0x0400000, CRC(b5ab9053) SHA1(87c5d077eb1219c35fa65b4e11d5b62e826f5236) ) // good (was .13)
ROM_LOAD16_WORD_SWAP( "mpr20961.4", 0x0c00000, 0x0400000, CRC(0e06295c) SHA1(0ec2842622f3e9dc5689abd58aeddc7e5603b97a) ) // good (was .14)
ROM_LOAD16_WORD_SWAP( "mpr20962.5", 0x1000000, 0x0400000, CRC(f1e6c7fc) SHA1(0ba0972f1bc7c56f4e0589d3e363523cea988bb0) ) // good (was .15)
+
+ // 1998 317-5041-COM ST-V
+ ROM_PARAMETER( ":315_5881:key", "05272d01" )
ROM_END
ROM_START( sandor )
@@ -2425,6 +2437,9 @@ ROM_START( sss )
ROM_REGION16_BE( 0x80, "eeprom", 0 ) // preconfigured to 1 player
ROM_LOAD( "sss.nv", 0x0000, 0x0080, CRC(3473b2f3) SHA1(6480b4b321af8ee6e967710e74f2556c17bfca97) )
+
+ // 1998 317-5042-COM ST-V
+ ROM_PARAMETER( ":315_5881:key", "052b6901" )
ROM_END
ROM_START( suikoenb )
@@ -2455,6 +2470,9 @@ ROM_START( twcup98 )
ROM_LOAD16_WORD_SWAP( "mpr20822.3", 0x0800000, 0x0400000, CRC(8b33a5e2) SHA1(d5689ac8aad63509febe9aa4077351be09b2d8d4) ) // ic3 good (was .13)
ROM_LOAD16_WORD_SWAP( "mpr20823.4", 0x0c00000, 0x0400000, CRC(6e6d4e95) SHA1(c387d03ba27580c62ac0bf780915fdf41552df6f) ) // ic4 good (was .14)
ROM_LOAD16_WORD_SWAP( "mpr20824.5", 0x1000000, 0x0400000, CRC(4cf18a25) SHA1(310961a5f114fea8938a3f514dffd5231e910a5a) ) // ic5 good (was .15)
+
+ // 25209801 1998 317-5039-COM ST-V
+ ROM_PARAMETER( ":315_5881:key", "05200913" )
ROM_END
ROM_START( vfkids )
diff --git a/src/mame/machine/315-5881_crypt.c b/src/mame/machine/315-5881_crypt.c
index db2b2311be9..153a4a50011 100644
--- a/src/mame/machine/315-5881_crypt.c
+++ b/src/mame/machine/315-5881_crypt.c
@@ -45,6 +45,14 @@ void sega_315_5881_crypt_device::device_start()
save_item(NAME(line_buffer_pos));
save_item(NAME(line_buffer_size));
+ astring skey = parameter("key");
+ if(skey)
+ key = strtoll(skey.cstr(), 0, 16);
+ else
+ {
+ logerror("%s: Warning: key not provided\n", tag());
+ key = 0;
+ }
}
void sega_315_5881_crypt_device::device_reset()
@@ -112,12 +120,6 @@ void sega_315_5881_crypt_device::set_subkey(UINT16 data)
enc_ready = false;
}
-void sega_315_5881_crypt_device::set_key(UINT32 data)
-{
- key = data;
- enc_ready = false;
-}
-
/***************************************************************************
DECRYPTION EMULATION
diff --git a/src/mame/machine/315-5881_crypt.h b/src/mame/machine/315-5881_crypt.h
index 3fb0f01bde1..7b8b5088362 100644
--- a/src/mame/machine/315-5881_crypt.h
+++ b/src/mame/machine/315-5881_crypt.h
@@ -4,8 +4,6 @@
#ifndef __SEGA315_5881_CRYPT__
#define __SEGA315_5881_CRYPT__
-#include "315-5881_helper.h"
-
typedef device_delegate<UINT16 (UINT32)> sega_m2_read_delegate;
extern const device_type SEGA315_5881_CRYPT;
@@ -25,7 +23,6 @@ public:
void set_addr_low(UINT16 data);
void set_addr_high(UINT16 data);
void set_subkey(UINT16 data);
- void set_key(UINT32 data);
sega_m2_read_delegate m_read;
diff --git a/src/mame/machine/315-5881_helper.c b/src/mame/machine/315-5881_helper.c
deleted file mode 100644
index 70c3ab942ac..00000000000
--- a/src/mame/machine/315-5881_helper.c
+++ /dev/null
@@ -1,183 +0,0 @@
-
-/* Sega 315-5881 support file
-
- This encryption chip was used on various games running on
- ST-V
- Naomi
- Naomi 2
- Hikaru
- Model 2
- Model 3
- (more?)
-
- As the encryption isn't fully understood yet this file holds the current keys, these are subject to change.
- */
-
-
-#include "emu.h"
-#include "315-5881_helper.h"
-
-struct game_keys
-{
- const char *name; /* game driver name */
- const INT64 key; // INT64 so we can use -1 for unknown keys
-
-};
-
-// chip numbers based on Guru's list at
-// http://members.iinet.net.au/~lantra9jp1/gurudumps/sega-security/sega_security.html
-// (todo , complete it )
-
-
-static const struct game_keys keys_table[] =
-{
- // name key gameid # year chip label platform
- { "twcup98", 0x05200913 }, // 25209801 1998 317-5039-COM ST-V
- { "astrass", 0x052e2901 }, // 25349801 1998 317-5040-COM ST-V (yes, the 317-5040-COM chip was reused for 3 different games and on both Naomi and ST-V!)
- { "rsgun", 0x05272d01 }, // 1998 317-5041-COM ST-V
- { "sss", 0x052b6901 }, // 1998 317-5042-COM ST-V
- { "elandore", 0x05226d41 }, // 1998 317-5043-COM ST-V
- { "ffreveng", 0x0524ac01 }, // 1998 317-5049-COM ST-V
-
- { "dybbnao", 0x080e6ae1 }, // 840-0001 1998 317-0246-JPN Naomi
- { "crzytaxi", 0x080d2f45 }, // 840-0002 1999 317-0248-COM Naomi
- { "zombrvn", 0x08012b41 }, // 840-0003 1999 317-0249-COM Naomi
- { "ringout", 0x080b1e40 }, // 840-0004 1999 317-0250-COM Naomi
- { "alpilota", 0x08070e41 }, // 840-0005 1999 317-0251-COM Naomi
- { "alpiltdx", 0x08070e41 }, // 834-????? 1999 317-0251-COM Naomi
- { "ggram2", 0x08074a61 }, // 840-0007 1999 317-0253-JPN Naomi
- { "f355", 0x080e8f84 }, // 834-13842 1999 317-0254-COM Naomi
- { "tduno", 0x08028ea5 }, // 840-0008 1999 317-0255-JPN Naomi
- { "toyfight", 0x0802ca85 }, // 840-0011 1999 317-0257-COM Naomi
- { "vs2_2k", 0x08088b08 }, // 840-0010 1999 317-0258-COM Naomi
- { "smlg99", 0x08048a01 }, // 840-0012 1999 317-0259-COM Naomi
- { "derbyoc", 0x080fee35 }, // 840-0016 1999 317-0262-JPN Naomi
- { "vtennis", 0x0803eb15 }, // 840-0015 1999 317-0263-COM Naomi
- { "jambo", 0x080fab95 }, // 840-0013 1999 317-0264-COM Naomi
- { "mazan", 0x080fea94 }, // 25869812 2002 317-0266-COM Naomi
- { "mazana", 0x080fea94 }, // 25869812 2002 317-0266-COM Naomi
- { "otrigger", 0x080fea94 }, // 840-0017 1999 317-0266-COM Naomi
- { "f355twin", 0x0806efd4 }, // 834-13950 1999 317-0267-COM Naomi
- { "sgtetris", 0x0808ae51 }, // 840-0018 1999 317-0268-COM Naomi
- { "dybb99", 0x0804ae71 }, // 840-0019 1999 317-0269-JPN Naomi
- { "samba", 0x080a8b5d }, // 840-0020 1999 317-0270-COM Naomi
- { "sambap", 0x080a8b5d }, // 840-0020 1999 317-0270-COM Naomi
- { "virnbao", 0x08068b58 }, // 840-0021 2000 317-0271-COM Naomi
- { "virnbap", 0x08068b58 }, // 840-0021 2000 317-0271-COM Naomi
- { "18wheelr", 0x0807cf54 }, // 840-0023 2000 317-0273-COM Naomi
- { "18wheels", 0x0807cf54 }, // 840-0036 2000 317-0273-COM Naomi
- { "18wheelu", 0x0807cf54 }, // 840-0037 2000 317-0273-COM Naomi
- { "marstv", 0x080b8ef5 }, // 840-0025 1999 317-0274-JPN Naomi
- { "vonot", 0x08010715 }, // 840-0028 2000 317-0279-COM Naomi
- { "sstrkfgt", 0x08132303 }, // 840-0035 2000 317-0281-COM Naomi
- { "sstrkfgta", 0x08132303 }, // 840-0035 2000 317-0281-COM Naomi
- { "wwfroyal", 0x081627c3 }, // 840-0040 2000 317-0285-COM Naomi
- { "slasho", 0x081a66ca }, // 840-0041 2000 317-0286-COM Naomi
- { "f355twn2", 0x081666c6 }, // 840-0042 2001 317-0287-COM Naomi
- { "crackndj", 0x081c2347 }, // 840-0043 2000 317-0288-COM Naomi
- { "csmash", 0x08103347 }, // 840-0044 2000 317-0289-COM Naomi
- { "csmasho", 0x08103347 }, // 840-0044 2000 317-0289-COM Naomi
- { "alienfnt", 0x08174343 }, // 840-0048 2001 317-0293-COM Naomi
- { "alienfnta", 0x08174343 }, // 840-0048 2001 317-0293-COM Naomi
- { "samba2k", 0x081702cf }, // 840-0047 2000 317-0295-COM Naomi
- { "wldrider", 0x0ce7a703 }, // 840-0046 2001 317-0301-COM Naomi 2
- { "vstrik3c", 0x0cee834a }, // 840-0061 2001 317-0310-COM Naomi 2
- { "vstrik3cb", 0x0cee834a }, // 840-0061 2001 317-0310-COM Naomi 2
- { "crackdj2", 0x08428247 }, // 840-0068 2001 317-0311-COM Naomi
- { "clubkrtc", 0x0ce7d742 }, // 840-0062 2001 317-0313-COM Naomi 2
- { "clubkrtd", 0x0ce7d742 }, // 840-0062 2001 317-0313-COM Naomi 2
- { "clubkrte", 0x0ce7d742 }, // 840-0062 2001 317-0313-COM Naomi 2
- { "inunoos", 0x094bc3e3 }, // 840-0073 2001 317-0316-JPN Naomi
- { "vf4cart", 0x0eef2f96 }, // 840-0080 2002 317-0324-COM Naomi 2
- { "toukon4", 0x052e2901 }, // 25349801 2000 317-5040-COM Naomi
- { "wldkicks", 0x052e2901 }, // 25209801 2000 317-5040-COM Naomi
- { "wldkicksa", 0x052e2901 }, // 25209801 2000 317-5040-COM Naomi
- { "wldkicksb", 0x052e2901 }, // 25209801 2000 317-5040-COM Naomi
- { "pstone", 0x000e69c1 }, // 841-0001 1999 317-5046-COM Naomi
- { "suchie3", 0x000368e1 }, // 841-0002 1999 317-5047-JPN Naomi
- { "doa2", 0x0008ad01 }, // 841-0003 1999 317-5048-COM Naomi
- { "doa2m", 0x0008ad01 }, // 841-0003 1999 317-5048-COM Naomi
- { "shangril", -1 }, // 841-0004 1999 317-5050-JPN Naomi seems not used by game
- { "spawn", 0x00078d01 }, // 841-0005 1999 317-5051-COM Naomi
- { "puyoda", 0x000acd40 }, // 841-0006 1999 317-5052-COM Naomi
- { "pstone2", 0x000b8dc0 }, // 841-0008 2000 317-5054-COM Naomi
- { "capsnk", 0x00000000 }, // 841-0011 2000 317-5059-COM Naomi
- { "capsnka", 0x00000000 }, // 841-0011 2000 317-5059-COM Naomi
- { "capsnkb", 0x00000000 }, // 841-0011 2000 317-5059-COM Naomi
- { "cspike", 0x000e2010 }, // 841-0012 2000 317-5060-COM Naomi
- { "ggx", 0x00076110 }, // 841-0013 2000 317-5063-COM Naomi
- { "gwing2", 0x000b25d0 }, // 841-0014 2000 317-5064-COM Naomi
- { "pjustic", 0x000725d0 }, // 841-0015 2000 317-5065-COM Naomi
- { "deathcox", 0x000b64d0 }, // 841-0016 2000 317-5066-COM Naomi
- { "ninjaslt", 0x000ca510 }, // 25469801 2000 317-5068-COM Naomi
- { "ninjaslt1", 0x000ca510 }, // 25469801 2000 317-5068-COM Naomi
- { "ninjaslt2", 0x000ca510 }, // 25469801 2000 317-5068-COM Naomi
- { "ninjaslt4", 0x000ca510 }, // 25469801 2000 317-5068-COM Naomi
- { "gundmct", 0x000e8010 }, // 841-0017 2001 317-5070-COM Naomi
- { "hmgeo", 0x00038510 }, // HMG016007 2001 317-5071-COM Naomi
- { "zerogu2", 0x0007c010 }, // 841-0020 2001 317-5073-COM Naomi
- { "gunsur2", 0x000680d0 }, // 25709801 2001 317-5075-COM Naomi
- { "gunsur2e", 0x000680d0 }, // 25709801 2001 317-5075-COM Naomi
-
- { "podrace", 0x0903dad5 }, // 834-14002 2001 317-0277-COM Hikaru
- { "airtrix", 0x091b02c7 }, // 834-14149 2000 317-0294-COM Hikaru
- { "pharrier", 0x0912c68a }, // 834-14144 2001 317-0297-COM Hikaru
-
- { "dynamcop", 0x0c2a4a93 }, // 1998 317-0236-COM Model 2
- { "dyndeka2", 0x0c2a4a93 }, // 1998 317-0236-COM Model 2
- { "dynamcopb", 0x0c2a4a93 }, // 1998 317-0236-COM Model 2
- { "dyndeka2b", 0x0c2a4a93 }, // 1998 317-0236-COM Model 2
- { "dynamcopc", 0x0c2a4a93 }, // 1998 317-0236-COM Model 2
- { "zerogun", 0x042c0d13 }, // 1997 317-5038-COM Model 2
- { "zerogunj", 0x042c0d13 }, // 1997 317-5038-COM Model 2
- { "zeroguna", 0x042c0d13 }, // 1997 317-5038-COM Model 2
- { "zerogunaj", 0x042c0d13 }, // 1997 317-5038-COM Model 2
- { "pltkids", 0x042e2dc1 }, // 1998 317-5044-COM Model 2
- { "pltkidsa", 0x042e2dc1 }, // 1998 317-5044-COM Model 2
-
- { "von2", 0x092a0e97 }, // ???? 317-0234-COM Model 3
- { "von254g", 0x092a0e97 }, // ???? 317-0234-COM Model 3
- { "fvipers2", 0x09260e96 }, // ???? 317-0235-COM Model 3
- { "vs298", 0x09234e96 }, // ???? 317-0237-COM Model 3
- { "dirtdvls", 0x09290f17 }, // ???? 317-0238-COM Model 3
- { "dirtdvlsa", 0x09290f17 }, // ???? 317-0238-COM Model 3
- { "daytona2", 0x09250e16 }, // ???? 317-0239-COM Model 3
- { "spikeout", 0x092f2b04 }, // ???? 317-0240-COM Model 3
- { "swtrilgy", 0x11272a01 }, // ???? 317-0241-COM Model 3
- { "swtrilgya", 0x11272a01 }, // ???? 317-0241-COM Model 3
- { "oceanhun", 0x092b6a01 }, // ???? 317-0242-COM Model 3
- { "magtruck", 0x09266e45 }, // ???? 317-0243-COM Model 3
- { "lamachin", 0x092a2bc5 }, // ???? 317-0244-COM Model 3
- { "vs299", 0x09222ac8 }, // ???? 317-0245-COM Model 3
- { "vs2v991", 0x09222ac8 }, // ???? 317-0245-COM Model 3
- { "vs299b", 0x09222ac8 }, // ???? 317-0245-COM Model 3
- { "vs299a", 0x09222ac8 }, // ???? 317-0245-COM Model 3
- { "spikeofe", 0x09236fc8 }, // ???? 317-0247-COM Model 3
- { "eca", 0x0923aa91 }, // ???? 317-0265-COM Model 3
- { "ecax", 0x0923aa91 }, // ???? 317-0265-COM Model 3
- { "ecap", 0x0923aa91 }, // ???? 317-0265-COM Model 3
- { "dayto2pe", -1 }, // ???? 317-5045-COM Model 3
-
- { NULL, 0 } // end of table
-};
-
-
-INT64 get_315_5881_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;
-}
diff --git a/src/mame/machine/315-5881_helper.h b/src/mame/machine/315-5881_helper.h
deleted file mode 100644
index 3c3ef4b463b..00000000000
--- a/src/mame/machine/315-5881_helper.h
+++ /dev/null
@@ -1,33 +0,0 @@
-
-// use the internal key list, or external files?
-#define USE_315_5881_HELPER 1
-
-INT64 get_315_5881_key(running_machine &machine);
-
-#if USE_315_5881_HELPER
-
-#define _315_5881_KEYFILE(name,hash) \
- /* nothing */
-
-#define _315_5881_UNUSED_OR_UNKNOWN \
- /* nothing */
-
-#define _315_5881_UNUSED \
- /* nothing */
-
-
-#else
-
-#define _315_5881_KEYFILE(name,hash) \
- ROM_REGION( 4, "315_5881key", 0 ) \
- ROM_LOAD( name, 0, 4, hash )
-
-#define _315_5881_UNUSED_OR_UNKNOWN \
- ROM_REGION( 4, "315_5881key", ROMREGION_ERASE00 )
-
-#define _315_5881_UNUSED \
- ROM_REGION( 4, "315_5881key", ROMREGION_ERASE00 )
-
-
-
-#endif \ No newline at end of file
diff --git a/src/mame/machine/naomim2.c b/src/mame/machine/naomim2.c
index 82a83f09156..e52fd5548f5 100644
--- a/src/mame/machine/naomim2.c
+++ b/src/mame/machine/naomim2.c
@@ -108,13 +108,6 @@ naomi_m2_board::naomi_m2_board(const machine_config &mconfig, const char *tag, d
: naomi_board(mconfig, NAOMI_M2_BOARD, "Sega NAOMI M2 Board", tag, owner, clock, "naomi_m2_board", __FILE__),
m_cryptdevice(*this, "segam2crypt")
{
- 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()
@@ -134,13 +127,6 @@ void naomi_m2_board::device_reset()
memset(ram, 0, RAM_SIZE);
rom_cur_address = 0;
-
-#if USE_315_5881_HELPER
- m_cryptdevice->set_key(get_315_5881_key(machine()));
-#else
- const UINT8 *key_data = memregion(key_tag)->base();
- m_cryptdevice->set_key((key_data[0] << 24) | (key_data[1] << 16) | (key_data[2] << 8) | key_data[3]);
-#endif
}
void naomi_m2_board::board_setup_address(UINT32 address, bool is_dma)
diff --git a/src/mame/machine/naomim2.h b/src/mame/machine/naomim2.h
index 9bfd1f9a29c..acbd94fc64d 100644
--- a/src/mame/machine/naomim2.h
+++ b/src/mame/machine/naomim2.h
@@ -5,9 +5,8 @@
#include "315-5881_crypt.h"
-#define MCFG_NAOMI_M2_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _actel_tag, _irq_cb) \
- MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M2_BOARD, _eeprom_tag, _actel_tag, _irq_cb) \
- naomi_m2_board::static_set_tags(*device, _key_tag);
+#define MCFG_NAOMI_M2_BOARD_ADD(_tag, _eeprom_tag, _actel_tag, _irq_cb) \
+ MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M2_BOARD, _eeprom_tag, _actel_tag, _irq_cb)
class naomi_m2_board : public naomi_board
{
@@ -17,7 +16,6 @@ public:
static const int RAM_SIZE = 65536;
UINT8* ram;
- static void static_set_tags(device_t &device, const char *_key_tag);
UINT16 read_callback(UINT32 addr);
protected:
@@ -31,11 +29,6 @@ protected:
virtual void board_write(offs_t offset, UINT16 data);
private:
-
-
- const char *key_tag;
-
-
required_device<sega_315_5881_crypt_device> m_cryptdevice;
};
diff --git a/src/mame/machine/stvprot.c b/src/mame/machine/stvprot.c
index 716f2bfa6ac..4513c9de06d 100644
--- a/src/mame/machine/stvprot.c
+++ b/src/mame/machine/stvprot.c
@@ -83,9 +83,6 @@ WRITE32_MEMBER ( stv_state::common_prot_w )
void stv_state::install_common_protection()
{
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4fffff0, 0x4ffffff, read32_delegate(FUNC(stv_state::common_prot_r), this), write32_delegate(FUNC(stv_state::common_prot_w), this));
-
- INT64 key = get_315_5881_key(machine());
- m_cryptdevice->set_key(key);
}
void stv_state::stv_register_protection_savestates()
diff --git a/src/mame/mame.mak b/src/mame/mame.mak
index 47f401997e7..7bf393a5727 100644
--- a/src/mame/mame.mak
+++ b/src/mame/mame.mak
@@ -1723,7 +1723,6 @@ $(MAMEOBJ)/sega.a: \
$(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)/315-5881_crypt.o \
- $(MACHINE)/315-5881_helper.o \
$(MACHINE)/awboard.o \
$(MACHINE)/mie.o $(MACHINE)/maple-dc.o $(MACHINE)/mapledev.o $(MACHINE)/dc-ctrl.o $(MACHINE)/jvs13551.o \
$(DRIVERS)/triforce.o \
diff --git a/src/mess/drivers/slicer.c b/src/mess/drivers/slicer.c
new file mode 100644
index 00000000000..db0d12cc0ec
--- /dev/null
+++ b/src/mess/drivers/slicer.c
@@ -0,0 +1,140 @@
+// Slicer Computers Slicer 80186 SBC
+// The bios makefile refers to a "exe3bin" utility, this can be substituted with FreeDOS exe2bin and the /l=0xf800 option
+// which will fixup the relocations
+
+#include "emu.h"
+#include "cpu/i86/i186.h"
+#include "machine/wd_fdc.h"
+#include "machine/mc68681.h"
+#include "bus/rs232/rs232.h"
+#include "bus/isa/isa.h"
+#include "bus/scsi/scsi.h"
+
+class slicer_state : public driver_device
+{
+public:
+ slicer_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_fdc(*this, "fdc"),
+ m_sasi(*this, "sasi")
+ {}
+
+ required_device<fd1797_t> m_fdc;
+ required_device<SCSI_PORT_DEVICE> m_sasi;
+
+ DECLARE_WRITE8_MEMBER(sio_out_w);
+ DECLARE_WRITE8_MEMBER(drive_sel_w);
+};
+
+WRITE8_MEMBER(slicer_state::sio_out_w)
+{
+ floppy_image_device *floppy;
+ int state = (data & 0x80) ? 0 : 1;
+ char devname[8];
+
+ for(int i = 0; i < 4; i++)
+ {
+ sprintf(devname, "%d", i);
+ floppy = m_fdc->subdevice<floppy_connector>(devname)->get_device();
+ if(floppy)
+ floppy->mon_w(state);
+ }
+}
+
+WRITE8_MEMBER(slicer_state::drive_sel_w)
+{
+ data &= 1;
+ switch(offset)
+ {
+ case 0:
+ m_sasi->write_sel(data);
+ break;
+ case 1:
+ m_sasi->write_rst(data);
+ break;
+ case 7:
+ m_fdc->dden_w(data);
+ break;
+
+ default:
+ {
+ floppy_image_device *floppy;
+ char devname[8];
+ unsigned int drive = 3 - (offset - 2);
+ if((drive > 3) || !data)
+ break;
+
+ sprintf(devname, "%d", drive);
+ floppy = m_fdc->subdevice<floppy_connector>(devname)->get_device();
+ m_fdc->set_floppy(floppy);
+ break;
+ }
+ }
+}
+
+static ADDRESS_MAP_START( slicer_map, AS_PROGRAM, 16, slicer_state )
+ AM_RANGE(0x00000, 0x3ffff) AM_RAM // fixed 256k for now
+ AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( slicer_io, AS_IO, 16, slicer_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x007f) AM_DEVREADWRITE8("fdc", fd1797_t, read, write, 0x00ff) //PCS0
+ AM_RANGE(0x0080, 0x00ff) AM_DEVREADWRITE8("sc2681", mc68681_device, read, write, 0x00ff) //PCS1
+ AM_RANGE(0x0100, 0x017f) AM_WRITE8(drive_sel_w, 0x00ff) //PCS2
+ // TODO: 0x180 sets ack
+ AM_RANGE(0x0180, 0x0181) AM_DEVREAD8("sasi_data_in", input_buffer_device, read, 0x00ff) AM_DEVWRITE8("sasi_data_out", output_latch_device, write, 0x00ff) //PCS3
+ AM_RANGE(0x0180, 0x0181) AM_DEVREAD8("sasi_ctrl_in", input_buffer_device, read, 0xff00)
+ AM_RANGE(0x0184, 0x0185) AM_DEVREAD8("sasi_data_in", input_buffer_device, read, 0x00ff) AM_DEVWRITE8("sasi_data_out", output_latch_device, write, 0x00ff)
+ AM_RANGE(0x0184, 0x0185) AM_DEVREAD8("sasi_ctrl_in", input_buffer_device, read, 0xff00)
+ADDRESS_MAP_END
+
+static SLOT_INTERFACE_START( slicer_floppies )
+ SLOT_INTERFACE("525dd", FLOPPY_525_DD)
+ SLOT_INTERFACE("8dsdd", FLOPPY_8_DSDD)
+SLOT_INTERFACE_END
+
+static MACHINE_CONFIG_START( slicer, slicer_state )
+ MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz / 2)
+ MCFG_CPU_PROGRAM_MAP(slicer_map)
+ MCFG_CPU_IO_MAP(slicer_io)
+
+ MCFG_MC68681_ADD("sc2681", XTAL_3_6864MHz)
+ MCFG_MC68681_IRQ_CALLBACK(DEVWRITELINE("maincpu", i80186_cpu_device, int0_w))
+ MCFG_MC68681_A_TX_CALLBACK(DEVWRITELINE("rs232_1", rs232_port_device, write_txd))
+ MCFG_MC68681_B_TX_CALLBACK(DEVWRITELINE("rs232_2", rs232_port_device, write_txd))
+ MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(slicer_state, sio_out_w))
+
+ MCFG_RS232_PORT_ADD("rs232_1", default_rs232_devices, "terminal")
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sc2681", mc68681_device, rx_a_w))
+ MCFG_RS232_PORT_ADD("rs232_2", default_rs232_devices, NULL)
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sc2681", mc68681_device, rx_b_w))
+
+ MCFG_FD1797x_ADD("fdc", XTAL_16MHz/2/8)
+ MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE("maincpu", i80186_cpu_device, int1_w))
+ MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("maincpu", i80186_cpu_device, drq0_w))
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", slicer_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", slicer_floppies, NULL, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:2", slicer_floppies, NULL, floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:3", slicer_floppies, NULL, floppy_image_device::default_floppy_formats)
+
+ MCFG_DEVICE_ADD("sasi", SCSI_PORT, 0)
+ MCFG_SCSI_DATA_INPUT_BUFFER("sasi_data_in")
+ MCFG_SCSI_BSY_HANDLER(DEVWRITELINE("sasi_ctrl_in", input_buffer_device, write_bit3))
+ MCFG_SCSI_MSG_HANDLER(DEVWRITELINE("sasi_ctrl_in", input_buffer_device, write_bit4))
+ MCFG_SCSI_CD_HANDLER(DEVWRITELINE("sasi_ctrl_in", input_buffer_device, write_bit5))
+ MCFG_SCSI_REQ_HANDLER(DEVWRITELINE("sasi_ctrl_in", input_buffer_device, write_bit6))
+ MCFG_SCSI_IO_HANDLER(DEVWRITELINE("sasi_ctrl_in", input_buffer_device, write_bit7))
+
+ MCFG_SCSI_OUTPUT_LATCH_ADD("sasi_data_out", "sasi")
+ MCFG_DEVICE_ADD("sasi_data_in", INPUT_BUFFER, 0)
+ MCFG_DEVICE_ADD("sasi_ctrl_in", INPUT_BUFFER, 0)
+MACHINE_CONFIG_END
+
+ROM_START( slicer )
+ ROM_REGION(0x8001, "bios", 0)
+ // built from sources, reset.asm adds an extra byte
+ ROM_LOAD("epbios.bin", 0x0000, 0x8001, CRC(96fe9dd4) SHA1(5fc43454fe7d51f2ae97aef822155dcd28eb7f23))
+ROM_END
+
+COMP( 1983, slicer, 0, 0, slicer, 0, driver_device, 0, "Slicer Computers", "Slicer", GAME_NOT_WORKING | GAME_NO_SOUND)
diff --git a/src/mess/mess.lst b/src/mess/mess.lst
index 63dc3a62701..cd85b6f3fe4 100644
--- a/src/mess/mess.lst
+++ b/src/mess/mess.lst
@@ -771,13 +771,16 @@ europc // 1988 Schneider Euro PC (CGA or Hercules)
compc1 // 1984 Commodore PC-1
pc10iii // 1987 Commodore PC-10 III
pc7000 // 1985 Sharp PC-7000
-pcd // Siemens PC-D
olypeopl // Olympia People PC
sx16 // Sanyo SX-16
mbc16 // Sanyo MBC-16
ataripc3
ssam88s
+// Non-PC msdos
+pcd // Siemens PC-D
+slicer // 1983 Slicer Computers
+
// PC Junior
ibmpcjr // 1984 IBM PC Jr
ibmpcjx // 1985 IBM PC JX
diff --git a/src/mess/mess.mak b/src/mess/mess.mak
index 10f96f0cd16..13ae90f2b22 100644
--- a/src/mess/mess.mak
+++ b/src/mess/mess.mak
@@ -796,6 +796,7 @@ DRVLIBS += \
$(MESSOBJ)/siemens.a \
$(MESSOBJ)/sinclair.a \
$(MESSOBJ)/skeleton.a \
+ $(MESSOBJ)/slicer.a \
$(MESSOBJ)/snk.a \
$(MESSOBJ)/sony.a \
$(MESSOBJ)/sord.a \
@@ -1648,6 +1649,9 @@ $(MESSOBJ)/sinclair.a: \
$(MESSOBJ)/siemens.a: \
$(MESS_DRIVERS)/pcd.o \
+$(MESSOBJ)/slicer.a: \
+ $(MESS_DRIVERS)/slicer.o \
+
$(MESSOBJ)/snk.a: \
$(MESS_DRIVERS)/ng_aes.o \
$(MESS_DRIVERS)/ngp.o $(MESS_VIDEO)/k1ge.o \